2

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

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

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

4

3 回答 3

2

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

于 2009-07-28T17:56:27.070 回答
1

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

  • 数据太多
  • 太多联系
  • 打开和关闭
  • 其他极端案例

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

作为起点,我推荐JMeter

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

还可以查看JUnitPerf网站。

于 2009-07-28T18:30:16.613 回答
0

Richard Steven 的 Unix Network Programming ( http://www.kohala.com/start/unpv12e.html ) 或 TCP/IP Illustrated (same site) 对于任何进行低级套接字编程的人来说都是必须的。一切都在 C 中,但概念是可移植的。

于 2009-07-28T18:02:43.237 回答