测试金字塔及三种反模式

| 2022-03-17

作为一名顾问,你会看到大多数人认为并不存在的一个世界。我接待的客户中,有一些客户他们构建软件产品,但从未将 QA (Quality Assurence)作为一个职能。有些客户陷入了端到端 UI 测试的永无止境的循环中,不知道如何摆脱它。

在过去的几年里,我一次又一次地使用 Test Pyramid 和它的反模式来说明我建议的工作方式。尽管 互联网上充斥着「测试金字塔」的相关文章,但很少看到充分说明测试金字塔反模式的文章。

那我就来说说吧~

测试金字塔

著名的测试金字塔是迈克·科恩(Mike Cohn)提出的一个概念,他在《Scrum 敏捷开发方法(Successing with Agile)》一书中对此进行了描述。

金字塔回答了何时何地进行测试的问题,参见Martin Fowler:实效测试金字塔

由于许多软件团队中都有现有的系统,测试金字塔的实现有其挑战性,但当软件开发团队正在建立其测试技能或进入新的技术堆栈时,它就非常合适。

这里的单元测试和UI测试是不言自明的。令人困惑的是服务测试(Service Testing)这个术语。它指的是:应用程序API、微服务、数据库等的任何中间层。

反模式

对于了解什么是正确的测试方法来说,了解什么不是正确的,有时是至关重要。

许多有经验的开发人员和其他软件专业人士没有听说过这些反模式,这让我感到惊讶。 我把它们总结到这里。

软件开发的三种反模式是:

  1. 冰淇淋蛋筒
  2. 纸杯蛋糕
  3. 沙漏

蛋筒冰淇淋反模式 (Ice Cream Cone Anti-pattern)

Alister Scott 在他的博客上首次介绍了「冰淇淋蛋筒」。

这种反模式可以很轻松在那些有专职自动化测试团队且发布频率不高的软件组织中发现那种「我会通过 UI 进行自动化测试」的这种反模式。

这种反模式很危险,因为在 UI 中进行自动化测试,既昂贵又执行缓慢。

如果你不能持续测试,你就不能持续部署,如果你不能持续部署,你的产品总是会延迟上市。

这会让「冰淇淋蛋筒」听起来够糟糕吗?

蛋筒冰淇淋反模式

纸杯蛋糕反模式 (Cupcake Anti-Pattern)

ThoughtWorks 公司的博客上,介绍了「纸杯蛋糕反模式」。

不同的团队编写自动化测试,他们坐在不同的楼层或不同的位置。 开发人员正在编写单元、集成和组件测试,而自动化测试工程师正在将手动回归测试转换为自动化测试。还有另外一个团队手工执行测试用例。 所有团队都在重复测试。 虽然更多的测试没有带来什么伤害,但它一定是低效的。团队将无法专注于更复杂的测试问题,因为每个人总是有很多事情要做。

纸杯蛋糕反模式

沙漏反模式(Hourglass Anti-Pattern)

沙漏反模式来自于KHUSHI,写于2019年的一篇博客。

在这种反模式下,您有一个非常出色的开发团队,他们正在编写单元测试,并且,还有一个 QA 团队正在编写 UI 测试。 没有人编写服务/中间层测试。 尽管这种反模式比「冰淇淋蛋筒」好得多,但仍旧不如「测试金字塔」。

沙漏反模式

您的团队陷入了哪种反模式,以及您正在做什么实践,以帮助你的团队迈向测试金字塔?


参考阅读
  1. 修复测试沙漏

  2. Martin Fowler:实效测试金字塔