1
面向对象软件工程实践指南
1.2.9.2 9.2 测 试 类 型
9.2 测 试 类 型

从不同的角度,测试可以分为不同的类型。我们将按照测试阶段和测试手段介绍不同的测试类型。

9.2.1 按照测试阶段划分

从测试发生的阶段看,可以分为:需求分析审查、设计审查、代码审查、单元测试、集成测试和系统测试等。

需求分析审查、设计审查、单元测试中的代码评审及各阶段测试用例的评审都是通过对相关文档或代码的走读活动来实现的。虽然这种方法比较简单,但是实践证明,如果安排合理,也能够以较低的成本发现大部分的缺陷。通过检查方式而非执行代码来发现缺陷的测试称为静态测试。单元测试、集成测试及系统测试等通过运行软件来检验软件的动态行为和运行结果正确性的测试方法称为动态测试。

1)需求分析审查

需求规格说明书是系统设计、系统测试等的基础,也是整个项目规划、验收的基础。因此,对其进行检查,确定其中存在的缺陷对保障软件项目的成功具有突出的意义。软件需求规格说明书的评审是由评审专家组进行的,主要看其是否尽可能完整地、无歧义地描述了功能和性能需求,以及在实现上是否具有可行性。评审时经常以会议方式进行,通过将缺陷确认、整理、修改到评审专家组认可为止。

2)设计审查

对软件设计的审查是通过评审专家对设计文档进行预审后,在评审会议上与设计人员将问题一一确认来实现。

评审专家依据需求规格说明书审查设计是否覆盖到用户提出的每个用例,对子系统的划分、类的确定、类中属性和方法的确定、数据访问方式、安全性保障、性能保障等进行详细的审查。

3)代码审查

代码审查是通过代码走读的方式来实现的。代码走读是开发人员在对某个模块的代码(必须编译通过)完成编码后,进行的代码评审活动。代码走读前依据企业制订的统一标准,按照统一的流程进行。代码审查可以在不同的层面进行,单元审查是对一个方法或一个类,查找代码层面的错误;集成审查关注接口和流程,包括传入的参数检查、返回值检查及流程能否顺利地进行和正确集成等;第三个层面可称为系统审查,关注功能层面和业务逻辑。

4)单元测试

单元测试是对软件中的基本组成单位进行测试,检验其函数的正确性(包括功能正常、输出正确)。

一般来说,单元测试用例的编写最早可以在设计评审完成后就启动。单元测试用例编写的目的是覆盖性,覆盖的方法有:语句覆盖、分支覆盖、条件覆盖、条件组合覆盖和路径覆盖等。为了以最少的资源做最多的测试检查,首选路径覆盖的方法。路径覆盖是设计足够的测试用例,运行所测程序能够覆盖程序中所有可能的路径。

5)集成测试

集成测试是软件系统在集成过程中所进行的测试。其主要目的是检查软件单位之间的接口是否正确。

集成测试用例的编写要紧扣与程序相关的各个接口,使每类接口的数据流或控制流均通过接口,从而实现接口测试的完整性。注意:对同一数据流要分别进行正确数据流与错误数据流的用例设计,对边界值的输入最好有单独的用例。集成测试还应关注接口的性能问题,根据系统的性能需求还要设计相关的接口性能测试用例。集成测试的执行主要是借助测试工具——桩程序来实现。桩程序的编写最好由他人来完成,以防止一个人对接口定义理解有偏差而使意外发生。

6)系统测试

系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性以及性能等是否满足各系统的需求。除了验证系统的功能外,还需要验证系统的容错能力、错误恢复能力、安全性、性能等。

7)验收测试

验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。

除了上述按照不同阶段进行划分的测试类型外,还有几种测试也会安排,它包括:

1)回归测试

回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确,以及是否引发了其他的错误。为了保证软件修改后没有引发新的错误,原先的测试用例都需要再次执行。

2)Alpha测试

这是在系统开发接近完成时对应用系统的测试,它是由最终用户或其他人员在开发人员准备好的环境中进行的测试。

3)Beta测试

当开发和测试完成、准备发布前,将软件部署到用户的环境时中所做的测试,这种测试一般由最终用户或其他人员完成。

9.2.2 按测试手段划分

1)白盒测试

白盒测试是指基于代码的内部结构信息,采用某种覆盖准则,即覆盖全部代码、分支、路径或者条件的测试。白盒测试可以检验程序中的每条通路是否都能按预定要求正确工作。白盒测试可用于单元测试、集成测试中。

2)黑盒测试

黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性进行的测试。黑盒测试在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等。黑盒测试可以用于系统测试、验收测试中。