• 1
  • 0
分享
  • 【测试感悟】“杀虫剂悖论”和交叉测试
  • 瑾沐沐 2022-06-24 17:05:23 字数 1510 阅读 3991 收藏 0

一、什么是杀虫剂理论?

杀虫剂悖论是Boris Beizer在他1990年出版的《Software Testing Techniques》一书中最先提出来的。当农民发现农作物有病虫害的时候,就需要喷洒杀虫剂,以消除病虫害。通常可以杀死绝大部分的害虫,但是非常不幸的是,总会有少量的虫子活下来。存活下来的虫子对该杀虫剂就产生了抗药性,如果来年农民还是用同样的杀虫剂的话,那么对害虫的杀伤力将会大大降低。农民伯伯需要不断地使用新的杀虫剂来对付具有抗药性的害虫,否则农作物就会被害虫吃掉。在软件测试中用来描述这样一种现象,对软件进行越多的测试,那么该软件对软件测试人员的测试就越具有免疫力。

以上专业解释引用自MBA智库。在软件测试中,害虫就是测试人员要找到并消灭的缺陷,如果我们一直用同一种杀虫剂,虫子就会产生免疫,导致我们很难将虫子消灭的更彻底(不敢说“彻底消灭”,因为穷尽测试是不可能的)。实质就是如果一直是同一个测试人员测试固定的模块,测试时间越久,就会形成固定的思维模式和固化的用户路径,对原有功能缺陷的灵敏度越来越低,因此就导致了软件测试“杀虫剂悖论”。

二、为什么要交叉测试?

为了有效的避免“杀虫剂悖论”,目前看来最有效的方法还是交叉测试,不同的测试人员采用不同的测试思维和用户路径,就会更容易发现原来测试人员已经免疫的一些缺陷。如果测试资源充足,建议测试人员在了解需求的过程中就整理测试点,测试过程中也不断地更新测试点,将系统移交给交叉测试人员后,可以帮助交叉测试人员尽快的熟悉系统以及分析出遗漏的测试点,同时再次将测试点更新,不断精进追求更高的质量目的。就好像原来的测试人员是一种旧的杀虫剂,交叉测试人员是新的杀虫剂一样,两种杀虫剂会消灭掉更多的虫子,但是依然有虫子逍遥法外。

三、交叉测试人员越多越好吗?

是不是杀虫剂种类越多,消灭的虫子就越多呢?但是事实却并非如此。杀虫剂种类越多,杀虫的成本越高,但是杀虫效果却递减。因此交叉测试人数也不是越多越好,这样就会造成测试资源严重浪费,也会使得各个岗位人员的沟通成本越来越高。尤其是研发人员,面对一轮又一轮的测试,一次又一次的解释设计如此,真的是很令人奔溃的事情。沐沐在自己的工作实践中得出,固定模块的测试人员数应该在1-3人,资源最优化的情况就是2人(主测人员+交叉测试人员)。

四、交叉测试如何安排人员?

交叉测试的人员安排也是需要考量的,并不是只要有人去交叉测试就可以。一定要考虑主测人员和交叉测试人员的测试粒度,例如主测人员测试粒度较细,经验较为丰富,则安排测试新人进行交叉测试。如果主测人员是测试粒度较低,经验尚浅的人员,交叉测试人员一定要安排经验丰富的测试人员去兜底。测试粒度一定要均衡,才能使得产品质量不会参差不齐。

五、交叉测试有风险吗?

答案是肯定的,任何事情都有风险,交叉测试的风险就是越临近上线,如果安排不熟悉系统的人员交叉测试,风险就会越大。例如交叉测试人员反馈了轻微的样式缺陷,研发人员改了但是却引发的更严重的功能性缺陷,而交叉测试人员回归缺陷时,只关注了反馈的样式缺陷,导致系统更新上线后出现较大的生产事故。因此测试过程中,如果系统着急上线,不建议安排交叉测试人员或者说经验不足的成员来再次测试系统,风险已经远远大于收益。例如主测人员是经验丰富的人员,交叉测试人员是经验尚浅的人员,交叉测试人员反馈的缺陷回归后,主测人员还是要再次去回归验证一下系统,尽量规避引起功能性缺陷的风险。测试人员应该是团队中最应该具备风险意识的成员,风险意识越高,则背锅越少。

The more we share,The more we have.

希望这篇文章对大家有用...

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   首先,郑重的说明一下,本人是纯服务端开发人员,不懂安卓和ios开发,在实际开发配合中,也只负责给安卓和ios的同事提供服务端调取的接口以及处理支付宝的异步回调。所以这篇文章只是介绍服务端的开发过程,不会涉及到安卓和ios客户端的处理过程,如果你只想了解客户端处理过程,可以不用往下看了,goodbye!!!  在看这篇文章之前,希望你先看上一篇文章支付宝支付(一)—H5手机网站支付2.0(alipay.trade.wap.pay) ,涉及到的部分准备工作这里就不再重复了,有疑问的看上一篇文章或者查阅官方文档。一、APP支付产品介绍  APP支付适用于商家在 App 应用中集成支付宝支付功能。...
            0 0 954
            分享
          • 放眼全球,了解技术发展的边界和趋势,有助于组织和个人的发展及竞争力的提升,偶尔看到国外某网站的一篇文章,读来颇值得参考。也许这篇文章会给你一份指南,让你快速成长与发展。如今,随着世界数字化,我们目睹了技术进步的巨大变化。也将标志着技术和数字化转型的巨大变化,从而要求组织不断创新和重塑自我。1)敏捷与DevOps很多组织已采用了敏捷与DevOps,用敏捷来响应快速变化的需求,用DevOps来响应对速度的要求。DevOps涉及有助于集成开发和运维的活动(实践,规则,流程和工具),以减少从开发到运维的时间。对于正在寻找缩短软件生命周期,从开发到交付和运维方法的组织,DevOps已成为一种广泛接受的解...
            0 0 1295
            分享
          • 交付给用户的软件的质量决定了每个公司的成功。QA 团队的辛勤工作是确保产品质量的最重要因素之一。自动化测试最佳实践和适当的测试自动化技术可以帮助QA团队实现这一目标。如果尽管尽了最大努力,测试还是失败了怎么办?自动化测试人员可能因为急于求成而犯错,这不仅浪费时间和金钱。这对他们的能力和可信度也提出了质疑。对于团队和个人来讲,这听起来像是一场噩梦。在自动化测试生命周期中执行各种类型的自动化测试时,许多新手测试人员和开发人员都会犯自动化测试错误。避免某些自动化测试实践比正确进行测试更为重要。市场上有大量的自动化测试工具、自动化框架和一些基于 AI 的自动化工具,它们声称可以一站式解决所有自动化测试...
            0 0 690
            分享
          •   随着产品的不断升级,软件测试人员在研发团队中的比重越来越大,因为前期发展较晚,所以目前这方面的人才缺口很大。  1、测试人员是保证企业赖以生存的关键;  先来看一个因为测试人员的疏漏能给企业造成巨大损失的案例,最有代表性的就是2019年“拼多多100元无门槛消费券”漏洞,由于项目测试不到位,导致很多用户仅用了0.4元就给自己充值了100元的话费,事件虽发生在半夜,但是拼多多依旧损失严重,网络流传损失金额达200亿元,很多人担心拼多多就此倒闭。  这件事也给了企业重重一击,也让他们认识到测试的重要性,这件事不只是个例,每年企业因为测试没有做到位而造成的损失的事件早已屡见不鲜,也再次印证了测试...
            0 0 956
            分享
          • 自动化面试题记录整理(部分答案自己整理)1、selenium中如何判断元素是否存在?没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断2、selenium中hidden或者是display = none的元素是否可以定位到?不可以,想点击的话,可以用js去掉dispalay=none的属性3、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?首先通过封装find方法,实现wait_for_element_ispresent(WebDriverWait)在对页面进行click之前,先滚动到该元素(通过Js封装),避免在页面未加...
            14 13 5589
            分享
      • 51testing软件测试圈微信