1、完全测试一个程序是不可能的。(It’s Impossible to Test a Program Completely.)
实践:根据项目时间、资源、风险、用户要求等,有选择地去测试。
2、软件测试是一种基于风险的活动。(Software Testing Is a Risk-Based Exercise.)
实践:一般新功能、常用功能、默认配置属于高风险,需要优先测试,分配较多资源,而回归功能、不常用功能属于低风险,可以延后测试,分配较少资源。
3、测试并不能证明错误不存在。(Testing Can’t Show That Bugs Don’t Exist.)
实践:测试过的场景没有问题,但没有测试过的场景无法确认是否有问题,所以测试结论只能基于已测试的部分说明。
4、发现Bug越多的地方,会有更多Bug。(The More Bugs You Find, the More Bugs There Are.)
实践:在一个地方发现Bug后,应投入更多资源测试这个地方,在验证Bug时,要做回归测试。
5、农药悖论:你对软件测试得越多,它对你的测试就越免疫。(The Pesticide Paradox: the more you test software, the more immune it becomes to your tests. )
实践:相同模块分配不同测试人员进行交叉验证可以防止农药悖论。