首页/开发/软件测试速查/杀虫剂悖论(Pesticide Paradox)
测试基础与分层67 条

杀虫剂悖论(Pesticide Paradox)

同一组测试用例反复运行后,发现新缺陷的能力会下降;需要定期评审与更新用例、补入新场景,才能维持检出效果。

软件测试速查开发更新于 2026-10-13

杀虫剂悖论是什么

杀虫剂悖论是 ISTQB 七原则之一:同一组测试用例反复运行后,发现新缺陷的能力会像昆虫产生抗药性一样下降——代码里的旧问题都被修完了,用例却还在原样重复。表现是对外看回归全绿,线上却持续冒出新问题。对策不是「跑更多次」,而是更新用例、补充新失效模式,并让探索式测试补位。

基本信息

出处ISTQB 七原则之一
现象回归通过但线上仍出问题,缺陷检出率持续走低
成因用例长期不更新、不淘汰、覆盖的都是已知路径
对策用例评审、补充新失效模式、结合探索式测试
配套动作把线上缺陷回溯纳入用例更新输入

典型使用场景

  • 用例库年度评审:逐条判断是否仍在检出有效缺陷,淘汰僵尸用例。
  • 线上缺陷回溯:每次事故评估现有回归为何没捕获,需要补哪类用例。
  • 版本轮换探索:按版本节奏轮换探索式测试的章程,持续冲击未知区域。
  • 回归时长治理:冻结并淘汰长期零缺陷且无需求关联的用例。
  • 失效模式积累:把新发现的问题类型沉淀为用例设计清单。
  • 新人引入变化:让不熟悉原用例的人评审,找出被忽视的盲区。

用例更新闭环

用例更新闭环
# 线上缺陷回溯三问
1. 现有回归为何没捕获?        # 判断是漏测还是用例失效
2. 属于哪类失效模式?          # 归入清单,检查同类区域
3. 应新增/修改哪条用例?       # 更新用例库并注明来源
# 输出:用例库增改记录 + 探索章程调整
只增不减的用例库会同时推高执行时间与维护成本,淘汰与更新需要纳入例行工作。
新增用例要针对失效模式:复制既有用例的写法去覆盖同一逻辑,不会带来新的检出能力。
探索式测试与脚本化测试互补:探索发现的问题稳定化后,固化为新的回归用例,让用例库保持生长。

易错点

  • 把新增用例当成更新手段:重复覆盖同一逻辑不产生新检出能力,应针对失效模式补充。
  • 用例集长期不淘汰:回归时长持续膨胀,真正关键的用例被淹没在长队列里。
  • 回归全绿就放心发布:把「没失败」当作「没缺陷」,忽视用例库本身的时效性。
  • 线上缺陷修完就结束:不回溯回归为何漏检,同类问题换个地方再次上线。
  • 探索式测试无章程无记录:发现的问题不可复用,也无法转化为用例沉淀。

数据来源与参考

  • ISTQB CTFL 4.0 大纲(七原则:杀虫剂悖论)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌