软件测试、数据保护、代码审查与静态检查全解析
1. 测试的目的与策略
1.1 测试的两种动机
测试主要有两个截然不同的目的:消除软件中的错误,以及确认软件没有错误。这两种动机决定了测试的方式和时长。
1.1.1 以修复错误为目的的测试(面向调试的测试)
这是最常见的测试动机,即通过测试找出并修复软件中的错误。测试过程通常是运行一组测试用例,记录发现的错误,修复这些错误,然后再进行更多测试。理想情况下,会有合理的黑盒和白盒测试,常见形式为回归测试套件。探索性测试可用于在黑盒和白盒测试之外进一步检查系统,以发现更多缺陷。
当发现缺陷时,应修复该缺陷,并确保修复有效且未引入新问题,然后继续测试,直到时间耗尽或达到特定的退出标准。常见的退出标准包括:
- 测试时间用完,但仅以此为唯一标准并非最佳选择。
- 达到了覆盖目标,例如对需求进行 100% 的黑盒测试,对代码分支进行 95% 的白盒测试。
- 无法再找到更多错误,或者继续查找错误的成本效益不高。例如,在过去两周的测试中未发现高优先级错误,且在过去一周未发现中优先级错误。
- 满足软件质量的验收测试标准,如系统在重负载下连续运行两周无崩溃。
如果软件存在大量错误,且测试时间有限,仅使用探索性测试可能是减少错误数量的最有效方法。
1.1.2 以验证开发过程质量为目的的测试
对于高质量软件,仅通过测试找出并修复错误是不够的,因为测试只能发现一部分错误,很难通过测试找出所有残留错误。此时,应将测试视为验证开发过程质量的手段。
可以将测试与经典科学方法进行类比:
超级会员免费看
订阅专栏 解锁全文

76

被折叠的 条评论
为什么被折叠?



