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

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

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

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


杀虫剂效应:

英文名叫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层测试的占比很大,每次验证就会花很多的时间,势必影响测试执行和项目发布的效率。所以从这个层面考虑,也应该更多的进行单元测试和集成测试。

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

********************************************************************************************************

近期我会在博客中系统的更新一些关于Selenium的文章,也请大家多多关注下我的视频课程:

入门:基于Java的Selenium3自动化测试完整教程

高级:Selenium Java高级架构课程

*********************************************************************************************************

精彩文章,请大家关注我的测试公众号:火烈鸟测试

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

  1. 用户金字塔模型详解及在实际运营工作中的意义

    我这次分享的主题是讲用户金字塔,这个主题我大概是国内最早提出的. 我觉得这个概念比较实际一些,对大家平时的工作有帮助,所以今天我会讲的比较细一些. 关于我的个人经历(简述) 前面我先讲一下我的个人经历 ...

  2. 软件测试面试题:请对Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念,请进行描述。

    请对Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念,请进行描述. 1)单元测试自动化:在面向过程编程中,单元也可以是整个模块,单常见的是单个函数或过程. 在面向对象编程 ...

  3. 软件测试中简述w模型特点,软件测试V模型、W模型 、H 模型的特点

    软件测试V模型.W模型的特点 V模型只是将瀑布模型中的测试部分做了细化,其最大特点(可能也是最大的缺点)就是"线性执行",测试的工作在编码完成后才开始进行,显然不符合软件测试的&q ...

  4. 007需求分析中的重要知识点(马斯洛需求层次理论+KANO优先级筛选模型+金字塔模型)

    文章目录 一.用户需求和产品需求的区别 1.1 马斯洛需求层次理论 1.2 需求分析 1.3 总结 二.需求筛选和优先级排序 2.1 需求分析的步骤 2.2 优先级筛选KANO模型 2.2.1 KAN ...

  5. 阿里研究员:软件测试中的18个难题

    简介:对于软件测试来说,怎么样才算测够了?如何评价测试的有效性?那么多测试用例,以后怎么删?在软件测试中会遇到非常多的问题,阿里研究员郑子颖分享了18个他总结出的难题以及相关看法,希望对同学们有所启发 ...

  6. 软件测试中的18个难题,来看看你有这些问题吗?

    简介 对于软件测试来说,怎么样才算测够了?如何评价测试的有效性?那么多测试用例,以后怎么删?在软件测试中会遇到非常多的问题,阿里研究员郑子颖分享了18个他总结出的难题以及相关看法,希望对同学们有所启发 ...

  7. 软件测试中的“黑天鹅”

    1.软件测试中的"黑天鹅"   几年前,我带领的一个测试小组遗漏了一个严重的bug到网上,当用户反馈这个bug后,我们对它进行了深入的分析和重现,最终所有人一致认为,这个bug能够 ...

  8. 软件测试 通用技术02 测试流程 V模型 W模型 H模型 X模型 单元测试 软件测试分类

    文章目录 1 软件测试流程 2 软件测试过程模型 2.1 V模型(重点) 2.2 W模型(重点) 2.3 H模型 2.4 X模型 3 软件测试过程理念 4 软件测试分类 4.1 按照开发阶段划分 单元 ...

  9. comsol显示电场计算结果_在 COMSOL 中构建磁流体动力学多物理场模型

    COMSOL Multiphysics® 软件中的模型都是从零开始构建的,软件支持多物理场,因此用户可以按照自己的意愿轻松地组合代表不同物理场现象的模型.有时这可以通过使用软件的内置功能来实现,但有些 ...

最新文章

  1. 企业网站建设量身定做的三项基本要素
  2. Engineering Department Bulletin News and information for the Department
  3. LoRaWAN 巩固了其作为低功耗广域网主导技术的地位
  4. 产品经理必读:用户场景分析的四要素
  5. Android实现计时与倒计时(限时抢购)的几种方法
  6. Vijos P2010 回文日期【回文+日期计算】
  7. redis(版本redis-5.0.2)的安装步骤
  8. 请问smartadmin中如何只用其treeview 组件?
  9. Plugin Alliance DS Audio THORN for Mac(电子音乐合成器插件) v1.2.0破解版
  10. 电脑安装什么杀毒软件最好?这4款满分杀毒软件了解一下
  11. 基于HTML5的在线幻灯片编辑演示系统
  12. 停车场车牌识别摄像机,传统提成行业颠覆者
  13. 使用 Amazon Deep Learning AMI 快速实现 CUDA,cuDNN 和深度学习框架版本兼容
  14. Ubuntu更换登录界面壁纸
  15. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 8-8
  16. 2023美团面试真题
  17. Equalize Them All
  18. 应对项目严重滞后4大有效补救方法
  19. JS获取客户端信息(屏幕分辨率、浏览器版本、操作系统版本)
  20. 实验室要对哪些内容进行质量控制?【MD技术人】

热门文章

  1. 如何进行接口测试(一篇学会)
  2. 小程序微信小程序设计登录页面
  3. 大计基笔记(1)数学运算
  4. nextcloud——搭建自己的云盘
  5. js html 乱码
  6. ARM工控主板LS1012A
  7. 本机php环境搭建教程:windows环境下wampserver的配置教程——超级详细
  8. JSON.parse()和JSON.stringify()和数组遍历方法
  9. 交换两个变量的值的swap函数
  10. 时间-1计算机世界中的时间概念