1
面向对象软件工程实践指南
1.2.9.1 9.1 软件测试的主要内容
9.1 软件测试的主要内容

为了使软件测试能够真正发挥作用,并与整个开发过程相配合,软件测试工作必须要通过制订测试计划、设计测试、测试准备、执行测试、评估测试几个阶段来完成。

9.1.1 测试计划的制订

测试计划是对测试的对象、测试中需要的资源、测试的时间安排等进行规划的过程。通过确定任务、识别和分析风险、安排资源和确定进度,并以文档的方式记录下来。当然,测试计划也不是静态的,它可能在早期作为整个开发计划的一部分,进行较为粗略的制订,而后随着项目的进行,不断完善,并在执行过程中进行动态的调整。一般来说,测试计划应该包含以下几个方面。

(1)测试范围,也就是测试对象的界定。

(2)风险的确定。

(3)资源的规划。

(4)时间进度的制定。

9.1.2 测试用例和测试流程的设计

测试开始前需要设计测试用例,以及具体的测试流程。测试的设计需要依据测试需求进行。

1)测试需求分析

对测试需求进行分析时,需要对需求进行分解,查看各种文档,与用户进行交流。测试需求分析中考虑的问题如下:

(1)确定软件的主要用例。

(2)对每一个用例,确定其输入、输出、限制以及要达到的性能指标,形成测试需求。

(3)对每一个测试需求,判断其属于的测试类型(功能、性能、安全测试等)。可以构造测试跟踪需求矩阵,针对每一个用例,列出其多项测试需求以及相应的测试类型。

(4)对于整个软件,考虑是否需要进行如下的测试:①整个系统的性能测试;②整个系统的安全性测试;③整个系统的兼容性测试;④整个系统的容量测试;⑤系统的界面测试;⑥系统的安装测试。

2)测试用例的设计

测试用例指对一项特定的测试任务的描述,体现了测试方案、技术、策略和具体的方式。值得提出的是,测试用例都是从数量极大的可用测试方案中精心挑选出的,能够最大限度发现软件缺陷的方案。由于测试用例的执行需要耗费时间,因此,过多的测试用例可能会需要过长的时间,然而,过少的测试用例可能会带来软件中潜在的、未发现的缺陷数量过大的问题,因此,如何平衡这两方面的要求,进行合理的测试用例的选择,一直是软件测试工作的重点和难点。

评价测试用例的好坏有两个标准:①是否可以发现尚未发现的软件缺陷?②是否可以覆盖全部的测试需求?

9.1.3 测试的准备

测试的准备是指准备测试环境、准备测试数据、准备测试脚本和测试辅助代码等过程。

1)准备测试环境

(1)测试规程准备。

(2)技术准备。

(3)配置软件、硬件环境,包括测试工具。

(4)人员确定。

2)测试数据准备

测试数据中包括测试输入以及测试输出,它具有两种情形:

(1)正常事务的测试数据。

(2)引发异常的测试数据。

3)测试脚本的准备和测试辅助代码的编写

在测试过程中,有些时候也需要进行代码的编写工作。

在集成测试中,需要根据测试策略编写驱动模块和桩模块。驱动模块用以模拟被测模块的上级模块,驱动模块接受测试数据,把相关的数据传送给被测模块,启动被测模块,并接收和记录相应的返回数据。而桩模块模拟被测模块工作过程中所调用的模块,一般只进行很少的数据处理。

随着自动化测试工具的流行,我们需要编写测试脚本,从而可以使测试能够自动进行。许多工具中提供了通过“录制回放”的方式生成自动化测试脚本的方法,但是它不够灵活。因此,测试人员可以利用脚本语言自行编写测试程序。

9.1.4 执行测试

执行测试是按照计划执行所有的测试用例,并观察其测试结果的过程。在执行测试过程中,应该按照模版填写相应的信息。如果采用了自动测试工具,那么需要能够熟练使用这些工具完成测试过程。

9.1.5 测试评估

当测试完成后,需要对测试工作进行一个总结。总结主要从两个方面进行,一个是覆盖性,一个是测试质量。

(1)测试的覆盖性。覆盖性回答的是“测试的完成程度如何”这一问题。覆盖性可以从两个角度来看待,一个是从需求的角度,一个是从代码的角度。从需求的角度,就是要求每个需求是否满足都被测试到;从代码角度,就是要求按照一定的标准,所有的代码都被测试到。

(2)测试的质量。测试质量评估的是测试过程发现缺陷的能力。