测试开发中的虫剂悖论
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
测试开发中的虫剂悖论
1 初识虫剂悖论
提到 虫剂悖论(pesticide paradox)我相信很多人都没听说的除非是生物学专业的同学或者老师。
虫剂悖论描述的是重复使用某种农药杀灭害虫时间越久杀虫的效果就越差。
之所以这样是因为出现抗药性也就是说害虫发生了进化对这种杀虫药免疫了。
为了保证农药的杀虫效果我们必须不断的研究新农药。
这个理论运用到软件测试中
bug类似于害虫用例类似于农药重复使用固定的一批测试用例能发现的bug就越来越少遗漏的bug就会越来越多。
也就是说测试的有效性会随着时间不断衰减。
之所以存在这种现象是因为软件在不断进化新的bug在不断产生。同样一批用例只能发现会引起已覆盖功能衰退的regression bug。很多新bug对这批用例是有免疫力的。
那么我们如何保持和长期保持测试的有效性呢?
就像杀虫需要不断更新农药一样发现bug需要不断更新测试策略和测试用例。
2 应对虫剂悖论
2.1 更新测试策略
测试策略是高度依赖测试上下文的。
当测试上下文发生变化时测试策略应该随之动态调整。
例如在采用基于风险的测试策略时哪个模块哪个环节风险大我们就应该将测试资源朝这个模块这个环节倾斜。
软件测试的类型方法和工具是丰富多彩的。据不完全统计存在有100种以上的测试类型。在制定测试策略时可以考虑多样化组合型的测试策略例如自动化测试+探索测试确定性测试+随机Fuzzing从而实现优势互补和效益最大化。
2.2 更新测试用例
对于软件来说三分开发七分维护。对于测试用例其实也类似。测试用例是需要长期维护的。我们需要密切跟踪遗漏出去的bug及时校准用例打上补丁。
同时我们需要密切跟踪被测软件的变化评估变化对用户场景的影响。对于产生新用户场景的变化要及时新增测试用例进行覆盖。
“测试免疫"是一种客观存在的规律不以人的意志为转移。对于"测试免疫”我们不能无动于衷而要有所作为。
只有经常主动去更新测试策略和用例堵住漏洞提升覆盖我们才能弥补用例有效性衰减的损失让测试整体有效性保持在一定的水平。