一、什么是杀虫剂理论?
杀虫剂悖论是Boris Beizer在他1990年出版的《Software Testing Techniques》一书中最先提出来的。当农民发现农作物有病虫害的时候,就需要喷洒杀虫剂,以消除病虫害。通常可以杀死绝大部分的害虫,但是非常不幸的是,总会有少量的虫子活下来。存活下来的虫子对该杀虫剂就产生了抗药性,如果来年农民还是用同样的杀虫剂的话,那么对害虫的杀伤力将会大大降低。农民伯伯需要不断地使用新的杀虫剂来对付具有抗药性的害虫,否则农作物就会被害虫吃掉。在软件测试中用来描述这样一种现象,对软件进行越多的测试,那么该软件对软件测试人员的测试就越具有免疫力。
以上专业解释引用自MBA智库。在软件测试中,害虫就是测试人员要找到并消灭的缺陷,如果我们一直用同一种杀虫剂,虫子就会产生免疫,导致我们很难将虫子消灭的更彻底(不敢说“彻底消灭”,因为穷尽测试是不可能的)。实质就是如果一直是同一个测试人员测试固定的模块,测试时间越久,就会形成固定的思维模式和固化的用户路径,对原有功能缺陷的灵敏度越来越低,因此就导致了软件测试“杀虫剂悖论”。
为了有效的避免“杀虫剂悖论”,目前看来最有效的方法还是交叉测试,不同的测试人员采用不同的测试思维和用户路径,就会更容易发现原来测试人员已经免疫的一些缺陷。如果测试资源充足,建议测试人员在了解需求的过程中就整理测试点,测试过程中也不断地更新测试点,将系统移交给交叉测试人员后,可以帮助交叉测试人员尽快的熟悉系统以及分析出遗漏的测试点,同时再次将测试点更新,不断精进追求更高的质量目的。就好像原来的测试人员是一种旧的杀虫剂,交叉测试人员是新的杀虫剂一样,两种杀虫剂会消灭掉更多的虫子,但是依然有虫子逍遥法外。
是不是杀虫剂种类越多,消灭的虫子就越多呢?但是事实却并非如此。杀虫剂种类越多,杀虫的成本越高,但是杀虫效果却递减。因此交叉测试人数也不是越多越好,这样就会造成测试资源严重浪费,也会使得各个岗位人员的沟通成本越来越高。尤其是研发人员,面对一轮又一轮的测试,一次又一次的解释设计如此,真的是很令人奔溃的事情。沐沐在自己的工作实践中得出,固定模块的测试人员数应该在1-3人,资源最优化的情况就是2人(主测人员+交叉测试人员)。
交叉测试的人员安排也是需要考量的,并不是只要有人去交叉测试就可以。一定要考虑主测人员和交叉测试人员的测试粒度,例如主测人员测试粒度较细,经验较为丰富,则安排测试新人进行交叉测试。如果主测人员是测试粒度较低,经验尚浅的人员,交叉测试人员一定要安排经验丰富的测试人员去兜底。测试粒度一定要均衡,才能使得产品质量不会参差不齐。
答案是肯定的,任何事情都有风险,交叉测试的风险就是越临近上线,如果安排不熟悉系统的人员交叉测试,风险就会越大。例如交叉测试人员反馈了轻微的样式缺陷,研发人员改了但是却引发的更严重的功能性缺陷,而交叉测试人员回归缺陷时,只关注了反馈的样式缺陷,导致系统更新上线后出现较大的生产事故。因此测试过程中,如果系统着急上线,不建议安排交叉测试人员或者说经验不足的成员来再次测试系统,风险已经远远大于收益。例如主测人员是经验丰富的人员,交叉测试人员是经验尚浅的人员,交叉测试人员反馈的缺陷回归后,主测人员还是要再次去回归验证一下系统,尽量规避引起功能性缺陷的风险。测试人员应该是团队中最应该具备风险意识的成员,风险意识越高,则背锅越少。
The more we share,The more we have.
希望这篇文章对大家有用...