董 曦,李 磊
(1.中国船舶重工集团公司 第723研究所,江苏 扬州 225001;2.中国航空无线电电子研究所,上海 200233)
军用软件研制过程中,软件合格性测试是保证软件质量的重要手段。随着软件规模和复杂性的增大、软件开发交付周期缩短,软件合格性测试的工作强度也随之增大。然而,软件合格性测试是一项非常繁琐并且复杂的工作。如何才能提高测试的效率和质量已经成为软件测试工作人员最为关注的问题。军用软件研制能力成熟度模型,也称GJB5000A,提供了一个软件工程方法的框架。其中,GJB 5000A二级PPQA过程域为软件研制过程中的质量保证提出了指导。由此借鉴,将PPQA应用于软件合格性测试过程,同样能够极大地提高软件合格性测试的过程和产品质量。
GJB 5000A的全称是军用软件研制能力成熟度模型,它是一个为软件组织在其开发和维护过程中获得控制并向软件工程和优秀管理的文化进化提供指南的模型。GJB 5000A的体系结构由成熟度等级、关键过程域、过程能力和关键实践等内容构成[1]。图1描述了构成GJB 5000A的5个成熟度等级。
在GJB 5000A二级的7个过程域中,PPQA过程域主要为了客观的评价过程和产品,在评价过程中标识不符合项并与相关人员沟通,最终确保不符合项得到解决[2]。PPQA过程域相应的专用目标和专用实践如图2所示。
图2 PPQA的专用目标和专用实践
软件合格性测试是在软件配置项的真实或仿真运行环境下,主要考核软件功能之间能否协调正确地工作,是否满足软件研制任务书和软件需求规格说明的要求。测试的主要类型有:功能测试、性能测试、边界测试、接口测试、余量测试、安全性测试、恢复性测试、人机界面测试、强度测试、安装性测试、代码审查、文档审查等。
软件合格性测试有自己的生命周期模型,即软件测试过程。一般情况,软件合格性测试遵循着测试策划、测试设计与实现、测试执行、测试总结的过程,执行项目的过程有一定的项目管理活动作为支持,如:配置管理、质量保证、测量分析等[3-5]。软件合格性测试过程如图3所示。
图3 典型合格性测试过程
PPQA作为项目管理的一种,是对软件合格性测试的全生命周期进行质量保证活动。在软件合格性测试期间,QA人员依据检查单对软件合格性测试中产生的所有工作产品,如测试文档、测试代码等,以及测试过程、测试评审会等都要进行检查并建立记录,对于不符合项要及时交流确保解决。
在软件合格性测试的过程中,涉及的人员包括测试方领导、测试项目组长、测试人员、测试配置管理员、项目QA。在一些测评机构中,往往由测评中心QA担任所有测试项目QA,因此,本文人员角色划分也以此为例,如图4所示。
项目QA对测试项目中的每个参与者都有权进行审查。并且,QA人员有独立上报的途径,即不符合项归零过程中有意见不一致的情况下,可以与测试项目组长和测试方领导反映,由领导最终定夺。
图4 软件合格性测试角色划分
软件合格性测试的初期活动为测试策划。测试策划的主要工作为根据项目的实际情况,对被测软件的被测试项和测试类型有所定义,对被测项目所需要的人力、物力资源、技术特点等提出基本的要求,再根据部门可以划拨的资源进行统筹的计划制定。这一阶段所产生的测试工作产品主要有《软件合格性测试计划》。
QA人员所做的主要工作是对《软件合格性测试计划》的检查;主要关注点为是否符合国军标的要求,是否符合单位体系文件中的模板格式,是否给出了测试依据,测试是否充分,是否有对测试环境的要求,资源计划是否合理等。各单位可以根据实际情况本地化自己的检查单。
QA人员也要测试人员日常的测试过程做出审查,如周报、月报是否填写,月例会有没有召开。另外,对《软件合格性测试计划》评审会这项活动要审查,对于此过程的检查内容包括评审会召开时间是否合理、参与人员是否到齐等。
测试设计与实现的主要工作包括根据评审之后的《软件合格性测试计划》编写《软件合格性测试说明》,设计测试用例,编写测试代码,搭建测试环境等。《软件合格性测试说明》评审入库标志着测试设计与实现阶段的结束。
QA人员审查的主要内容有:对《软件合格性测试说明》文档内容是否与计划相符合,测试用例、测试代码是否正确、合理、有效、并且覆盖充分,测试环境是否达到测试要求等。现阶段的资源、进度实施是否与计划相一致等。
同样,QA人员也要测试人员的个人周报、月报是否填写,项目月例会有没有召开等做出审查。对于《软件合格性测试说明》的评审会这一过程活动的审查,基本与前期评审会一致。
另外,测试人员可以增加Review环节,互相审查对方的测试用例和测试代码,从技术角度排查出潜在问题,进一步加强质量控制。
测试执行阶段是通过执行所有测试用例,得出测试用例执行结果,根据结果分析并且与开发人员沟通,提出问题报告反馈开发方,回归测试直到所有问题归零、所有测试用例执行通过的一个循环过程。此时,QA人员应该关注测试人员测试的规范性、测试用例执行情况。检查是否所有测试用例都按照测试步骤逐一执行完毕,检查测试人员是否如实记录测试结果,检查测试过程是否符合软件测试计划的要求,检查合格性测试发现的BUG是否提交给责任人,检查责任人是否对测试发现的BUG修改文档或代码,检查软件修改后是否进行了回归测试等。对不符合要求的测试行为,给出不符合项,直到不符合项解决。
测试总结过程是为了评估测试效果和被测软件项,描述测试状态。测试总结阶段的产品为通过评审后的《软件合格性测试报告》。《软件合格性测试报告》是一份重要的文档,是根据实际测试全过程对被测软件的客观评价以及本次测试活动的总结。
对于《软件合格性测试报告》,QA人员可以关注其与国军标、体系文件的符合性,文档上下文、术语、概念的一致性,与其他文档的可追踪性。还应审查该报告是否描述了测试过程,是否给出了该软件的总体评估,是否给出了测试中发现的所有遗留的缺陷、限制或约束,是否描述了测试环境与操作环境的差异,是否对被测试软件的设计、操作或测试提出了改进建议,测试日志是否给出了测试执行的日期、时间、地点、人员、结果记录等。对于测试报告的评审,更应加强对参与人员、测试结论等方面的关注。
客观性是PPQA过程域实施中的要点之一。
1)QA人员的安排上面尽量保证其独立性。在条件允许的情况下,QA人员可以是在所有测试项目之外的独立组织。如果单位或部门人力资源紧张,QA人员也可是其他测试项目组同行。
2)QA人员使用的主要工具为检查单,检查单可以由项目组长和QA人员参考单位体系文件要求结合项目特点进行裁剪。QA人员在实施质量保证的过程中,必须严格按照对照模板中的检查项,逐一排查不符合项。
PPQA活动贯穿在整个软件合格性测试项目生命周期中,QA人员与测试项目组成员的交流、沟通必不可少。项目之初,制定项目各个检查单的时候,就需要QA人员与测试项目组长共同商讨得出。在发现不符合项的时候,QA人员更加需要与测试人员、测试组长进行交流,确保不符合项得以解决。在不符合项得不到解决的时候,QA人员还要有与测试方领导独立交流的渠道。
PPQA活动对于QA人员的要求较高。
1)QA人员必须对涉及软件合格性测试项目的所有国军标的理解。如:GJB 438B,GJB/Z 141,GJB 2786A,GJB 5000A,GJB 5236,GJB 439等。另外,每个被测单位、每个测评部门、每个测试项目都有属于自己的本地化要求,这就要求QA人员能够结合项目自身特点对检查单做出合理改动。
2)PPQA运用到软件合格性测试之初,必然会存在许多难度与挑战,对QA人员有着多方面的要求,往往需要一些综合或专项的培训工作。
本文简单介绍了GJB 5000A模型、PPQA过程域和软件合格性测试的基本知识,将 GJB 5000A二级PPQA过程域应用在软件合格性测试过程中,对具体实施方法和实施要点进行了阐述。该应用在实际软件合格性测试项目中,可以起到积极和重要的作用。
[1]GJB 5000A-2008, 军用软件研制能力成熟度模型[S]. 2008.
[2]石柱. 军用软件能力成熟度模型可重复级实施指南[M]. 北京:中国标准出版社, 2006.
[3]柳纯录. 信息系统项目管理师教程[M]. 北京:清华大学出版社, 2012.
[4]董威. 基于 CMM 的软件测试技术及其应用[D].上海:华东师范大学, 2005.
[5]朱艳. 基于 CMM 的软件测试管理支持系统研究[D]. 大连:大连海事大学, 2006.