王勇利 严 平
(中国人民解放军91404部队评测中心,河北 秦皇岛066000)
软件配置管理(SoftwareConfigurationManagement)又称为软件建构管理或软件形态管理,简称软件形管(SCM)。软件配置管理界定软件组成项(Item)为软件配置项(SoftwareConfigurationItem,SCI)。软件配置管理通过管控软件生命周期内的各配置项的变更(版本控制)、维护配置项不同版本之间的关联及不同配置项各版本之间的关联,实现在任意时刻任何实体的可追溯性。软件配置管理为软件研发与维护提供了一组可控化的活动准则和管理方法,其贯穿于软件的整个生命周期。
独立的软件测试工程化晚于软件工程,其理论、方法和许多技术均借鉴与软件工程。软件测试中所引入的配置管理是软件配置管理的子集,作用于测试活动的各个阶段。其管理对象包括测试版本、测试计划、测试用例(方案)、测试工具、测试环境、测试结果(记录)等实体。软件测试配置管理是测试项目管理的重要组成部分,能在测试项目开展过程中提供有效的版本控制、确保测试产品共享、为并行测试提供必要的管理支撑。
软件测试配置管理的内涵包括[1]:
(1)在测评项目的整个生存期内,对测评项目进行配置管理以保证工作产品的完整性。
(2)测试组应编制测评项目配置管理计划,对配置管理计划进行评审,并按计划执行。
(3)测评项目的配置管理应保证:a)所选定的工作产品及其描述、测试工具和测试环境等应是明确标识的、可受控的和可用的;b)已标识的工作产品的更改和发布应是受控的;c)基线的状态和内容应能够通知到各相关人员。
配置项为配置管理设计的硬件、软件或者两者的集合,它在配置管理过程中作为一单个实体来对待[2]。软件测试项目开展过程中产生诸如测试计划文档、测试用例以及自动化测试执行脚本和测试缺陷数据等多项测试产品都应当以某种有效方式保存和管理,以便于查阅和修改[3]。在测试过程中所引入的配置管理活动是实现上述有效保存和管理的最直接方式,为此需要借鉴软件开发配置管理过程中的配置项概念,以界定活动中测试配置管理活动的实体。在软件测试配置管理活动中纳入配置管理范畴的测试工作产品统称为软件测试配置项,其主要属性可包含:名称、标识符、文件状态、版本、作者、日期等。主要的软件测试配置项包括[4]:
(1)合同信息:《测试委托合同》、《测试技术协议》等;
(2)被测软件资源:如《用户手册》、《规格说明》、《设计文档》、《接口说明》等;
(3)测试产品:测试文档模板以及测试过程中产生的系列文档和测试数据。
软件测试配置管理中与配置项相关的主要配置管理活动包含:
(1)并建立配置项的标识体制;
(2)指明配置项的功能特性和物理特性;
(3)控制对配置项特性的更改;
(4)记录、报告更改处理以及执行状态;
(5)编制配置管理文档;
(6)对配置管理进行检查和评审等。
基于上述软件测试配置管理的内涵,可归纳出软件测试配置管理的目标应包含:
(1)确保每个测试项目的配置管理责任明确;
(2)配置管理贯穿项目的整个测试活动;
(3)配置管理应用于所有的测试配置项,包括支持工具;
(4)确保相应的软件测试活动或产品被标识、控制、并是可用的;
(5)在测试项目的里程碑建立相应的基线、建立配置库和基线库;
(6)记录和跟踪测试活动变更请求,控制和审计测试活动的变更;
(7)定期评审基线库内容和测试配置项活动。
软件测试的配置管理活动主要包含下述内容[5]:
(1)软件测试配置管理项的标识管理:标识管理主要实现对软件测试工作中配置项的唯一性标识,通常在软件测试所履行的质量体系中有相应的标识管理程序文件对其进行约束。
(2)软件测试配置管理项的存储管理:存储管理主要解决在软件测试项目开展过程中采用何种策略和方式实施对软件测试配置项的存储。通常所采用的存储方式包括:分布式存储方式、集中式存储方式、混合式存储方式。
(3)软件测试配置管理项的引用控制:引用控制实现对软件测试配置项引用权限的定义、分配和控制。其核心问题是:在软件测试项目开展过程中,配置项可以划分为哪几个状态、每个状态的引用权限是什么?
(4)软件测试配置管理项的版本控制:版本控制是实现对不同阶段的配置的识别,其主要任务包括:配置项版本标识的定义和管理、为不同版本的配置项进行版本标识。
(5)软件测试配置管理项的变更控制:变更控制是配置管理的核心功能。它通过控制、记录、追踪对软件测试配置项的修改和每个修改生成的新配置项来实现对软件测试工作产品的管理功能。
软件测试配置管理的目标和主要内容相对明确和固定。而对于如何实现配置管理工作的目标、执行软件测试配置管理活动,每一个独立的质量体系可以根据本组织的具体情况和特点,制定符合自身要求的配置管理工作流程。通常,配置管理工作的流程应确保实现软件测试项目开展过程的配置管理的核心功能(如版本控制、变更控制等),并兼顾考虑其实施的效率。以下结合具体的软件测试项目配置管理工程实践,对软件测试配置管理中的典型业务流程进行分析:
在测评项目立项后就应该实施测评项目配置库的初始化,测评项目配置库通常可包括:被测件库、开发库、受控库、产品库、基线库等。
配置管理员在接收被测件并复核无误后,将被测件制备到被测件库中。此外,配置管理员还需根据项目负责人对项目组人员规定的被测件使用权限进行权限设置。
配置管理员参与测评项目的初始策划,并制定测评项目配置管理计划。配置管理计划应由项目组长审核,由技术主管批准。配置管理计划应通过评审。经过批准的配置管理计划本身也应受到变更控制和版本控制。
在项目配置管理计划批准后,转入配置管理工作的实施阶段:
(1)建立配置管理环境;
(2)在项目开展的各个阶段,建立相应基线(基线包括:功能基线、需求分析基线、分配基线、设计基线、执行基线、产品基线。其中,功能基线和产品基线为必须建立的基线);
(3)在测试项目开展的过程中实施测评过程配置管理控制。具体的测评过程配置管理控制包括:
①被测件库存放被测件(电子部分),所有测评人员没有权限修改该被测件库;
②开发库中存放与测评人员相关的配置项,只有本人才可以浏览/更改,所有原始技术文件和测评记录等电子数据一律在开发库内编制。
③当分配给个人的任务完成后,经由项目负责人确认后存入受控库。
④经过阶段评审后,受控库中的相关配置项,填写入库申请报告并由技术领导批准后才能进入基线库。
⑤测评总结阶段通过审核或评审后,项目负责人填写入库申请报告,经过技术领导批准,将最终版本的测试编码、记录、报告等配置项放入到产品库受控;
(4)配置状态统计;
(5)配置管理收尾。
综上所述,测评过程配置管理控制的流程如图1所示:
图1 典型的测试配置管理实施流程
对于建立完整质量体系的组织和单位,其质量体系文件通常会对测试过程的配置管理工作进行阐述和规范,以明确测试项目开展过程中测试组按照相关要求如何开展测试配置管理工作,保证测试任务开展过程的有效性和可控性,为确保测试工作的质量发挥了积极的作用。然而只有通过测试过程应用实践,才能检验上述质量体系中有关软件测试配置管理程序的合理性,并发现由技术、人员以及质量体系自身等多种因素所导致的诸多潜在不符合项。软件测试配置管理实施过程中常见的问题包括:
虽然目前已有多种商业配置管理工具,但由于不能在具体组织的质量体系下有效地进行本地化定制,导致配置管理过程又回到半手工或手工执行的状态,不仅未能有效利用信息化管理技术手段的优势、增加了配置管理的实施成本,还极易造成配置管理过程中出错的可能性。
由于约束测试过程的质量体系自身所存在的不合理性,易造成在体系程序中遗漏软件配置管理的某些分支流程,比如:在体系中已明确配置管理策划与测试策划同时开展并进行评审的情况下,需要研究如何在配置管理计划中覆盖和处理测试需求分析阶段的配置管理活动。
参照软件开发配置管理制定测试配置管理程序过程中易引入不适用于测试活动的概念和流程,比如:概念的不统一(软件配置项、受控配置项、基线配置项等)、过程不明确(分配给个人的任务完成后,经项目负责人确认后应存入公共库还是受控库等)。
软件测试机构或组织应制定并贯彻配置管理程序,通过分析配置管理过程信息、结合质量体系内部审核与管理审核,积极采用纠正措施和预防措施等手段,建立长效的软件测试配置管理持续改进机制,保证配置管理程序和工作的适应性和合理性,确保测试产品完整性和测试过程的有效性。
[1]GJB 2725A-2001附加指南《软件测评实验室测评过程和技术能力要求》[S].
[2]GB/T11457-2006软件工程术语[S].
[3]GJB5880-2006软件配置管理[S].
[4]GJB 2725A-2001测试实验室和校准实验室通用要求[S].
[5]GJB 5235-2004行业软件配置管理[S].