APP下载

基于测试过程管理的航天软件质量评价

2019-11-07刘鸿飞董文通

关键词:软件测试研制航天

梅 磊,刘鸿飞,董文通

(中国电子科技集团公司第三十八研究所测试中心,安徽 合肥 230000)

随着我国航空航天类产品的数字化、智能化程度不断提高,作为其中核心控制单元的软件单元所起到的作用也越来越重要,特别是在导弹、飞机、火箭、卫星、飞船等航空航天设备的科研生产中。系统功能的愈加复杂,软件规模逐步增加[1],导致产生软件质量与可靠性相关风险的情况与日俱增。航天软件特点主要有以下几方面:1)软件开发环境和运行平台的复杂多样;2)较高的实时处理能力,低延迟通信等;3)针对恶劣的运行环境,具备高可靠、强稳定等能力;4)软件固化后,由于环境条件等因素导致可维护性较差;5)软件开发的管理过程严格。

我国航天软件工程研制和过程管理的任务通常是由国家航天航空集团及相关科研院所承担,在研制及管理过程中,各单位相继发布了一系列用于航天软件研制和管理的企业规范,并在实践中得到有效的验证[2]。然而,随着航空航天事业的迅速发展,软件研制工作量越来越大。国内外的航天器发射、飞机试飞期间由于软件设计或实现缺陷而出现的故障情况接近60%[3]。研制单位对航天软件产品的质量问题越发重视,对发生的故障往往需要多轮分析其产生原因,举一反三的闭环故障问题,总结故障产生与解决的经验教训,以提高管控研发能力,最终达到提高航天软件质量的目的。

软件测试作为验证软件能否达到期望功能,保证软件质量的有效方法,在航天软件研制工作的各个阶段都很重要。有效的软件测试工作贯穿于整个软件开发的生命周期[4]。对航天产品软件开展测试工作的意义在于能够尽量在项目研制早期发现软件设计缺陷,同时,为设计师对软件进一步完善、改进提供依据和参考,为有关方了解和评价软件的质量情况提供参考。由于各分系统研制单位的软件工程化体系、软件开发能力和管理水平的参差不齐,同时开发人员的工作能力也良莠不一,任何航天产品的研制仅依靠总体单位对软件质量进行把控是不够的[5],因此,建立符合航天质量要求的软件评价统一标准就尤为重要。

1 航天软件质量评价研究概况

我国软件质量评价工作的研究起步较晚,从上世纪末在国外研究成果的基础上,开始研究符合我国软件开发特点的质量评价方法。当前,多数装备研制单位采用的是总装备部根据SEI的CMM标准和军用软件研制总要求编制发布的GJB5000A—2008《军用软件能力成熟度模型》[3],对软件研制过程的评价,是将过程作为提高研制能力的杠杆作用点,利用软件研制过程的规范程度反映软件产品质量,同时,利用软件工程化管理的原则和方法,将软件的开发研制过程按照项目的过程进行管理,从而实现满足客户需求的软件产品的定义、开发、发布和维护。

在军用装备软件研制领域,对软件质量的严格控制是至关重要的环节。很多研究机构的明确型号项目的软件产品必须经由拥有合法资质的第三方测评机构进行软件测评,同时,对于其测试过程,采用并强制执行GJB5000A、GJB438B、GJB2786A等标准规范进行监督[6]。由于各类型航天部件软件产品的功能性、安全性和可靠性等方面的技术特点存在较大差异性,现有质量评价体系过于复杂和难于实践操作,同时,软件测评过程的有效性和公正性也容易受到软件研制方的影响;因此,目前航天软件质量评价体系难以做到软件测试过程与软件质量评价互相结合,往往造成软件质量评价立意高远,却难于落地实施。由此可见,急需一种完整、有效且易于执行的软件质量评价方法,这不仅是保证软件测试工作有效开展的必要条件,也会为我国航天软件产品的质量评价提供有力的支撑和保障。

2 航天软件质量评价的研制过程质量管理

航天软件的重要特点就是具有极高的可靠性和安全性,这也决定软件研制所经历的阶段及相应产生的工作产品的特定性,并直接影响整个系统的研制过程[7]。作为软件研制过程质量保证的有效手段,在软件研制的各个阶段的软件测试对提高软件质量起着不可或缺的重要作用。基于测试过程管理的软件质量评价[8],就是通过建立合理的软件测试模型,同时,基于软件研制过程而产生的管理方式和评价方法,以此提高软件研制的效率和代码质量。其主要内容如下。

1)对软件需求的控制,验证软件的功能、性能指标是否达到需求文档或研制任务书中的要求;

2)对开发文档的质量控制,软件开发文档的编制格式是否规范、文档种类是否齐全、文档的标识和签署是否完备等内容是否已正确完成;

3)软件开发过程的质量保证,是否严格按照相关质量标准要求对软件开发过程进行质量管理,并根据实际完成情况编制质量保证报告;

4)软件开发过程的配置管理,是否严格按照相关规定严格把控软件版本管理与变更,并编制配置管理报告。

航天软件研制过程的科学管理与流程优化需要开发与测试2个部门之间的协调合作,通过科学合理的管理,提高航天产品的软件代码质量。要真正体现配合与协作的效果,测试工作从过程管理的开始阶段就需要介入[6]。系统实施分阶段按过程管理,首先确定测试目标和测试方法,然后针对需求设计、概要设计、数据库设计、详细设计等各个不同阶段软件开发的特点,开展软件测试过程管理工作,二者相辅相成,同步进行。航天软件研制质量与测试过程管理的关系如图1所示。

图1 航天软件质量保证过程

为降低航天软件后期维护更新的成本,在项目论证阶段,软件测试人员应提前介入可行性分析工作,确保软件研制方案的安全、可靠。在需求分析阶段,不仅要求测试人员具备对被测软件需求的审查、分析以及提取功能、性能等测试内容的能力,还应熟练掌握常用测试方法及航天软件质量标准的相关要求。在策划阶段,结合软件开发进度、测试资源、评审监督等工作统筹安排,同时细化测试要求获取测试内容[8]。在详细测试设计阶段,根据测试项抽象出测试用例,同时根据开发方提供的测试环境为后续的测试执行工作提供支撑。在实际项目管理的时候,通常会利用项目管理工具来实现对软件研制流程的管控,而测试工作产生的相关测试文档会被作为各软件研制阶段的控制成果进入受控的配置管理库进行统一管理。

3 航天软件测试模型

航天软件测试过程分为测试需求阶段、测试策划阶段、设计与实施阶段、测试执行阶段、测试总结这5个阶段,对应的项目管理包括需求管理、计划管理、跟踪和控制、质量保证和配置管理活动过程。本文结合GJB5000A中对软件测试工作的要求[9],联系实际工作的项目经验和当前航天类软件测试领域通用的软件测试技术,建立了一套适用于航天类软件质量评价的测试过程通用模型,同时,将软件测试管理规范与软件测试流程相结合,利用各自的特点,提出一个既能够提高航天软件质量水平,又保证软件高可靠性与安全性的测试流程,如图2所示。

图2 航天软件测试流程

3.1 单元测试

单元测试的目的是在应用程序中对最小的可测模块或过程进行隔离测试,将模块的功能与定义模块的功能规格说明或接口规格说明进行比较,验证是否满足期望的要求。在我国航空航天领域,通常要求代码达到100%的覆盖率,在实际工作中通常会利用辅助工具来开展覆盖性等类型的测试,例如使用自动化测试工具LDRA Testbed测试套件[10]。单元测试环境结构如图3所示。

图3 单元测试环境结构图

单元测试的实施主要由测试人员配合开发人员完成,既充分利用测试人员的代码质量意识和规范化意识又需要开发人员对代码的熟练掌握。通常采用的方式是测试人员根据软件的设计说明灵活制定单元测试计划,开发人员在测试人员的帮助下设计和构造驱动函数和桩函数完成单元测试的执行工作。这样既提高测试效率,又能保证测试质量。

3.2 集成测试

在完成单元测试工作后,航天类软件往往需要针对系统的每个配置项软件开展渐进式的集成测试。集成测试常用的策略如下。

1)自顶向下集成,所有被调用的单元均作为桩函数,模拟被调用的软件代码;

2)自底向上集成,每个底部单元的驱动器模块作为桩函数;

3)三明治集成,结合自顶向下和自底向上2种策略的特点,测试的覆盖性最好,但可能出现收敛性较差的情况。

在航天软件的集成测试过程中,往往根据实际情况和配置项软件的功能点进行测试范围划分。特殊情况下,还会将集成测试与单元测试的过程进行合并执行,并将测试结果作为阶段性工作成果进行管控。

3.3 系统测试

在完成单元测试和集成测试后,结合整个软件系统的实装环境,进行完整、全面的系统测试,这关系到航天软件最终验收的结果[8]。系统测试的主要目的是检查软件研制过程工程化管理的完整性、正确性及有效性,包括文档质量、功能与需求的一致性等,同时根据发现的问题给出合理的评价和建议,并根据问题选择新增或复用测试用例进行回归测试,直至所有问题均完成闭环为止。在航天软件测试中,按照军用软件测评标准的要求,通常的覆盖配置项及系统级的测试类型如表1所示。

表1 测试类型及标识

4 航天软件的质量评价方法

为了更准确地发现航天软件开发过程中的问题,更有效衡量开发的全面性,帮助提高软件研制单位开发过程管理能力,通过结合面向产品的软件质量评价的优点,构建多种通用评价模型,充分对软件质量的完整性和全面性进行评价。本文提出的基于软件测试过程管理的航天软件质量评价方法,主要是在软件研制的过程中,强调软件测试工作的重要性和评价的客观性,同时,提取测试工作期间产生的工作产品中,包括测试需求分析、测试计划、测试用例及说明、测试记录与报告等文档,与软件质量相关的特征与评价因子,进行统计与分析,从而完成对航天软件在整个生命周期之内的过程质量评价。航天软件的评价过程如图4所示。

图4 评价过程结构图

质量评价模型主要包含2部分:软件测试相关结果的评价、软件研制过程的评价。通过对历年来项目的统计,笔者选取了能够反映质量属性的评价因子,并将评价因子按照模型要求进行分类。其中,研制过程评价因子的类型及评价权重定义如图5所示。软件测试过程的评价因子类型及评价权重定义如图6所示。

图5 研制过程评价因子

图6 测试过程评价因子

对航天软件进行质量评价时,在不同的测试阶段,针对不同类型的评价因子按权重进行统计和分析,对需要重点关注的因子类型,可以自适应的选择加大权重的比值,并在软件最终的评价报告中对分析结果进行汇总描述,以达到公正、全面评价软件质量水平的目的。下面以某型卫星载荷导引头软件的质量评价过程为例阐述。

根据GJB5000A的质量标准要求,针对被测软件在研制过程管理和测试过程管理期间的工作产品按照评价因子的类型进行统计与分析,审查对象包括代码管理、需求管理、需求分析、需求覆盖率、语句覆盖率、分支覆盖率、代码缺陷率、功能缺陷率、性能缺陷率、问题归零率以及配置管理正确率等。其中,研制过程的详细统计情况如表2所示。软件测试过程的详细统计情况如表3所示。

表2 被测软件研制过程评价因子统计

表3 被测软件测试过程评价因子统计

考虑到导引头系统软件都为重要等级的配置项软件,出现的任何缺陷都可能给整个系统的运行造成严重影响,因此,需要加大软件测试发现缺陷率因子的权重。

在对软件测试情况进行全面具体的总结评价时,根据软件研制任务书及需求设计说明,分析提取出被评价软件系统的产品质量属性,包括导引头配置项软件的代码规模(2个微型,1个小型),在满足用户需求目标的前提下,共挖掘功能需求49个,性能需求16个。

在评价设计阶段,以功能需求及性能需求为基础,设计质量评价模型,建立产品质量属性结构,同时设计测试项目共165个,以保证对产品部件评价的充分性,同时,通过设计多种测试类型和方法,以实现对软件安全性、稳定性的验证覆盖。

在评价执行阶段,以测试项为基础,设计测试用例297个,在单元测试执行过程中获得各配置项软件的需求覆盖率、语句覆盖率、分支覆盖率等评价因子信息,在系统测试执行过程中获得各软件的功能缺陷率、性能缺陷率、接口协议正确率等评价因子信息,定量进行统计和记录,同时,对测试执行期间产生的记录和问题文档做好过程管理工作。

在评价结论阶段,根据统计的评价结果进行影响分析,得到3个配置项软件的缺陷主要集中在功能缺陷率中,其中缺陷最多的数据处理软件由于代码规模较小,导致千行代码缺陷率仅达到CMM1级,因此,在项目组召开的缺陷评审中重点讨论该软件出现缺陷的原因和处理情况,并对所有问题进行举一反三和持续的追踪。最后,结合分析结果,形成对被测软件的质量评价,并针对软件质量的后续提升给出建议。在软件测试报告的评审会议上,邀请客户、项目组专家和测试专家共同对软件项目的评价意见进行讨论,最终形成评价报告交付用户,供项目验收参考使用。

5 结束语

作为航天软件质量评价方法,使用它的前提是研制单位已经具备相对完整的质量管理体系和软件工程化管理经验,这也导致本方法的应用和推广存在一定局限。同时,通过对大量项目数据的积累和使用后,可对质量评价模型增加更多的评价因子和衡量研制水平的评价准则,以进一步提高软件质量评价的准确性和全面性。

随着测试过程管理技术和方法的不断探索和改进,为满足航天软件的可靠性、安全性等特殊要求,软件研制单位和用户单位对航天软件测试过程提出了更高的要求,对软件产品质量的评价需求也越来越高。本文针对航天软件的特点,分析比较传统软件质量评价方法的不足,同时参考GJB5000A、GJB438B等软件质量过程控制体系,在综合考虑航天软件的功能、性能、背景要求的前提下,选取具备质量特征属性的评价因子,并在此基础上提出了一种用于航天软件质量评价的方法,以对软件质量进行客观、公正的评价。这不仅是帮助研制单位提高开发水平的方法,更为软件研制单位提供了一个软件过程改进的方向。

猜你喜欢

软件测试研制航天
我的航天梦
航天梦,我的梦
仿生眼的研制有新突破
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
逐梦航天日
一种新型固定翼无人机的研制
EXCEL和VBA实现软件测试记录管理
XV-24A垂直起降验证机的研制与发展
软件测试工程化模型及应用研究