度量是改进过程的有效途径之一。通过对测试过程的度量,可以使测试过程规范化、可视化;对度量数据的分析,可以测量出测试过程的有效性及存在的问题,明确测试过程的改进方向,从而保证软件的质量。因此,对软件测试过程的度量研究具有十分重要的意义。
CMMI与软件测试
CMMI是美国卡耐基梅隆大学的软件工程研究所针对软件质量保证的核心—软件过程改进所提出的,它是一个成功的、广泛使用的过程改进模型。
众所周知,软件测试是软件过程不可分割的一部分,所以CMMI实际上也为软件测试过程改进提供了一系列的指导方针和关键原则。在CMMI连续表示中,验证(VER)和确认(VAL)过程域紧密的与软件测试联系在一起;而诸如配置管理(CM)、风险分析(RSKM)、量化项目管理(QPM)等过程域也同样包含了对测试过程改进的有力支持。
CMMI与度量
CMMI提供了度量和分析(MA)过程域,其目的是开发和维持用于支持管理信息需要的度量能力。MA实际包含了度量和分析两个步骤,度量在前,是为获得过程或产品的表征数据;分析在后,是对数据进行分析,发现不一致、发现趋势和发现问题。
CMMI的度量和分析流程主要分为3个部分:计划、收集和分析。在计划阶段,主要任务是度量目标的确定和目标的细化;在收集阶段,主要任务是按数据采集和存储规程进行数据的收集、数据完整检查;在分析阶段,主要任务是按分析规程进行数据分析、存储数据和结果,以及报告结果。MA过程域定义严格,流程清楚,目标明确,可以用它来指导软件测试过程的度量活动。
软件测试过程
按照MA的指导,任何对过程的度量都是建立在清晰的过程定义上的,因此,必须对软件测试过程有一个准确的定义。传统的软件测试过程包括:测试计划、测试设计、测试开发和测试执行等阶段,每个阶段都有一系列的任务。但是传统的软件测试过程定义无论是从测试范围还是测试工作方式上都存在着明显的不足,不利于进行过程度量,而CMMI则对传统的软件测试过程进行了扩充。因此,我们提出了一个基于CMMI的软件测试过程模型(software test process model,STPM),如图1所示。
STPM有如下几点改进:
(1)软件测试不再只是对程序代码的测试工作,而是包含了所有在软件开发过程阶段产出物的测试工作,这扩展了测试工作的范围,更有利于发现软件开发中的缺陷;
(2)测试过程与整个软件开发过程是并行的,扩展了测试过程的工作方式;
(3)清晰的定义了过程的输入输出流,为整个过程的度量奠定了基础;
(4)将测试的结果纳入到了软件开发的缺陷管理机制中,扩展了测试的作用。
度量目标
通过对STPM的分析,可以确定3类度量目标:①对测试产品的度量,这主要是对应STPM的输入,包括需求规格说明、详细设计说明、系统设计说明以及程序代码等的度量;②对测试过程产品的度量,这主要是对应STPM的输出,包括测试用例、测试报告等的度量;③对测试过程本身的度量,主要是对应STPM的执行状态,包括时间状态、环境状态等的度量。