各位老铁们,大家好,今天由我来为大家分享软件测试中杀虫剂,以及软件测试中的杀虫剂效应的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录
软件测试中的杀虫剂效应
杀虫剂效应原本指农业中随着农药的普及使用,害虫对农药的抗药性就越来越强,农药就越来越难杀死害虫。
软件测试中的“杀虫剂效应”中最早是在《微软的软件测试之道》(( ̄_ ̄|||)这本书感觉是上个年代的了),书中对杀虫剂效应表述是:任何你用以防止或发现缺陷的方法都会留下一些残余的、更为微妙的缺陷,而对于这些缺陷而言,前面那些方法会统统失效。
我们把软件测试的杀虫剂效应放到农业中解释下:
农药:软件测试员

害虫:bug
农作物:被测软件
随着被测软件的规模越来越大,功能越来越复杂,越来越多的缺陷开始出现,我们的测试工程师对其进行不断的进行测试、不断的回归,但仍然发现每次测试仍然会发现很多的缺陷(测试无穷尽)。
1.被测软件越来越大,功能越来越复杂(害虫抵抗力越来越强)
2.测试人员思维定势,使用测试技术和方法单一(长期使用同一款农药)

永远不要停止测试,永远不要停止思考,永远不要相信某一种方法或者工具可以帮助你解决所有问题!在这岗位上就不要停止学习新的技术和方法!
什么是杀虫剂悖论
杀虫剂悖论,在软件测试中用来描述这样一种现象,对软件进行越多的测试,那么该软件对软件测试人员的测试就越具有免疫力。
杀虫剂悖论的来源
杀虫剂悖论是Boris Beizer在他1990年出版的《Software Testing Techniques》一书中最先提出来的。名字来源于每年各种各样的害处袭击田野和农作物,农业专家们要找到正确的对抗方法,用改良的配方设计出杀虫剂。但是害虫适应了新的杀虫剂,产生了免疫力,使新杀虫剂失效。随后的几年里,老的杀虫剂只能用来杀死没有免疫力的害虫,同时还必须引入一些新的改良配方,同更顽强的新编译害虫作斗争。
新旧杀虫剂的结合有时阻碍了旧杀虫剂效能的发挥。随着时间的流逝,旧的杀虫剂变得毫无用处。于是,害虫和杀虫剂不停的战斗,看最终谁占上风。有时杀虫剂赢, 有时害虫又可以成功的战胜最新的杀虫剂。这场斗争的结果是大自然和杀虫剂的不断发展变化。

杀虫剂悖论的避免
为了克服“杀虫剂悖论”,测试用例需要经常的评审和修改,不断增加新的不同的测试用例来测试软件或系统的不同部分,保证测试用例永远是最新的,即包含着最后一次程序代码或说明文档的更新信息。这样软件中未被测试过的部分或者先前没有被使用过的输入组合就会重新执行,从而发现更多的缺陷。软件测试人员必须不断地编写新的不同的测试来检验程序的不同部分从而找出更多的bug。让其他的人来测试你的程序将有助于打破”杀虫剂悖论”。
相同的测试人员测试同一个模块(功能),因长时间测试,形成了思维定式,因此也容易产生懈怠,忽视一些缺陷的存在,也容易导致杀虫剂悖论。解决办法就是采用交叉测试,不同的测试人员,有不同的测试思路和技巧,容易发现被忽视的缺陷。
参考文献
1.0 1.1 SWTBOK.七个测试原则.知乎,2026-04-08

软件测试的原则
测试显示缺陷的存在
测试可以显示缺陷的存在,但不能证明系统不存在缺陷。测试可以减少软件中存在未被发现缺陷的可能性,但即使测试没有发现任何缺陷,也不能证明软件或系统是完全正确的。
穷尽测试是不可能的
除了小型项目,进行完全(各种输入和前提条件的组合)的测试是不可能的。通过运用风险分析和不同系统功能的测试优先级,来确定测试的关注点,从而替代穷尽测试。
测试尽早介入

在软件或系统开发生命周期中,测试活动应该尽可能早的介入,并且应该将关注点放在已经定义的测试目标上。
缺陷集群性(80-20原则)
版本发布前进行的测试所发现的大部分缺陷和软件运行失效是由于少数软件模块引起的。
杀虫剂悖论
采用同样的测试用例多次重复进行测试,最后将不再能够发现新的缺陷。为了克服这种“杀虫剂悖论”,测试用例需要进行定期评审和修改,同时需要不断增加新的不同的测试用例来测试软件或系统的不同部分,从而发现潜在的更多的缺陷。

测试活动依赖于测试背景
针对不同的测试背景,进行的测试活动也是不同的。
不存在缺陷的谬论
假如系统无法使用,或者系统不能完成客户的需求和期望,发现和修改缺陷是没有任何意义的。
、以bug数量和严重性论英雄的不可行

OK,本文到此结束,希望对大家有所帮助。
