摘 要:本文对当前的测试模型、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)