前言
软件测试人员对相同测试对象进行测试的次数越多,发现的缺陷越少:测试杀虫剂效应,此时,需要不断编写新的用例,安排不同测试人员轮流对不同模块进行测试,来改善这种现象。1 软件测试基础知识之杀虫剂效应测试原则
软件测试人员对相同测试对象进行测试的次数越多,发现的缺陷越少:测试杀虫剂效应,此时,需要不断编写新的用例,安排不同测试人员轮流对不同模块进行测试,来改善这种现象。
1.1 杀虫剂效应
有个农民种了个菜园,发现害虫蛞蝓(kuò yú-软体动物,外形像去壳的蜗牛,表面多黏液,头上有长短触角各一对,眼长在长触角上。背面淡褐色或黑色,腹面白色。昼伏夜出,吃植物的叶子,危害蔬菜、果树等农作物。俗称鼻涕虫,有的地区叫蜒蚰。)经常危害菜园里的蔬菜,他发现蛞蝓对啤酒很是偏爱,所以在菜园的土垛栅栏外通过啤酒陷阱能拦下这些害虫,另外还发现在栅栏外面撒盐也是击溃蛞蝓入侵的有效方法,木屑和蛋壳也是对付这些小贼的另一种途径。可是不管在菜园外围布下怎么样的天罗地网来捕捉和阻挡蛞蝓,一些漏网之徒还是会成功突破。这些漏网的蛞蝓,对瓶酒、木屑、蛋壳的免疫,就是杀虫剂效应。
杀虫剂效应,也称为“杀虫剂悖论”(Pesticide Paradox),主要描述了反复使用相同的杀虫剂可能导致害虫对杀虫剂产生免疫,进而使得杀虫剂失去原有的杀虫效果。
1.2 测试杀虫剂效应
“杀虫剂效应”用于描述测试人员对同一测试对象进行的测试次数越多,发现的缺陷(或称为“Bug”)就会越来越少的现象。
初始阶段:测试人员在对软件进行测试的初期,往往能够发现大量的缺陷。
后续阶段:然而,随着测试次数的增加,测试人员由于对软件逐渐熟悉,开始形成思维定势,导致难以发现新的缺陷。这种现象有时被称为“对该产品产生了抗药性”。
就像菜园农夫对方蛞蝓一样,使用再多灭虫方法,总有一些漏网之虫。使用各种策略和方法进行软件测试以发现潜在缺陷时,总会遗漏一些潜在的缺陷。就如Beizer的第一定律的杀虫剂困境所述:“任何用以防止和发现缺陷的方法都会留下一些残余的,更为微妙的缺陷,而对于这些缺陷而言,前面的方法会统统失效。”
为了克服这种现象,测试人员需要用更多的测试方法不断编写新的测试用例,对程序的不同部分进行测试,发现更多潜在缺陷,并提高测试工作的有效性。
1.3 使用原则
测试杀虫剂效应,表明软件测试越多,缺陷对测试的免疫力越强的现象。就像老用一种农药,害虫就会有免疫力,农药发挥不了效力。因为程序员对测试人员的“惯用伎俩”已经可以主动躲避了!为了克服杀虫剂怪事:
(1)软件测试员要不断编写不同的、新的测试程序,对程序的不同部分进行测试,以找出更多软件缺陷。
(2)在软件测试中,轮流安排不同的测试人员进行不同模块的测试工作,是一种避免“杀虫剂怪事”产生的有效方法。