摘要:本文对CMMI的软件测量和软件测试中的模型作了简要介绍。通过CMMI与软件测试的分析,总结了CMMI模型对软件测试的支持和扩充,并对基于CMMI的软件测试流程的做了初步探索和研究,旨在提高软件测试的效率和保证软件开发的质量。 关键词: CMMI 软件测试
Abstract: In this paper the software measurement of CMMI and the model of software test of the model are briefly introduced. After the analysis of the software testing and CMMI, this paper summarizes the expansion and support of software test to the model of CMMI, and the softwate test process is preliminary explored and researched on the basis of CMMI, which is to improve the efficiency of the testing and make sure the quality of software developing. Key words: CMMI software test
0 引言
在软件开发过程中,测试是非常重要的阶段,是软件质量保证的重要手段。越早发现软件中存在的问题,开发费用就越低,软件质量越高,软件发布后的维护费用越低。软件测试得到了软件开发组织的普遍重视,并形成了一整套比较成熟的测试理论和技术方法。随着软件开发技术的不断发展,软件系统的规模和复杂性不断增加,传统的软件测试理论和技术已经不能够很好地满足产品质量、开发成本以及研制周期等方面的需求。
通过对测试过程的度量,可以使测试过程规范化;对度量数据的分析,可以测量出测试过程的有效性及存在的问题,明确测试过程的改进方向,从而保证软件的质量[1]。本文主要从软件测试的组织和管理角度,阐述了CMMI范对软件测试模型的应用和扩充,对于如何发展和完善软件开发中的测试工作进行了初步探索。
1 CMMI 概述
CMMI(CapacityMaturityModel Integrated),即能力成熟度集成模型,是针对软件质量
保证的核心——软件过程改进所提出的一个成功的、广泛使用的过程改进模型。其主要目的是消除不同模型之间的不一致和重复,降低模型改善的成本。软件测试是软件过程不可分割的一部分,所以CMMI也为软件测试提供了一系列的指导方针和关键原则。在CMMI连续表示中,验证(VER)和确认(VAL)过程域与与软件测试紧密联系在一起[2]。
“验证”的目的是保证工作产品满足规定要求,该过程域有三个特定目标:准备验证、
执行同行评审和验证选择的工作产品,按照要求对产品和中间产品进行验证。
“确认”的目的是证明产品或产品构件被置于预期的环境时能够满足其预期的用途,该过程域有两个特定目标:准备确认,确认产品或产品构件。
与以往的模型相比,CMMI提高了对测量的关注。在CMMI中涉及到测量的概念有:测量和分析过程域(M&A)和工程过程域中的测量两部分。它是针对所有活动需要采集数据,进行分析设置的活动,该活动要求项目组在开始时,考虑各种活动的性能和质量的表征参数,设置合适的度量方法,对这些采集的度量数据进行分析。度量和分析活动决策和行动的依据。
2 传统的软件测试模型
软件测试中比较常用的是V模型和W模型。 2.1 V模型
V模型是最具有代表意义的测试模型 。经典的V模型阶段可以分为单元测试、集成
测试、系统测试。该模型体现了软件开发过程和软件测试流程的关系,软件测试流程是软件开发过程的一个组成部分习[3]。
需求分析 验收测试 概要设计 系统测试 详细设计 集成测试 编码 单元测试
图1 V模型
V模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系 。 从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系 。 左边依次下降的是开发过程各阶段,与此相对应的是右边依次上升的部分,即各测试过程的各个阶段。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清
楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。
V模型也有自身的局限性。V模型适用于所有类型的开发过程,但并不一定适用于开
发和测试过程的所有方面。V模型的不足之处主要表现在以下四个方面。 1) 测试是开发之后的一个阶段。 2) 测试的对象就是程序本身。
3) 实际应用中容易导致需求阶段的错误一直到最后系统测试阶段才被发现。
4) 整个软件产品的过程质量保证完全依赖于开发人员的能力和对工作的责任心,而且上一
步的结果必须是充分和正确的,如果任何一个环节出了问题,则必将严重的影响整个工程的质量和预期进度。
2.2 X模型
X模型是对V模型的改进。X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。已通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。
图2 W模型
X模型还定位了探索性测试(右下方),往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。X模型包含了测试设计的步骤,就像使用不同的测试工具所要包含的步骤一样。X模型并不要求在创建可执行程序(图中右上方)的一个组成部分的集成测试之前,对每一个程序片段都进行单元测试(图中左侧的行为)。X模型的强项在于解决了软件产品开发的交互、频繁重复的集成以及需求文档的缺乏等问题,这样便缩短了软件开发的周期。 X模型的局限性在于没有很好地定义测试的过程。X模型没有明确的需求角色的确认,在没有足够多的需求的前提下,系统开发还可以继续一下去。X模型可能会提倡付出额外的努力来进行更多的实践行为。X模型并没有能够很好地遵循一个开发的过程,过程的成熟度能
力较低,不便于进行缺陷的跟踪。由于X模型没有被文档化,其内容一开始需要从在V模型的相关内容中进行推断。X模型中测试和开发的结合程度不够强,测试和开发的松散关系容易导致潜在的返工风险。
3 CMMI模型和软件测试
3.1 CMMI模型对软件测试的支持和扩充
CMMI模型主张在开发过程中注重对过程和产品的度量,以量化的形式提供对管理过程的支持,以及对过程进行相应的评估和改进。这实际上就是对软件测试技术的一种应用和扩充。CMMI模型将测量和分析作为一个单独的过程域,充分体现了对开发过程中的测量技术的重视,该过程域的目的就是开发和维持度量能力,以便支持对管理信息的需要[4]。
测量和分析过程域共有三个目标,其中两个为特定目标,一个为共性目标。
1) 协调测量和分析活动。模型中给出了四个方面的特定实践:确定测量对象;详细说明度量值;规定数据收集和存储规程;规定分析规程。该目标中所针对的测量对象既包括组织所开发出的软件产品、半成品以及过程产品,也包括对开发过程本身的度量。
2) 提供度量结果,以便处理信息需要。模型中给出了以下几方面的特定实践:收集度量数据;分析并解释度量数据;管理并存储度量数据、度量规范和分析结果;通报分析结果。在这一目标中,主要关注的是对测量结果的分析和使用。基于CMMI的集成化过程改进和评估,提出了建立开发过程数据库的思想,作为组织进行过程改进的基础。
3) 共性目标,即将测量和分析活动制度化为可管理的过程。主要关注的是对软件测试和过程度量活动的管理以及制度化。实际上就是把测量和分析活动制度化为一种组织级的行为,在整个组织的范围内加强了对软件测试和过程度量活动的组织和管理工作。
从以上分析可以看出,CMMI 模型主要从以下三个方面扩充传统的软件测试技术: 1) 从单纯的对软件产品的测试活动扩展为软件产品的测试和开发过程的度量。
2) 软件测试由原来的事后测试行为发展为全过程测试和分析,成为一种缺陷预防的有效方式。与传统的软件测试相比,全过程测试有效地降低了产品的质量风险,提前对软件产品缺陷进行规避,这不仅缩短了对缺陷的反馈周期和整个项目的开发周期,而且也大大降低了对软件产品的维修和维护费用。
3) 软件测试与开发过程的其他阶段不再是串行工作方式,而是与整个开发过程并行进行。 CMMI 模型中所描述的软件测试和过程度量工作与整个开发过程是并行进行的,是一种基于并行工程的测试和度量行为[5]。基于并行工程开展的软件测试活动,存在于软件生命周
期的各个阶段,从而可以有效缩短开发周期,降低质量风险,并且可以及时吸取经验教训,提供对过程改进的支持。
3.2基于CMMI的软件测试流程的探索
基于CMMI的测试流程从全局的角度来看,主要是在V模型的基础上在需求分析、概要设计和详细设计阶段增加了需求测试、概要设计测试和详细设计测试3个环节,每个测试环节里面的具体过程又遵循X模型的流程。
这3个环节可以分别在需求分析阶段、概要设计、详细设计开发阶段之后进行,也可以并行或者交叉进行,从而缩短开发的周期同时确保产品质量。这样可以使需求阶段、概要设计阶段、详细设计阶段的缺陷很快发现,而不必等到在后续的阶段,因此可以降低修复错误的风险和,减少软件成本。该测试流程整体上符合CMMI的确认和验证过程域的关键实践,即需求测试、概要设计测试和详细设计测试有效实现了验证和确认的准备阶段和同行评审阶段,后续的单元测试、集成测试、系统测试和验收测试则实现了验证和确认的执行阶段。每个具体的测试环节由测试设计、工具配置、执行测试和子模块的集成、子模块的探索性测试和模块的整体测试和最终的验收测试组成,具体的测试设计又很好地实现了CMMI的验证和确认过程域的目标。
4 小结
对软件测试过程的度量和分析能够提高软件测试的有效性,保证软件的质量。CMMI和软件测试都在不断发展和成熟,因此CMMI对软件测试的模型也是不断改进和完善的,其目的是提高软件开发的效率和软件产品的质量,每个具体测试环节的设计细节和执行细节有待进一步深化。
CMMI 除了测量和分析过程域之外,在量化过程管理过程域中,从定量化的角度对软件开发过程的管理和组织活动给出了支持,从定性到定量的转化,形成了对软件测试和过程度量技术的一种更高层次上的应用。随着软件开发组织过程能力的不断提高,对软件测试及软件测试管理的要求也越来越高,软件测试和度量技术也将会得到不断的发展和完善。
参考文献:
【1】 万邦睿,丁晓明. 基于CMMI的软件的软件测试度量过程研究【J】 计算机工程与设
计, 2007,28(11):2530-2532.
【2】 侯红,郝克刚. CMMI的软件测量【J】 计算机科学, 2006,33(11):289-291. 【3】 弓英,吴旭丰.一种改进的软件测试模型【J】科技信息, 2009,9:50-52.
【4】 毕春兰. 软件开发过程中CMMI的软件度量【J】 科技情报开发与经济,2007,17(33):
202-204.
【5】 邢彬彬,姚郑. CMM/CMMI与软件生命周期模型关系的研究【J】 计算机应用研究,
2007,24(11 ):66-68.
因篇幅问题不能全部显示,请点此查看更多更全内容