Testing Environments
Lobby Game
A lobby game is quite useful for testing plugins, as you can just spawn heroes and get them on positions you want, unlike it is in a bot game.
With cheats enabled you can also speed up the whole testing process rapidly by using cheat commands.
Bot Game
Bot games are also useful for testing, as they provide a better idea on how a real game could look like. You can see how the plugin behaves during laning phase. Always remember that in a real game the plugin will face a much different situation than in bot games.
Real Game
If the plugin worked fine in lobby and bot games, you may proceed to a real game. First try a normal and if you are confident you can join a ranked.
Demo Mode
I don't recommend testing stuff in demo mode if the plugin is hero related.
Testing
Cheat Commands
Execute commands in the team chat by pressing ENTER and entering the command.
"-createhero internal hero/unit name/part of it" - spawns a hero/unit on mouse position, add "enemy" to the end of command to spawn an enemy (e.g. "-createhero bane enemy", "-createhero centaur", see List of all internal hero names and List of internal unit names)
"-levelbots amount of gained levels " - levels up all spawned heroes/units, except yours (e.g. "-levelbots 25")
"-givebots internal item name" - gives item to all spawned heroes/units (e.g. "-givebots item_heart", see List of all internal item names)
"-item internal item name" - gives item to your hero (e.g. "-item item_rapier")
"-lvlup amount of gained levels" - levels up your hero (e.g. "-lvlup 10")
Testing Process
Hero Combo
Leave your hero on level 1 (level some active ability) with no items, spawn some enemy, level them up and give them 6 hearts.
Now hold the proper key and see what happens.
If your hero properly casted the one active ability and then attacks/orbwalks on the enemy you may proceed to leveling your hero to level 6.
Level up your ultimate and some other abilities. Give your hero one active item, and test again.
If everything is fine, level your hero to max and give him 6 active items.
If the plugin is coded properly it will handle this even if items aren't common for the hero (e.g. dagon / refresher / diffusal).
Make sure to also test situations like if your hero is far away from enemies or when they are close and if the enemy is in fog and your hero suddenly reveals them
Auto Usage Features
If its ability that gets auto used, make sure to test it with all levels, in different ranges (min/max) and in different situations (e.g. hero comes from fog, hero blinks in, hero gets forcestaffed in etc.)
Testing in different ranges is the key for most auto usages, it will check whether the plugin calculates correct range, it will check if the plugin takes in count the distance/speed of certain spell and so on.
The plugin should also take care of local player order inputs, so you should try how it works when you keep right-clicking on the ground during the auto usage proc.
Other / Utility Features
Testing utility plugins depends on what the utility feature is.
Drawings bound to a hero/unit should disappear once hero goes to fog or dies.
Player inputs should be blocked for utility plugins which use any kind of player/hero orders.
Every plugin should automatically dispose/unload once a game ends. You should try to start 1 lobby game, make some tests, then close it and start another one to see whether there are any exceptions caused by the plugin not being properly disposed on unload.
Lobby Game
A lobby game is quite useful for testing plugins, as you can just spawn heroes and get them on positions you want, unlike it is in a bot game.
With cheats enabled you can also speed up the whole testing process rapidly by using cheat commands.
Bot Game
Bot games are also useful for testing, as they provide a better idea on how a real game could look like. You can see how the plugin behaves during laning phase. Always remember that in a real game the plugin will face a much different situation than in bot games.
Real Game
If the plugin worked fine in lobby and bot games, you may proceed to a real game. First try a normal and if you are confident you can join a ranked.
Demo Mode
I don't recommend testing stuff in demo mode if the plugin is hero related.
Testing
Cheat Commands
Execute commands in the team chat by pressing ENTER and entering the command.
"-createhero internal hero/unit name/part of it" - spawns a hero/unit on mouse position, add "enemy" to the end of command to spawn an enemy (e.g. "-createhero bane enemy", "-createhero centaur", see List of all internal hero names and List of internal unit names)
"-levelbots amount of gained levels " - levels up all spawned heroes/units, except yours (e.g. "-levelbots 25")
"-givebots internal item name" - gives item to all spawned heroes/units (e.g. "-givebots item_heart", see List of all internal item names)
"-item internal item name" - gives item to your hero (e.g. "-item item_rapier")
"-lvlup amount of gained levels" - levels up your hero (e.g. "-lvlup 10")
Testing Process
Hero Combo
Leave your hero on level 1 (level some active ability) with no items, spawn some enemy, level them up and give them 6 hearts.
Now hold the proper key and see what happens.
If your hero properly casted the one active ability and then attacks/orbwalks on the enemy you may proceed to leveling your hero to level 6.
Level up your ultimate and some other abilities. Give your hero one active item, and test again.
If everything is fine, level your hero to max and give him 6 active items.
If the plugin is coded properly it will handle this even if items aren't common for the hero (e.g. dagon / refresher / diffusal).
Make sure to also test situations like if your hero is far away from enemies or when they are close and if the enemy is in fog and your hero suddenly reveals them
Auto Usage Features
If its ability that gets auto used, make sure to test it with all levels, in different ranges (min/max) and in different situations (e.g. hero comes from fog, hero blinks in, hero gets forcestaffed in etc.)
Testing in different ranges is the key for most auto usages, it will check whether the plugin calculates correct range, it will check if the plugin takes in count the distance/speed of certain spell and so on.
The plugin should also take care of local player order inputs, so you should try how it works when you keep right-clicking on the ground during the auto usage proc.
Other / Utility Features
Testing utility plugins depends on what the utility feature is.
Drawings bound to a hero/unit should disappear once hero goes to fog or dies.
Player inputs should be blocked for utility plugins which use any kind of player/hero orders.
Every plugin should automatically dispose/unload once a game ends. You should try to start 1 lobby game, make some tests, then close it and start another one to see whether there are any exceptions caused by the plugin not being properly disposed on unload.