软件测试过程度量研究
上面的映射关系分为目的层、问题层和度量层,这样,CMMI也是目标驱动的。由于GQM方法是一套已经被证明成功的度量元选取方法,所以在生成了CMMI到GQM的映射后,由CMMI导出度量元是可行的。将CMMI与GQM的映射关系定义为C—G模型,并将应用到C—G模型中的CMMI相关软件测试过程域定义为STPA(software test process area),C-G模型和STPA为度量元选取和细化提供了理论依据。
CMMI不是专门为改进软件测试过程而出现的,所以将STPA引入进入C—G模型中时,需要有一定的剪裁和适用的选取原则,才能保证度量元的有效性。本文从过程域、实践、文档、公共特性和相似结果5个方面,根据STPM,提出度量元的选取和细化遵循原则。
原则1 过程域剪裁。每个STPA都有几个相关过程域,如果几个STPA同时都包含一个确定的过程域,那么该过程域应该保留并合并;如果STPA涉及的相关过程域与软件测试相关性不强,那么该过程域应该完全删除不予考虑。这样既可以保证STPA引申出来的软件测试实践的完整,又可以抓住STPA的核心。
原则2 实践剪裁。CMMI面向的是整个软件过程改进,所以在分析STPA时:①某些关注整个软件过程的实践,关注重点都要置换成软件测试过程,并要以特定的测试输入输出作为基础;②某些与软件测试无关的实践,或者是涉及到过程域的定义、维护以及审查等实践,都可以被剪裁掉;③对某些零散的实践,如果表示的都是同一个目标,那么应该将其合并;④对子实践,如果直接度量元仍然无法确定,应允许再进行拆分。
原则3 文档剪裁。每个STPA都包含了大量繁琐的文档,不利于管理和维护。因此,应该只保留与测试输入输出有关的计划、规程、标准和报告等文档,这也是将整个度量和分析过程开发成自动化系统时所期望得到的文档数据。在保留的文档中,还应该注意相关文档的合并消除,降低文档之间的冗余关系。
原则4 公共特性剪裁。每个STPA都有许多执行能力公共特性,这些内容在企业进行全面过程改进时或许有用,但是在进行软件测试过程度量时,有些显得无关和没有必要。对此,可以采取以下3种方法:①纳入到相关STPA中,例如人员、工具等资源的管理,可以在配置管理中统一度量;②直接作为该过程域的度量目标,例如过程状态管理、维护,可以作为对测试过程本身的度量;③完全放弃,例如人员培训、角色分配等。
原则5 相似结果的合并。通过对不同的STPA分析,可能会对软件测试过程的某个属性重复度量,这时就必须涉及到相似度量元的合并。主要原则有3点:①如果度量元完全重复,那么应该只保留一个;②如果度量元属于同一度量目标,那么两者都应该保留并归为一类;③如果这个度量元是直接度量和间接度量的关系,那么应该将间接度量置于直接度量之下,并与该直接度量的其它间接度量进行合并。
应用案例
现以STPA中与软件测试联系最为紧密的确认(VAL)过程域为例,分析软件测试过程的度量。VAL的目的是证实产品或产品构件置于预期的环境时满足预期的用途。在STPM中,产品或产品构件就是被测试的产品,预期的环境是搭建的测试平台,而用途则是产品的需求。因此,VAL在C-G模型的目的层是:证实被测试的产品置于搭建好的测试平台下是否满足产品预期的需求。
按照原则1和原则2,集中分析VAL的两个特定目标:确认准备和确认产品。确认准备在STPM 中对应的是测试计划和测试设计部分,输入主要有测试产品和产品需求等,输出主要有需求确认计划和产品确认计划等。确认产品在STPM中对应的是测试执行和结果分析部分,输入主要来源与确认准备目标的输出,而输出主要有确认结果、确认报告和对查表等。因此,VAL在C-G模型的问题层是:01是否准备好了确认产品和确认环境?02确认的过程和结果是否有效?在明确了VAL的目标以及输入输出后,可以根据VAL的具体实践以及实践说明展开其在C-G模型中的问题层,结合原则2、原则3和原则4,将上述的VAL目标映射到C-G模型的度量层:M1产品规模度量;M2需求规模度量;M3测试用例规模度量;M4测试用例的有效性度量;M5测试结果的度量;M6测试工具使用度量;M7测试过程进度度量;M8测试充分性度量;M9测试平台稳定性度量。
其中M1和M2属于对测试产品的度量,M3、M4、M5和M6属于对对测试过程产品的度量,M7、M8和M9属于对测试过程本身的度量。进一步分析可以得到VAL对于STPM 的直接度量元。
事实上,在VAL的分析过程中,一些直接度量元的导出是以间接度量元为基础的,这些信息应该与度量元的数据收集方法、数据单位等一起写入度量元的属性定义中。
通过对软件测试过程的度量和分析能够提高软件测试的有效性,保证软件的质量。本文在清晰的软件测试过程定义下,以CMMI这个成功的过程改进模型为基础,对度量目标和度量元的有效选取进行了研究。下一步的工作重点,是定义数据采集和存储规程进行度量数据的收集,以及定义分析规程来分析数据,提供度量结果和改进措施。最终,还需要开发一个自动化系统来支持整个度量和分析过程。而所有研究的基础,则是对软件测试过程度量元的选取,这也是本文研究的意义所在。
图1 软件测试过程模型

图2 CMMI与GQM的映射关系模型