繁体   English   中英

如何使用自定义协议测试驱动网络应用程序?

[英]How to test drive a networking application with custom protocol?

我目前正在为学校项目开发两个Java网络应用程序。 一个通过TCP,另一个通过UDP。 在这两种方法中,我都必须实现简单的自定义协议。

即使我在努力工作, 也无法找到一种方法来正确测试此类应用程序,或者无法通过测试优先开发更好地进行开发

如果我有一个客户并且想要进行真正的测试而又不花钱,那么我必须以模拟的行为来实现服务器,在像这样的简单应用程序的情况下,这几乎就是整个项目 我了解,当事情很大时,比编写几行Perl脚本进行测试可能确实有帮助。

现在,我正在同时开发服务器和客户端,以便至少可以手动进行测试,但这似乎并不是一种干净的开发方式。 唯一有帮助的是通过记录器建立连接隧道,以便我可以查看通过的所有数据(使用IDEA的TunneliJ插件 )。

用自定义协议TDD网络应用程序的最佳方法是什么? 我是否应该对所有内容都进行存根处理并妥善处理?

将协议与网络层分开。 一旦您可以自己输入数据,而无需通过网络堆栈,测试协议的逻辑将变得更加容易。 即使您没有使用Python,我还是建议您看一下Twisted框架的结构。 这是如何对网络应用程序进行单元测试的一个很好的示例。

我们不久前遇到了同样的问题。 我们认为,让两名开发人员来完成任务更简单:一个负责编写服务器,另一个负责编写客户端。 我们开始在同一办公室工作,以便我们可以更轻松地进行编码,测试,修改和重复。

总而言之,我认为这是对我们最好的解决方案。 它使我们能够在不理想的条件下实际测试程序。 例如,我们的互联网出现了几次故障,程序崩溃了,因此我们进行了修复。 它对我们来说效果很好,但是如果您是唯一的开发人员,那么它可能不是您的解决方案。

无论您做什么,在编写自定义协议时,我都会签出Wireshark来监视您的网络流量,以确保所有数据包都是正确的。

在我的应用中,我有这样的代码

    m_socket.receive(packet);

    doSomething(packet);

我模拟了接收操作,因此可以执行doSomething()需要做的所有事情。

这在哪里分解为您? 在这里,您可以进行真正的单元测试,以确保代码行为正确,还可以模拟套接字发送,并根据协议期望发送期望的内容。

当然,我们实际上并没有测试协议另一端是否满意。 那就是集成测试。 我总是渴望尽快接触IT。 当您与“另一端”互动时,您会发现有趣的东西。

您处于控制两端的好运位置,在那个位置,我可能会花一些时间来创建合适的,可控制的测试工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM