杀虫剂悖论(pesticide paradox)
目录 |
杀虫剂悖论,在软件测试中用来描述这样一种现象,对软件进行越多的测试,那么该软件对软件测试人员的测试就越具有免疫力。
杀虫剂悖论是Boris Beizer在他1990年出版的《Software Testing Techniques》一书中最先提出来的。[1]名字来源于每年各种各样的害处袭击田野和农作物,农业专家们要找到正确的对抗方法,用改良的配方设计出杀虫剂。但是害虫适应了新的杀虫剂,产生了免疫力,使新杀虫剂失效。随后的几年里,老的杀虫剂只能用来杀死没有免疫力的害虫,同时还必须引入一些新的改良配方,同更顽强的新编译害虫作斗争。
新旧杀虫剂的结合有时阻碍了旧杀虫剂效能的发挥。随着时间的流逝,旧的杀虫剂变得毫无用处。于是,害虫和杀虫剂不停的战斗,看最终谁占上风。有时杀虫剂赢,但是,有时害虫又可以成功的战胜最新的杀虫剂。这场斗争的结果是大自然和杀虫剂的不断发展变化。
为了克服“杀虫剂悖论”,测试用例需要经常的评审和修改,不断增加新的不同的测试用例来测试软件或系统的不同部分,保证测试用例永远是最新的,即包含着最后一次程序代码或说明文档的更新信息。这样软件中未被测试过的部分或者先前没有被使用过的输入组合就会重新执行,从而发现更多的缺陷。软件测试人员必须不断地编写新的不同的测试来检验程序的不同部分从而找出更多的bug。让其他的人来测试你的程序将有助于打破”杀虫剂悖论”。
相同的测试人员测试同一个模块(功能),因长时间测试,形成了思维定式,因此也容易产生懈怠,忽视一些缺陷的存在,也容易导致杀虫剂悖论。解决办法就是采用交叉测试,不同的测试人员,有不同的测试思路和技巧,容易发现被忽视的缺陷。[1]