CMM软件测试H模型研究

时间:2022-07-26 05:18:49

CMM软件测试H模型研究

摘 要:本文对当前的测试模型、CMM(Capability Maturity Model,能力成熟度模型)与工作流技术进行了研究和分析,提出了在CMM软件开发过程中,采用改进型H过程模型进行软件测试,该模型能很好地解决CMM测试管理环境中的测试流程定义、解释执行和监控等相关问题,在测试过程中始终贯穿着敏捷思想,对中小型软件开发的测试有着很好的适用性。

关键词:软件测试;敏捷;H模型;CMM;工作流

中图分类号: TP311.52 文献标识码:A

1 引言(Introduction)

随着软件产品需求的增长与软件开发能力的增强,软件质量问题亦变得尤为重要。近年来,以软件测试为中心的软件质量保障技术在软件开发中得到迅猛发展,已成为必不可少的软件质量保障手段。软件开发是一个系统工程,软件测试的目标是力求以最少的人力、物力、财力、开发时间,尽可能多地检测、分析、预测出软件开发中潜在的各种错误和缺陷。一个好的软件测试模型和测试方法是有效实施软件测试的基础,将直接影响测试结果的准确性和有效性。

为提高测试模型的有效性,本文阐述了在基于CMM的项目开发过程中,研究一种基于工作流技术的较为高效的软件测试模型及软件测试流程。该模型及测试流程能合理地将测试过程划分为各个测试阶段,并有效实施测试各阶段中的测试活动,使测试工作覆盖整个软件项目的开发生命周期。

2 CMM概述(CMM summarize)

自20世纪70年代中期以来,随着软件开发行业的不断发展,软件开发规模越来越大,而软件开发质量却越来越难以保证,因而出现了严重的软件危机。提高计算机软件产品的生产率和质量成为了软件工程领域研究的一个焦点,探索新的软件开发方法和软件测试技术势在必行。1987年前后,美国卡内基・梅隆大学软件工程研究所的Watts Humphrey等人,为了进一步提高软件开发质量,提出了软件过程、软件能力成熟度等级等概念及SW-CMM,即目前简称的CMM(Software Capability Maturity Model软件能力成熟度模型)。

CMM可以科学地评价软件开发单位的软件能力成熟等级,客观地反映其软件在开发水平,同时,CMM能帮助软件开发单位进行软件能力自检,促使软件在开发过程不断完善和改进。这种内外共用的评价机制,确保了软件开发质量,提高了软件开发效率。在软件开发领域,CMM已经越来越受到重视。

CMM共分为5个级别,以目前业界的通行标准,软件质量可用每千行源代码所包含的Bug数来衡量。在CMM各等级中,一级11.95个,二级5.52个,三级2.39个,四级0.92个,而五级则只有0.32个[1,2],可见,随着CMM级别的提高,软件开发的可靠性也有了数量级的改进。目前,在参加了CMM认定的中小软件开发单位中,大多数通过CMM二级或三级。

3 工作流技术(Workflow technology)

工作流管理技术拥有可分离性、可重用性等特点,有着独特的业务逻辑与过程逻辑。为了进一步提高产品生产率,工作流技术已经被逐步应用于过程自动化以及应用系统集成中。在软件开发领域中引入工作流技术与工作流管理系统,不但能够降低软件开发风险,而且能够使业务流程的实现代码集中统一,不再是散落在各种各样的系统中,加快应用开发,代码更容易维护,提高对迭代开发的支持。在工作流管理系统中,可以较容易地部署新业务流程,通常采用迭代的方式开发,因此,把工作流技术应用在敏捷开发与测试中,能增强有效性,使开发风险更低[3]。

4 软件测试过程模型和选取策略(Software testing process model and selection strategy)

目前,比较常用的软件测试过程模型主要有 V 模型、W模型等。

V模型清晰地描述了测试和开发过程各个阶段之间的对应关系,是最具代表意义的测试模型。但V模型容易让人认为测试只能在软件开发之后进行,其原因是,V模型把系统开发过程划分为具有固定边界的不同阶段。同时,V模型也没有明确测试设计,使得直到最终的验收测试阶段才发现软件开发初期的错误,造成更大的开发代价。

W模型虽说在V模型基础上有改进。但实质上,V模型和W模型所出现的问题也都是相似的,两者都认为软件开发是需求、设计、编码等固定行为和活动,这类项目中,所有开发和测试人员都要按照事先定义好的软件开发顺序开展工作。而实际上,软件开发不可避免地会产生阶段性需求变动,文档亦要求时时更新,软件开发活动在大部分时间内可以交叉,这样V模型和W模型就难以实施,二者只适用于那些需求非常明确的项目。

H模型较好地体现了敏捷测试原则,提倡“尽早测试”“全程测试”“独立测试”和“迭代测试”。H模型运行中,只要测试准备活动完成了,测试执行活动就可以开始,其测试流程可以是任意的开发流程,其他流程的进展可以及时地触发测试就绪点。H模型很好地解决W、V模型存在的问题,达到更好的测试效果。H模型对软件测试过程作了定义,将软件测试过程划分为测试需求、策划、设计、执行、总结五个阶段,如图1所示。

H模型虽然兼顾效率和灵活性,但它没有提出具体的应用模型,而单纯的理论测试模型只能实现对软件测试过程进行抽象描述,因此必然存在有未被此测试模型涉及的特性,而工作流技术能很好地解决测试管理环境中的测试流程定义、测试流程解释执行和监控等相关问题,从而实现预期的业务目标。基于H模型的理论,将工作流引入到H模型中,重新对软件测试的流程进行系统的分析,提出一种适用CMM软件项目开发的软件测试流程,并构造出一个以任务分配为驱动的CMM软件测试管理应用模型。

5 基于工作流的CMM软件测试H模型(The CMMsoftware testing H model based on workflow)

CMM在提高软件开发质量方面的作用已经得到广泛认可,但CMM只是对项目开发提出了要求,至于具体实施过程,还需要更加行之有效的实施方法、技术和工具的支持,为使开发业务过程的部分或全部实现自动执行,引入工作流技术。

5.1 工作流元模型[3]

工作流管理联盟定义的过程元模型PDM(Process Definition Meta-mode)的结构, 定义工作流语义模型的构造和规则,描述工作流模型内部包含的各个对象以及对象之间的关系和属性,如图2所示。

5.2 CMM软件测试H模型

在CMM开发模式下,结合可行性和易用性,以H模型为基础,结合工作流技术,针对CMM中小软件开发的实际工作情况,在原有研究基础上建立软件测试管理应用模型[4],如图3所示。

这个模型中,软件开发与测试并发执行,构成H模型结构,核心部件为工作流引擎,它负责执行任务分配,该模型强调尽早测试等敏捷软件测试原则,其测试基本流程为:

(1)测试用例。由测试及设计人员共同建立合格的测试用例库,作为测试任务分配的对象。

(2)工作流引擎。测试工作流引擎由任务分配触发,制定相关工作流各阶段的测试方案,并由专家进行测试方案评审,评审通过后,由测试员进行测试执行。若测试结果无错误,则执行相关的测试评估与度量,填写相关文档,相关测试用例关闭;若测试有错误则产生相关缺陷。

(3)缺陷审核。产生的缺陷如果经审核是一个待修正缺陷,则作为修正的任务分配对象。

(4)缺陷修正。任务分配触发缺陷修正工作流引擎,由软件设计人员进行修正执行,修正确认完成后进入回归测试。待回归测试的缺陷又成为任务分配的新对象。

(5)迭代测试。回归测试再次触发工作流引擎,回到(2)迭代执行,如此往复直至无缺陷并关闭。

5.3 测试任务分配

依照计划、执行、检查、调整的原则进行测试任务的分配,要求在执行任何测试前必须有相应的测试计划和测试用例,明确测试活动以及测试评估所需要的时间和资源,然后进行测试人员安排和测试任务分配等[5]。如图4所示。

当测试任务发起人发起一项测试任务后,将该任务将传递给测试任务承接人,由承接人进行任务处理。承接人完成任务处理后,交还给测试任务发起人确认,如果测试任务确实已完成,由测试任务发起人关闭该测试任务。如图5所示。

5.4 测试用例缺陷状态变迁

把测试用例分静态和动态两种状态,这样可以支持多轮测试。当一个测试用例经过任务分配后,测试用例状态则由静态转为动态,在该模型中,只有动态测试用例才参与真正的测试。动态测试用例主要包括测试用例的状态信息、测试报告内容、测试结果确认等信息,可用NO Run(尚处在设计阶段或尚未被执行)、Passed(已成功)、Failed(已失败)、 Blocked(设计出问题)四个状态来跟踪测试用例的执行情况,而静态测试用例只包括测试逻辑和测试数据。

软件缺陷的产生可能发生在软件生命周期的每个阶段,而且这种软件缺陷可能是由上一个阶段的工作失误造成,所以,对软件缺陷实行跟踪管理在整个软件开发过程中都是非常必要的。在理想状态下,能够根据测试人员的预定要求,在测试之前对软件缺陷的状态以及缺陷状态之间的流换路径进行设置[6]。

缺陷状态周期分成可分为六个态,分别是open态、working态、verify态、cancel态、defer态和close态。其中open态标识新出现的缺陷或没被修改的缺陷;working态标识软件开发人员正在修改和纠正的缺陷;verify态标识软件设计人员已修改完缺陷,并请求结果验证;close态标识缺陷已被修正,否则将其状态重置为open态;cancel态标识的是由测试人员发现并填报的一个存在的缺陷;defer态说明,如果该缺陷在当前条件下修正则系统代价过高,如果该缺陷的优先级不高,则缺陷修正可以推迟。如图6所示。

6 结论(Conclusion)

基于工作流的CMM软件测试H模型将测试过程从开发过程中适当的抽象出来,作为一个独立的过程进行管理,在CMM规则框架下较好地体现了尽早、全面、全过程、迭代测试等敏捷测试思想。该模型能很好地解决CMM测试管理环境中的测试流程定义、解释执行和监控等相关问题,使整个测试过程更加清晰,节约了开发时间,使测试活动更加合理,有效保证整个软件产品的质量,对中小型软件开发的测试有着很好的适用性。

参考文献(References)

[1] 俞磊,等.基于CMM-3的软件测试过程模型的研究[J].计算机与数字工程,2011(7):79-82.

[2] 郑晓霞.基于CMM的工作流管理系统的研究与实现[D].西安:西安理工大学,2007.

[3] 赵瑞东,等.工作流与工作流管理技术综述[J].科技信息,2007(8):105-107.

[4] 张晓雯,徐东.基于工作流的软件测试H模型研究[J].软件导刊,2013(2):24-26.

[5] 郑小军,等.基于工作流技术的软件测试流程定义与监控[J].计算机应用研究,2007(2):43-45.

[6] 吴慧韫.基于工作流的软件测试管理系统研究与设计[D].南昌:南昌大学,2005.

作者简介:

徐 东(1972-),男,硕士,讲师.研究领域:计算机视觉与人工智能、计算机教育.

上一篇:基于粒子系统的交互式叶脉生成 下一篇:高中数学与高等数学的对比研究