- Make sure you also do some unit testing.
More stuff, maybe :
- Internet conditions simulation. Either basic, for a quick test, or pro-level stuff, with dedicated hardware. Will not replace real-world conditions but I find it always useful.
- Since you're dealing with binary data (most likely), some form of checksum / type-checking / range-checking verification. This mostly applies to debugging things like serialisation / deserialisation and marshaling.
- Some form of binary -> readable text conversion on packets. Usually packets are tightly packed binary streams and virtually unreadable. So, some form of analyzing packet content can be useful if you run into trouble with your packets turning up as garbage.
- Recording packets, game states, inputs, and replay features. Pretty high level, and a lot of work in itself, so you may want to skip that.
Checksum and replay especially useful if you have the intention of running a deterministic lock-step engine.
At a game level :
- A basic versioning system. If your packet / message format isn't backward compatible, you'll end up with garbage data.
- Dependencies check. Making sure whoever connects to your server has all the custom content it needs to being able to play the game. Either the right version, the map data, ect...
- A replay system can also help you catching strange game exploits. And if your game supports replays, then why not