软件测试的原则
软件测试是实施软件或应用程序以识别缺陷或错误的过程。对于应用程序或软件的测试,我们需要遵循一些原则来使我们的产品没有缺陷,这也有助于测试工程师花费他们的精力和时间来测试软件。在本节中,我们将学习软件测试的七个基本原则。
软件测试的七个基本原则如下:
- 测试证明软件存在缺陷(Testing shows the presence of defects)
- 穷尽测试是不可能的(Exhaustive Testing is not possible)
- 尽早介入测试(Early Testing)
- 缺陷具有集群性(Defect Clustering)
- 杀虫剂悖论(Pesticide Paradox)
- 测试是上下文相关的(Testing is context-dependent)
- 无错误谬论(Absence of errors fallacy)
这七个原则是由 Rex Black 、 Erick Van Veenendaal 和 Dorothy Graham 的研究 “软件测试基础”(ISTQB 认证)总结的,可以作为大多数测试项目的核心指南。
接下来,让我们一一看看七种不同的软件测试原则。

原则一:测试证明软件存在缺陷
需要特别指出,在进行测试时,我们只能确定应用程序或软件有任何错误或缺陷,并不是说测试没有发现错误就说明软件没有缺陷。
进行测试的主要目的是借助各种方法和测试技术来识别未知错误的数量,因为整个测试应该可以追溯到客户需求,这意味着要找到可能导致产品无法满足客户需求的任何缺陷。
通过对任何应用程序进行测试,我们可以减少错误的数量,这并不意味着应用程序没有缺陷。即便对产品或者应用程序进行了多次的、比较彻底的测试都没有发现任何缺陷,执行多种类型的测试时也似乎没有任何错误,这也不能证明软件是 100% 完美的。比如,在生产服务器部署的时候,终端用户仍然有可能会遇到那些在测试过程中没有发现的 bug。
原则二:穷尽测试是不可能的
有时,在整个实际测试过程中,使用输入数据的有效和无效组合来测试所有模块及其功能是非常困难的,因为它需要大量的时间。一般来说,项目周期里永远不可能允许测试团队在项目中进行大量有效的组合测试。
因此,不要执行详尽的测试,因为它需要无限的决心,而且大多数艰苦的工作都是不成功的。所以在实际测试中,我们通常会根据模块的重要性完成这种类型的变化,因为产品时间表不允许我们执行这种类型的测试场景。
随着系统承载业务越来越多,代码规模也越来越庞大,算法逻辑越来越复杂。要让测试完全覆盖是不可能的,通常可以采取以下策略进行测试:
- 精准测试:改动什么测什么;
- 二八原则:只测重点;
- 等价划分;
- ......