测试套接字服务器的最佳做法



我正在使用java开发一个套接字服务器游戏。我想测试服务器是否正常工作(它如何处理收到的消息,以正确的方式处理和响应......),而无需使用游戏客户端(繁重且未完成)。来自客户端的消息可能是原始二进制和加密的。

这种情况是否有框架或测试工具?

在测试客户端服务器系统时,我采取了几个步骤,大多数情况下,我倾向于使用"普通"单元测试框架来处理此类事情,尽管它仅在您已经将代码设计为可单元测试时才有效。我也经常为服务器编写特定的压力测试客户端;这可以创建数千个并发连接并在服务器上执行操作,并检查它是否获得预期的结果。

对于初始服务器测试,

您希望为关键服务器组件(消息解析等)设置一组单元测试,并且希望将这些组件与实际处理网络的代码隔离开来(以便可以在单元测试中对其进行所有测试)。将数据推送到服务器的消息解析器中,并确保它正确解析,并调用正确的内容等。

然后,

您可以使用普通的单元测试框架创建服务器对象的实例(带有合适的模拟),该实例在网络上侦听,然后创建一个简单的客户端,您可以在单元测试中实例化该客户端并测试服务器的各个方面。通常你会发现只有少数东西你实际上必须像这样测试。通常,您希望使用网络以及独立于网络进行测试的连接建立和终止问题(毕竟,无论如何,您都可以从正常的单元测试中调用服务器类上的连接建立和断开连接代码)。

最后,您需要一个自定义客户端,它了解您的协议,并且可以对具有1000个客户端的服务器施加压力 - 这是消除性能和线程问题的最佳方法。

我倾向于从一开始就处理所有这些事情;有关更多详细信息,请参阅此博客文章。

如果你想手动做,我建议使用telnet,或者,如果你使用的是Linux,你可以使用netcat命令nc

如果你想要一些可以自动化的东西,例如单元测试,并且你熟悉Python,我建议使用Twisted:Twisted Example

希望这有帮助

相关内容

最新更新