基于平台支撑流程驱动的军用软件测试过程实施
2021-09-08宋文爱张日飞张紫芫
赵 严,宋文爱,张日飞,张紫芫,张 静
(1.中北大学软件学院山西省军民融合软件工程技术研究中心,太原 038507;2.北方自动控制技术研究所,太原 030006;3.南京邮电大学通达学院,江苏 扬州 225127)
0 引言
软件测试是软件工程中一个必不可少的重要组成部分。在软件工程基本原理指导下的软件开发流程包括需求分析、概要设计、详细设计、编码、测试、交付、验收和运行维护等环节,其中软件测试不仅能对软件的质量进行评价,而且是软件质量保证的重要手段之一[1]。
遵从《GJB 5000A-2008 军用软件研制能力成熟度模型》和《GJBZ 141-2016 军用软件测试指南》标准的军用软件测试过程,包括测试工程过程、测试项目管理过程、测试支持过程和测试组织过程,构成了完整的软件测试生命周期。对于军用软件来说,软件质量直接影响武器的质量和军事行动的成败[2],所以软件测试的质量显得尤为关键,而测试过程的质量又直接决定了测试结果的质量[3]。目前,我国软件测评实验室获取到国家和军方认证的已经达到300 多家[4],软件测试工作实施过程中各项活动的生命周期,目前主要还是由测评实验室的测评人员进行人工驱动。如何对软件测试的生命周期进行更高效的管控,以提高测试效率和测试质量,是目前国内外学者研究的重要课题。为此,参考项目管理和控制论的相关思想、军用软件测试的相关技术方法,提出了一种基于平台支撑流程驱动的军用软件测试过程实施模型。
1 军用软件测试过程
在《GJB 5000A-2008 军用软件研制能力成熟度模型》和《GJBZ 141-2016 军用软件测试指南》指导下的完整的军用软件测试过程体系,应当包括测试项目管理过程、测试工程过程、测试支持过程和测试组织过程。
1.1 测试工程过程
在《GJBZ 141-2016 军用软件测试指南》指导下,军用软件测试的工程流程可分为测试需求分析、测试策划、测试设计与实现、测试执行和测试总结5 个阶段,每个阶段又包括一系列具体的活动和要素,构成了一个完整的工程生命周期,参见表1。
表1 测试工程过程
1.2 测试项目管理过程
项目管理是管理学的一个分支学科,所谓项目管理,就是项目的管理者,在资源有限的限制条件下,运用相关的工具、方法、理论等,对项目中所涉及到的全部内容进行有效的监测和管控,最终实现项目的期望和需求的过程[5]。
软件测试项目具有很多的不确定因素,而项目管理,从本质上来讲,就是一个不断整合、不断平衡的过程,因此,对于软件测试项目非常适用[6]。软件测试项目管理的内容包括策划管理、成本管理、进度管理、资源管理和风险管理[7]。
1.3 测试支持过程
测试支持过程,是指测试方依据他们所支持的测试目标,所从事的一系列相关活动的集合,最终有利于测试结果质量的提升。主要包括文档编制过程、配置管理过程、过程和产品质量保证过程、审核过程等。
1.4 测试组织过程
组织过程,主要目的是为了创建与维护组织可用的测试过程资产和工作环境标准。通过采集各个项目的有用信息,不断累积过程资产,从而推动组织标准过程得到持续改进,最终可以使组织长期受益。该过程主要包含培训、环境、资源、人员、工具等内容。
1.5 工作角色
测试工作中涉及到的工作角色如表2 所示。
表2 工作角色表
2 流程驱动与闭环控制
2.1 人工驱动的局限性与控制反转思想
传统的软件测试过程主要由人工进行驱动,各项工作主要由人来负责,其特点是主观性较强,同时人为控制的灵活性较强,在要求不太严格的小型测试项目上尚且适用。但是在过程规范、要求严格的大型军用软件测试过程项目中,如果依然由人工进行驱动,容易造成进度失调、资源浪费、过程不受控等局面,导致计划于实际偏差过大,最终导致项目失败。
控制反转(IOC)不是一种技术,只是一种思想,所谓控制反转,就是控制权的转移[8]。由于人工驱动的局限性,我们希望将测试过程的控制权从人转移到流程,从人工驱动转化为流程驱动。
2.2 流程驱动
通俗地讲,流程是具有起点和终点的、有严格先后顺序的一系列业务活动的组合。它具有明确的输入资源,通过一系列增值过程,最终转化为有价值的输出结果[9]。它主要关注谁做了什么事,产生了什么结果,传递了什么信息给谁。
流程驱动,就是以流程为中心,将所需要的业务活动进行组合,并明确输入和输出,从而使得这些业务活动以流程的方式有序开展,最终达到所期望的目标[10-11]。
2.3 多闭环PID 控制
闭环控制的概念来源于控制论,具体是指系统在运行过程中,将控制信息输向受控对象,并将受控对象输出的状态信息反馈回输入中,以调整修正运行过程,使系统的输出符合预期要求[12]。闭环控制与开环控制的区别在于:1)有无反馈;2)是否对当前控制起作用。
多闭环的思想来源于工业领域对伺服电机的控制,一般为两个环控制,所谓双环就是两个闭环负反馈PID 调节系统。第1 环是速度环,输入目标速度,反馈实时速度。第2 环是位置环,输入目标位置,反馈实时位置。
闭环控制算法众多,其中应用最为广泛、最成熟的应当是PID 算法[13]。PID 是比例(P),积分(I),微分(D)的缩写,分别代表了3 种控制算法。单独或组合使用这3 种算法,可有效地纠正被控对象的偏差,从而使系统达到一个稳定的状态。
1)比例,即成比例地反映控制系统的偏差信号,偏差一旦产生,立即产生控制作用以减小偏差。
2)积分,即积分环节的作用,主要用于消除静差提高系统的无差度。
3)微分,微分环节的作用能反映偏差信号的变化趋势,并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。
2.4 平台支撑
完善的实施过程离不开信息平台有力的支撑,信息平台作为整个体系的一种工具、一种载体,将体系中涉及到的人、机、料、法、环进行记录、关联、呈现,其重要性不言而喻。
3 基于GQM 模型的度量体系设计
在上节中提到,闭环控制的核心在于收集反馈然后对系统进行调控,那么,如何获得反馈,则需要通过度量来实现。
3.1 模型概述
GQM(Goal-Question-Measurement)即“目标-提问-测量”方法,是一种面向目标的、自上而下的由目标逐步细化到度量的度量定义方法[14]。GQM的实施过程是自上而下的分析过程和自下而上的执行过程,首先确定需要度量的目标,然后通过回答问题的方式来衡量这些目标是否可以实现,最终将抽象模糊的目标,分解成具体的、可量化测量的问题。GQM 模型具有3 层架构,如图1 所示。
图1 GQM 模型
3.2 度量体系设计
基于GQM 模型的思想,将军用软件测试的4个过程作为度量的目标,然后对每个过程的度量要素进行抽取,范围包含测试设计、需求、成本、进度、质量、规模等,得到对应的度量指标和度量项,最终提出由10 个度量组成的度量体系,如表3 所示。实际上,军用软件测试过程涵盖的度量指标远不止10个,此处仅仅列出其中有代表性的指标作为参考,在实际项目中可以根据项目情况进行增减以适应项目需要。
表3 度量体系表
4 基于平台支撑流程驱动的军用软件测试过程构建
4.1 体系结构
整个体系分为两层,上层为流程管控层,下层为平台支撑层,如图2 所示。上层为流程的具体情况,下层为平台的功能细节,下层为上层提供平台支撑,使上层的思想得以实现,上层则为下层提供实现逻辑上的支持。
图2 体系结构示意图
4.2 持续改进的质量管理过程
军用软件测试过程具有投资大、周期长、风险高的特点,在测试过程存在很多的不确定因素,导致了测试结果的不确定性和不可预见性,我们希望可以对测试项目进行全过程的动态监控,然后对项目进行持续的改进,以确保项目顺利实施。
PDCA 循环是一个持续改进模型[15],主要包括4 个阶段,即计划(P)- 执行(D)- 检查(C)- 处理(A)。
对于任何一件事情,通常会先制定计划(P),计划完成以后去实施(D),在实施的过程中进行检查(C),通过检查来判断执行结果是否达到了预期,进而分析影响的因素、出现问题的原因,并提出解决的措施,最后根据检查的结果进行改进(A)。PDCA不是一个水平单次执行的过程,而是一个循环执行、螺旋上升的过程。
可以看出,PDCA 的核心在于C 和A,也就是检查和改进的过程。结合上文的论述,检查过程即可对应度量过程,改进过程对应闭环控制过程,基于此,设计出持续改进的管理过程模型,如图3 所示。
图3 持续改进的管理过程模型
4.3 前馈、反馈结合的改进过程
检查阶段的分析对处理阶段起着决定性作用,而检查的主要方式就是度量,通过度量将我们需要评估的指标进行量化评估,为下一阶段的改进提供依据。通过度量阶段收集的数据,经过分析和处理建立组织性能基线,确定基准值和上下控制区间。
处理阶段主要是根据检查结果,采取相应的措施。例如在检查过程中,发现某一个度量项的度量结果偏离基准值或者超出控制区间,则会将其判定为不合格状态。发现不合格状态后,则需要通过采取相应的措施来改进。
前馈控制,可以对应PID 算法中的微分(D)算法,即根据当前的变化趋势,在测量值发生变化但还没有超出预期值时,提前实施相应的调控措施进行干预。反馈控制,可以对应PID 算法中的比例算法(P)算法,即在测量值出现偏差而且超过预期值后,再采取相应的措施进行调整。
将其应用在工程领域,前馈控制在持续改进的质量管理过程模型中对应速度环,主要进行初期的、小范围的调节。反馈控制对应模型中的位置环,主要负责后期的、里程碑式的调整。例如假设当前项目的进度偏离了基准值,有延期的趋势时,应当先进行速度环的调节,可以通过增加人员、延长每日工作时长等方式来加快进度;如果速度环的调节没有达到预期效果,进度依然滞后,且超出了控制区间,超出可接受的范围,则应当进行位置环的调节,比如修改测试计划等。这样通过先速度环后位置环,前馈加反馈的调节方式,可以结合二者的优点,有效地对问题进行改进。
4.4 军用软件测试过程实施实例
希望将流程驱动和闭环控制的相关思想运用到工程领域,结合军用软件测试过程进行设计。通过对军用软件测试过程的研究,可以发现军用软件测试工程过程具有流程的典型特征,其中,每个阶段都有对应的输入、输出和处理过程,将其业务活动组合,然后以流程的方式有序开展,也恰好符合流程驱动的核心思想。流程驱动的同时,需要结合闭环控制的思想,将军用软件测试流程进行闭环控制管理,核心在于收集反馈然后对系统进行调控。进一步结合PDCA 模型,以及具体的度量方式,控制调节方法,设计出军用软件测试过程实施模型,如图4 所示。
图4 军用软件测试过程实施
宏观上整个体系在平台的支撑上运行,包含了工程、管理、支持和组织过程,其中我们对整个工程体系进行了分层,包含流程层、输入层、输出层和评审层共4 层架构,其中流程层作为整个体系的核心,控制整个流程体系的运转。微观上每一层都包含若干组成部分,包括流程、文档、组件和行为等。下面通过具体的运作步骤,来了解整个工作体系的运行原理。
步骤1:整个体系的主体是流程层,整个测试项目流程从开始启动,在相关测试文档的指导下(P 过程),按照测试顺序依次进行(D 过程),首先进行测试需求分析业务的处理,进行相应的活动,输入层有对应的输入(文档),评审层在业务完成后会进行测试需求评审,评审结束后输出层会有对应输出(文档),业务处理结束后到达反馈点1(反馈点的位置和数量可以根据项目实际需要来制定)将本流程产生的文档等资料提交到流程控制中心。
步骤2:流程控制中心在收到反馈点1 提交的资料后,会根据度量表的内容对当前状态进行逐一度量(C 过程),参见表3,如果度量情况没有偏离基准值或超出控制区间,则返回到反馈点1 继续进行下一业务活动。
步骤3:如果流程控制中心在度量过程中,发现偏离基准值或超出控制区间,则需要在表中找到对应的测试工作人员,按照先速度环后位置环的原则进行调整(A 过程)。
步骤4:流程控制中心根据异常状态反馈作出相应调整后,流程控制中心继续审查剩余资料,如果依然有异常状态反馈的话,则继续提交给对应的角色进行处理,如果没有异常则继续逐项度量,直到度量结束,流程返回反馈点位置,流程继续向后进行。
步骤5:正常情况下流程重复执行步骤1、步骤2,出现异常则执行步骤3、步骤4(PDCA 循环),直到执行完最后一个业务活动,后续无未处理业务,流程结束。
5 过程成功实施的4 个要素
综上所述,可以得出基于平台支撑流程驱动的军用软件测试过程成功实施需要具备4 个要素:①全程策划,②严格执行,③精准监督,④及时整改回归。全程策划的基础在于严格遵守各类国/军标体系文件来进行策划和设计;严格执行的核心在于严格的过程管理;精准监督的实施取决于精准的度量;及时整改回归则依赖于科学有效的整改方式。
6 基于平台支撑流程驱动的军用软件测试过程实施的优势
与传统的软件测试实施过程相比,基于平台支撑流程驱动的军用软件测试过程具有如下优势:
第一,相比于传统的人工业务推进模式,基于流程驱动的军用软件测试过程,通过建立流程驱动机制,在平台的支撑下,整个体系在流程的推进下自动运转,有效减少了人工的干预。
第二,区别于传统独立的、松散的管理模式,整个项目从业务到人员都通过流程有机地结合起来,无论是组织还是管理都与流程紧密结合,有利于整个项目的良好运转。
第三,将关注点更多的放在项目实施过程上,而不是实施结果,以往通过结果发现问题时再进行纠正,往往需要付出较大的代价来弥补,强化过程管理,有利于项目实施质量的保证。
7 结论
本文基于军用软件测试过程要求和特点,提出一种基于平台支撑流程驱动的军用软件测试过程实施模型,该模型旨在推动测试过程的自动化实施,在减少人工驱动干预的同时,将过程所涉及到的人、机、料、法、环等有机地结合起来,有助于提升军用软件测评实验室对测试项目的管理能力,提高测试效率,降低测试成本,可为今后军用软件测试过程的研究提供一定的参考。