【问题标题】: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】:

      我建议将它们包含在你的夜间构建中,这样它们就可以在你睡着而不看时钟的时候每天运行一次。并且只删除它们您的开发人员时间测试。

      当然,前提是他们不会觉得一晚不够。

      只是将您的测试组合成一个大测试可能会使它们变得无用或更糟。这并不比删除它们好多少。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-30
        • 1970-01-01
        • 2014-03-11
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        • 2018-12-01
        • 1970-01-01
        相关资源
        最近更新 更多