【问题标题】:Is it bad practice to remove and combine regression tests to speed up testing?删除和组合回归测试以加快测试速度是不好的做法吗?
【发布时间】:2011-04-14 16:26:59
【问题描述】:
我正在开发一个与第 3 方网络服务集成的应用。我目前有单独的集成/回归测试,它们调用 Web 服务来执行以下操作:
- 修改策略 - 添加车辆
- 修改政策 - 移除车辆
- 修改政策 - 添加多辆车
- 修改保单 - 添加被保险人
- ...
大多数这些测试都是在发现并修复错误时创建的。 3rd 方网络服务很慢,我正在尝试加快测试过程。因为每个测试都会调用 Web 服务,所以将它们组合成一个只调用一次 Web 服务的测试会使事情变得更快。
由于每个测试都是针对特定错误编写的,因此将这些测试结合起来会是一种不好的做法吗?我担心重构中的错误可能会导致稍后重新引入错误。
【问题讨论】:
标签:
testing
language-agnostic
refactoring
integration-testing
regression-testing
【解决方案1】:
是的,将它们结合起来是一种不好的做法。而是考虑如何在不组合测试的情况下降低风险。一种方法(可能是您最好的选择)是模拟 Web 服务,以便测试更快,而不会危及它们检测回归的能力。另一种方法是将您的慢速回归测试拆分为他们自己的套件,该套件的运行频率低于您通常的一组测试(但仍然足够频繁!)。最后,您可以组合它们 - 但我建议明确地将所有原始错误重新引入您的代码,以验证组合测试是否仍能检测到它们。
具体的、有针对性的、直接的、单元测试非常有价值;很高兴确切地知道发生了什么故障。组合测试会损害该价值。
【解决方案2】:
我不建议将它们组合在一起,除非您保留单独运行它们的能力(也许在您的夜间构建中将它们分开,并在您的连续构建中组合)。
如果您的测试框架支持,请尝试将它们并行化(在单独的“策略”上)。
【解决方案3】:
我建议将它们包含在你的夜间构建中,这样它们就可以在你睡着而不看时钟的时候每天运行一次。并且只删除它们您的开发人员时间测试。
当然,前提是他们不会觉得一晚不够。
只是将您的测试组合成一个大测试可能会使它们变得无用或更糟。这并不比删除它们好多少。