网络连接的测试/故障排除工具?

时间:2009-07-28 17:54:15

标签: java unit-testing testing sockets nio

我正在为项目的服务器端创建一个非阻塞IO系统。实际的实现并不重要(如果你关心它是Java NIO),但是在编程套接字通信时你必须密切注意的微妙问题让我感到非常害怕。我的知识在很多方面都缺乏,所以我甚至无法想到所有方法可能“出错”......“半封闭”的连接,连接发送的数据比我预期的要多,等等。

我正在寻找的是某种客户端工具,通过自动化连接和测试特定行为的过程来帮助测试我的系统的健壮性。某种具有不同种类选项的工具,用于模拟连接可以打开,使用和关闭的不同方式。也许这会让我一次发送一兆字节的乱码,或者尝试做一些“没有意义”的事情,这些都是为了让我能够测试可能导致我的代码破坏的随机,罕见的东西,或者无法识别“断开”的连接并关闭它。

是否存在某种工具?另一种方法可能是一些Java代码/单元测试。有什么想法吗?非常感谢!

3 个答案:

答案 0 :(得分:2)

我建议看netcat。它为您提供了一种非常灵活的方式,可以将各种数据推送到正在运行的服务器。

答案 1 :(得分:1)

您可以利用Java中的知识编写模拟随机客户端行为的简单单元测试:

  • 数据太多
  • 连接太多
  • 打开和关闭
  • 其他角落案件

纯Java测试,没有本机代码和其他棘手的配置是一个巨大的胜利。

作为起点,我建议JMeter

  

Apache JMeter可用于测试静态和动态资源(文件,Servlet,Perl脚本,Java对象,数据库和查询,FTP服务器等)的性能。它可用于模拟服务器,网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。您可以使用它来对性能进行图形分析,或者在大量并发负载下测试服务器/脚本/对象的行为。

另请查看JUnitPerf网站。

答案 2 :(得分:0)

Richard Steven的Unix网络编程(http://www.kohala.com/start/unpv12e.html)或TCP / IP Illustrated(同一站点)对于进行低级套接字编程的人来说是必须的。一切都在C中,但概念是可移动的。