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

时间:2013-11-12 09:04:07

标签: sockets testing socketserver

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

是否有针对此案例的框架或测试工具?

2 个答案:

答案 0 :(得分:2)

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

对于初始服务器测试,您希望为关键服务器组件准备一组单元测试;消息解析等,并且您希望从实际处理网络的代码中隔离这些组件(以便您可以在单元测试中对其进行全部测试)。将数据推入服务器的消息解析器,并确保它正确解析,并调用正确的东西等。

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

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

我倾向于从一开始就研究所有这些事情;有关详细信息,请参阅this blog post

答案 1 :(得分:1)

如果您想手动完成,我建议使用telnet,或者,如果您使用的是Linux,则可以使用netcat命令nc

如果您想要可自动化的内容,例如单元测试,你熟悉Python,我建议使用Twisted:Twisted Examples

希望这有帮助