软件测试中的杀虫剂效应与金字塔模型

2020-09-21 15:09发布

今天包括后面的文章,我们除了聊自动化以外,也来聊一下软件测试中的一些基础知识。

基础知识也非常重要,对手工测试如此,对自动化测试同样如此。

本篇文章我们来了解一下软件测试中的两个重要指导原则:杀虫剂效应 和 金字塔模型。


杀虫剂效应: 

英文名叫Pesticide Paradox,原本指的是在农场里为了对付破坏农作物的害虫,农业专家开发出了对应的杀虫剂,刚开始效果很好,但是随着时间的流逝,害虫适应了杀虫剂,产生了抗药性,这些原有的农药就越来越难杀死害虫,必须设计新型的杀虫剂来对付害虫。

在软件测试中这个理论是由《软件测试技术》一书的作者Boris Beizer在30年前提出的。

在软件测试中杀虫剂效应指的是:

如果你不断重复相同的测试,那么软件会对你的测试产生免疫,多个版本迭代下来,最终这些相同的测试用例将不再能发现新的bug。

这是因为几轮下来,在这些用例覆盖的领域,bug已经被修复的差不多了,而且在测试人员发现bug的地方,开发人员也会格外关注和小心,这样最终软件对这些测试产生了免疫,就很难再发现新的bug了。 

那如何防止杀虫剂效应呢?

1.      根据产品变更,持续维护和更新你的测试用例

不管是大的变更还是琐碎的变更,都要及时增加相应的新用例;并分析对已有功能的影响,修改受影响的现有用例。

2.      改变原有测试数据

在实际工作中,我们会发现,有很多生产环境的bug都是和具体数据相关的缺陷,所以在原有测试数据发现缺陷越来越少甚至发现不了缺陷的情况下,应该尝试去增加或者更新一下旧的测试数据。

3.      同行测试

让同行,可以是测试同行、也可以是产品经理、运维人员、甚至是新人等,参与进来进行测试,他们会从一些新的视角,尝试一些新测试场景,发现一些新的bug。

4.      减少已经有杀虫剂效应的测试用例或者降低它们的优先级

比如对于一些用例来说,他们在10次回归测试中都没有发现bug,这个时候就要review评审一下这些用例,说明系统已经对它们产生了杀虫剂效应,除了冒烟测试级别的用例外,就要适当减少这些用例的数量,或者降低这些用例的执行优先级。

因为随着时间推移,系统逐渐变的庞大,这些用例的数量也将越积累越多,他们在每次回归中可能都会占用很大比例的执行时间,一般来说如果这些用例在5次回归执行中都没有发现缺陷,就要考虑减少他们的数量或者降低它们的执行优先级,以提升测试执行的效率,同时保证测试质量。

 


金字塔模型: 

金字塔模型大约是在10年前,随着敏捷流程的出现,由敏捷专家Mike Cohn提出的。

金字塔模型是对整个软件开发过程中所有测试工作的一个理想指导模型,不仅涉及测试工程师的测试工作,同样涉及开发人员的测试相关工作,尤其适用于当前敏捷模式中的自动化测试。

金字塔模型把整个开发流程中的所有测试由底到上分成了三大类型:

  • 最底层的单元测试(unit testing):

单元测试是基于代码层面的测试,重点在于验证某个代码单元的功能是否正确,属于白盒测试范畴,一般由开发人员自己进行。

  • 中间层的集成测试(integration testing):

集成测试的重点是测试组件与组件之间,模块与模块之间,或者更大的系统与系统之间的集成情况,属于灰盒测试的范畴,根据情况一部分可以由开发人员进行,一部分可以由测试人员进行。

  • 最上层的UI层测试(User interface testing):

UI测试的重点在于在UI层模仿用户使用系统,验证系统是否符合用户需求,属于黑盒测试的范畴,一般由测试人员进行。 

金字塔模型给出了在整个项目开发中,这三大测试类型的理想占比:

单元测试的比重应该占70%以上,

集成测试的比重占20%左右,

UI层测试的比重小于10%。

这种占比的金字塔模型体现了两个原则:

一、 缺陷越早被发现,解决的成本越低

有一个不同阶段发现缺陷解决成本的统计:

如果单元测试阶段发现缺陷解决成本为1的话,那么集成测试阶段发现缺陷的解决成本就是10,到了UI层解决成本就是100. 

所以从成本考虑,应该更多的进行单元测试和集成测试。

二、 越底层的测试执行效率越高

执行一个单元测试,需要的时间可能是毫秒级别,而执行一个UI层的测试,连最简单的登录验证都需要几秒钟的时间,一个下单流程需要几分钟的时间,而一个复杂的End 2 End的流程可能需要几个小时的时间。

而在当前的敏捷模式下,频繁的版本发布需要配合频繁的测试验证工作,如果UI层测试的占比很大,每次验证就会花很多的时间,势必影响测试执行和项目发布的效率。所以从这个层面考虑,也应该更多的进行单元测试和集成测试。 

好了,这就是给大家介绍的杀虫剂效应和金字塔模型,希望这两个测试指导原则,可以对大家在现实中的测试工作有所指导和帮助,至少能了解到这两个原则,不至于说在面试中被面试官问到或者和同行聊到的时候,完全没听过。^_^


文章来源:CSDN 作者:YOYO测试

来源地址:https://blog.csdn.net/yoyocat915/article/details/102471332