对于每个这样的测试,还有其他的测试来证明模拟数据对于实际服务“有意义”,这也通过单元测试来完成,通过重放客户端调用服务器来获得的相同数据。
这种集成测试模式适用于任何 RPC 调用,因此可以测试后端服务器对另一个服务器执行的 RPC 调用或者客户端调用。 当我们都应用这种方法时,我们有了可以保证集成测试正确的小测试用例,并确保我们测试的行为是“真实的”。
为了达成这个方案,我建立、评估以及丢弃好几个原型, 虽然构建原型及验证只花了一天时间,但是我和另一个工程师花了一年时间,来将它编程团队成员可以使用的一个工具。
当看到新框架从他们项目中替换了大量测试代码时,工程师非常快地接受了新方案。为了进一步推动其采用新框架,我与工程团队组织了多天活动,用于迁移测试用例。将现有单元测试迁移到新框架,缩小覆盖差距,并创建验证 mock 的新测试,这些需要几个月的时间。一旦我们完成了大约 80% 的测试用例,我们就开始比较新测试框架和现有端到端测试的效果。
最终的效果非常的好:
新测试与端到端测试同样有效地发现错误。
新测试在大约 3 分钟内完成运行,而不是 30 分钟(端到端测试)。
客户端测试是 0% 失败。验证新测试通常比端到端测试更稳健。
此外,新测试框架是单元测试,因此您可以在 IDE 中运行它们,并通过 IDE 进行单步调试。这样使得我们很少运行端到端测试,运行端到端测试只是为了检测服务器的错误配置,而不是做功能测试。
原文转自:https://www.testwo.com/article/891