2022年12月

软件测试是一个工程

属于软件质量控制、质量保证的一部分。由于软件的复杂性,软件测试需要分出层次来,并由不同的人完成不同的测试任务,在不同层面不同维度和角度保证软件按照设计和预期运行。

软件测试并不是银弹,不能保证软件100%没有问题。但是组织良好的软件测试工程,相比随意和混乱的测试甚至不测试,能够以比较低的成本发现大部分的软件缺陷,保证软件质量。

软件测试按照不同的层级,分为:单元测试, 系统(功能)测试, UAT测试, 生产测试, 回归测试

单元测试

单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。这部分测试过程由负责开发相应软件模块单元的开发人员执行,一般软件都会要求在源代码层面,单元测试能够测试(覆盖)到大部分的软件源代码。比如Salesforce要求部署到生产环境的代码必须有75%的代码覆盖率。

系统(功能)测试

一般会把功能测试和系统测试分开,但是实际上这些测试过程都由软件测试工程师执行。功能测试偏向每个功能运行的正确和准确,是从细节的角度解读测试;而系统测试则偏向整个软件系统的整体运行,包含一些非功能性测试(例如响应时间、安全等),是从整体的角度解读测试。但是不论功能测试或者系统测试,都是从逻辑的层面确保软件的每个功能和整个软件系统的正常运行。

UAT测试

UAT测试,即用户认可测试,必须由将使用软件的最终用户进行。测试将模拟业务中的实际事件和日常使用情况,因此您可以确认该软件是否满足用户的需求。UAT测试是从业务的层面出发,保障系统的满足实际业务需求。

生产测试

在生产环境中重复进行系统(功能)测试的一部分测试,这将确认代码和配置是否已从测试或沙盒环境正确转移到生产环境中中。建议在此步骤后重复进行 UAT 测试。

回归测试

一旦发布并安装了新的软件更新,或者检测到并修复了错误,都应该进行回归测试。即从头到尾对受升级或者修复错误影响的软件部分从头到位测试一遍(回归)。它确保所有以前的使用和过程在进行更改后仍然正常有效地运行。

可以看到,不同层次和类别的测试,有不同的角度和目的,也由不同的人员执行。让软件开发人员或者最终用户直接完成所有的测试工作,都是不可靠的。因为他们掌握的知识技能和他们的背景以及经验,不足以应对整个复杂的分层次的软件测试工程。