2010-07-21 164 views
2

正如标题说,你会如何测试一个客户机/服务器应用程序,这是写在C/C++,通过在网络协议的会谈?我有点困惑如何做到这一点。我曾考虑制作一些嘲讽,但我从未试过嘲笑,所以我不知道这是否是最好的方法。 我该怎么做?我编写了许多单元测试,但从未试图测试通过网络进行交互的东西。自动化的客户端/服务器应用程序的测试

+0

也许我可以打破单元测试下来,所以对系统的唯一未知的是网络? – mslot 2010-07-21 17:53:26

回答

0

我使用命令图案在单元测试驱动器(客户机)发送测试命令到服务器。这样做的好处是测试在一个地方编码。

用于测试请求超时

实施例:

客户端发送睡眠命令到服务器,然后该请求。请求超时并通过测试用例。

+0

我不知道我是否明白这一点,但你说你有一个单元测试,它发送消息到服务器,然后看看它是否得到正确的答案吗?这听起来像是在我的项目中做事的一个很好的方式。 – mslot 2010-07-22 11:03:34

+0

是的,更准确地说,单元测试向服务器发送两种消息。第一种消息建立测试条件(例如睡眠以触发超时),第二种消息是实际的测试请求。 – 2010-07-22 11:27:27

0

通常你想使用嘲笑来验证从另一侧需要消息每侧反应(例如,当客户端收到从它处理的是正确地响应所述服务器的响应)。

测试网络功能本身,你可以测试在同一台机器上都运行,并可以运行在虚拟机内一个(或两个)。如果您有两个网络适配器,您甚至可以将每个适配器专用于虚拟机,以使网络流量实际上从交换机/路由器中流出,并返回到另一个虚拟机中(当/如果要捕获和验证数据包时尤其有用)。

+0

我没想到虚拟机!感谢你提醒我, – mslot 2010-07-22 11:01:53

0

我有通过环回地址一些客户机/服务器代码,我单元测试。当我必须测试错误条件时,我使用了一些模拟。所以,当我需要触发非常特定的条件时,我可以用真正的代码进行测试,并在模拟时进行测试。

+0

你说当你需要触发特殊条件时你模拟。你能举个例子吗? – mslot 2010-07-22 11:00:53

+0

最常见的原因是触发错误条件。如果我想在服务器报告错误时测试我的客户端代码,那么当服务器很难完成时,我会模拟返回错误代码。此外,在回送中很难触发套接字错误,所以当我想确保正确处理套接字错误时,我会模拟套接字连接。 – 2010-07-22 15:31:22

相关问题