总结:
如何创建模拟外部系统预期延迟的"集成"测试?
详细:
我有一个应用程序"Main",它与多个外部系统(通过web服务)通信,我称之为"合作伙伴"。
我对合作伙伴的内部运作不感兴趣,但我需要全面测试Main。
对于Main,我目前有:
- 对每个单独的可测试块进行单元测试[因此在每个"级别"(n层)测试每个类上的每个公共方法,并截断每个依赖项]
- 从上到下进行测试的集成测试(因此测试Presentation层上的所有公共方法,并仅存根这些合作伙伴web服务)
我还想创建一些集成测试,以确保MAIN中的代码提供正确的性能。
什么是"正确的表现"?产品经理可以说"所有视图必须在2秒内返回数据"。我知道(平均而言)给合作伙伴打电话需要(比如)1.5秒,所以如果主代码在0.5秒(2-1.5)内完成,我可以用秒表写集成测试。然而,在与同事的讨论中,有人建议合作伙伴的Stub应该包括1.5秒的预期延迟,因此,我的测试应该是,合作伙伴的主代码加存根应该在PM指定的2秒内完成。
QUs:
- 建议的行为是什么
- 如果按照建议,如何使用Rino Mocks来实现这一点
感谢大家
Griff
"所有视图必须在2秒内返回数据"毫无意义。在限制响应时间时,还应该考虑负载。当每10秒会有1个请求时,您的视图可能会在2秒内返回。但当每秒有10k个请求时,你的响应时间会"稍微"长一些。更好的性能要求是"当负载低于每秒z个请求时,响应的x%将不超过y秒"或类似的内容。
单元测试延迟也毫无意义。您应该运行全规模的性能测试。选择一个现有的工具,准备几个客户端节点(由该工具控制),对测试的服务器运行记录/脚本化的客户端请求,并检查响应时间、cpu和内存使用情况。然后将一个或模式节点添加到系统中,并检查系统是如何缩放的