每个模型都有组合方式|测试金字塔的思考与总结

2021-05-18   出处:土司阿哈  作/译者:土司阿哈  

        1.测试金字塔

        Mike Cohn 在他的著作《Succeeding with Agile》一书中提出了测试金字塔这一概念。根据 Mike Cohn 的测试金字塔,测试组合应该由三层组成(自下往上分别是):单元测试、服务测试、用户界面测试。最下层是单元测试,单元测试是自动化测试策略稳固的根基,因此也是金字塔结构的最底层;最上层是用户界面,通常用户界面是脆弱的,测试和修改的经济成本和时间成本较高;中间服务层是为了过渡用户界面和程序单元而设计的,认为所有应用程序都由各种服务组成,服务是指实现某一具体功能的程序集合,服务通过对输入进行响应而体现。通过对服务进行测试,而不是对用户界面进行测试,可以极大缩短时间和成本。


        测试金字塔告诉我们在建立你自己的测试组合时,测试金字塔本身是一条很好的经验法则。Cohn 测试金字塔中提到的两件事:

  • 编写不同粒度的测试。
  • 层次越高,编写的测试应该越少。

        为了维持金字塔形状,一个正常、快速、可维护的测试组合应该是这样的:写许多小而快的单元测试;适当写一些更粗粒度的服务相关的测试,对某些业务可以理解为编写适当的接口测试;写很少高层次的端到端测试。

        2.对测试金字塔的反思

        按照Cohn 在测试金字塔模型中提到的观点,在开发过程中,应该编写和开发更多小而快的单元测试,以更快更高效完成质量反馈,应该很少端到端的UI测试。

        但实际上在大部分公司,开发同学还是不太愿意写更多的单元测试,更多的进行UI层的测试呢?难道说测试金字塔模型有问题的?

        要搞明白这个问题,我们先要思考一下,在软件测试的过程中测试是希望达成什么样的目标?在保障过程中是在保障那一部分内容?

        在ISO25000标准中,测试质量被分为内部质量和外部质量,外部质量就是我们常说的用户体验,是用户使用过程中的用户体验,是否好用,是否易用,是否可靠等等。内部质量更多的是内建质量,关注的是产品安全性、可测性、可重用性、可维护性以及可移植性等等。在用户量较小的C端产品或者业务复杂的产品中,测试的过程更多的关注于用户体验属性,而在于用户量大的产品更多关注于产品的内建质量。比如:

  • 在创业团队中,一般更多的关注于用户体验,在保障产品质量的过程中一般会有更多的资源投入到UI层面的测试和质量保障。测试的模型大概率是冰淇淋模型
  • 在云和大数据、人工智能的团队中,因为对安全性、可测性、可重用性、可维护性以及可移植性等方面的要求很高,测试资源会更多的向单元测试和接口测试层面倾斜。


        3.测试金字塔是分层测试的一类最佳实践

        按照以上分析,测试金字塔模型的也是有一定适用范围的,对于用户体验要求更高的产品或者业务更复杂产品,测试金字塔模型匹配度较低;而对于内建质量要求更高的产品,比如云、大数据、人工智能等产品,更适合使用金字塔模型构建我们的测试策略或者测试组合。


        这也很好的解释了,金字塔模型既然得到了那么多人的认可,为什么在真正落地的时候,大部分团队还是按照冰激凌模式执行。不管是金字塔模型还是冰激凌模型,其实都是都是一种测试组合或者策略。


        如图所示净化水的装置,也是通过不同的组合得到干净的水质,纱布过滤较大的浮尘和杂物,小卵石和石英砂净化泥沙,活性炭进行杀菌消毒,蓬松棉在此过滤细粒度的杂物,确保得到更干净的水。

        其实测试金字塔模型是分层测试策略,是通过按照单元测试、接口测试、UI测试按照不同的目标要求,总结出来的一套最佳分层测试实践。对于每一个层次所达成的目标也是在一定范围之内的,比如单元测试主要解决单功能或者函数的正确性,接口测试确保各种异常输入输出的正确性,UI测试主要保障产品符合用户需求,满足用户心理预期,可以给用户提供良好的使用体验。

        通过金字塔模型进行组合测试,最大程度保障测试能够被快速执行,快速反馈,进而降低质量保障的总成本。


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
214°|2146 人阅读|0 条评论

登录 后发表评论