如何用 C 语言集成测试网络应用程序

jov*_*eha 4 c integration-testing unit-testing

当涉及到网络代码时,我从未设法以任何优雅或自动化的方式从单元测试转移到集成测试。

所以我的问题是:给定一个简单的基于单线程客户端/服务器的网络应用程序,您将如何将客户端和服务器集成到您当前最喜欢的测试套件中(我目前使用check)。

我当然愿意改变单元测试套件来实现我的目标。

编辑:虽然我很欣赏这些答案,但我更多的是寻找一些将集成测试集成到我的单元测试框架中的神奇方法(如果可能的话)。就像fork () 或其他东西可以应用而不会产生太多副作用。

Joe*_*hon 5

另一种方法是使用虚拟服务器和虚拟客户端来模拟两端,它们仅发送您想要测试的消息并验证响应是否符合预期。这些模拟服务器非常非常愚蠢:它们只需要读/写套接字并将预设数据转储回来。如果易于解析,您可以通过模板化请求中数据的响应来使它们变得更漂亮。

这里的好处是你确切地知道被模拟的项目将要做什么(包括假超时,发送垃圾,任何你想要的)。

使用 Perl 或 Python 套接字库来构建模拟服务器和客户端可能非常容易;如果您使用 Perl,您应该能够使用 CPAN 中非常强大的 Test:: 类来帮助完成实际的“完成这项工作”和报告。