参数依赖型软件参数更动测试策略和方法

2022-10-27 02:43张卫祥齐玉华刘凤菊
计算机测量与控制 2022年10期
关键词:测试用例测控代码

魏 波,张卫祥,齐玉华,刘凤菊

(北京跟踪与通信技术研究所,北京 100094)

0 引言

航天测控中心是航天测控网的重要组成部分,是航天任务的决策和指挥中心。航天测控中心计算机软件系统部署于航天测控中心,完成对遥测数据、外测数据的接收、处理、显示,对测控设备的引导控制,以及向航天器发送遥控指令等功能[1-2]。基本的航天测控中心软件系统一般包括数据交换、汇集分发、遥测数据处理、外测数据处理、综合数据处理、监视显示、安控辅助判决、遥控发令等软件配置项[3-4]。航天发射任务数量日益增多,任务密度日益加大,留给软件状态切换和准备时间大幅减少,对测控中心软件系统提出了新的要求。测控中心软件为了达到仅通过修改任务配置参数而适应高密度型号任务的目的,大多采用领域工程分析和领域驱动设计技术,实现业务处理逻辑和任务配置参数的分离。

但是,软件配置参数更动的正确性在一定程度上依赖操作人员的知识、经验和工作态度,参数更动需要花费大量的时间和精力[5]。研究数据证明,参数更动过程有时会引入大量的软件问题,甚至影响到航天任务的成败。依照载人航天工程软件工程化要求,任务配置参数和软件代码均是软件的一部分,无论是代码更动还是参数更动均需要通过第三方的测试[6-9],并将此作为任务前检查的重要部分。然而,无论是软件研制单位还是软件用户单位,对参数更动测试的重视程度不足[10-12],参数更动测试的效果不佳。

参数依赖型软件是指初始化时读取并解析配置参数,并据此进行任务处理的软件,航天测控中心软件是典型的参数依赖型软件。本文针对参数依赖型软件,提出了一种覆盖软件验收、软件运行、任务参数更动等阶段的第三方测试验证方法。并基于该方法,对远程数据交互软件进行了测试实践,结果表明,该方法具有测试覆盖性强、测试重点突出、测试效率高等特点,满足载人航天工程软件工程化技术规范的要求。

第一章分析了参数依赖型软件“代码+参数”的可复用架构和软件使用模式,第二章提出针对参数依赖特性的第三方测试流程,共包括参数依赖特性验收测试、参数更动测试和测试状态维护等3个阶段,并对每个阶段的测试策略、测试重点进行了分析设计。第三章给出了该方法的一个应用实例;第四章指出了该方法的应用前景,提出了可能的优化改进方向。本文中,参数依赖特性定义为与参数初始化、参数解析、参数处理相关的功能、性能、安全性等软件特性。参数依赖特性验收测试是指针对参数依赖特性而进行的用户验收测试。参数更动测试是指因任务状态变化而发生参数更动后,针对参数更动而进行的软件回归测试。

1 参数依赖型软件架构及使用模式

参数依赖型软件是指初始化时读取并解析运行参数信息,并据此进行任务处理的软件。航天测控软件是典型的参数依赖型软件,多采用领域工程分析和领域驱动设计技术,实现业务处理逻辑和型号任务配置参数的分离[13]。参数依赖型软件的典型架构如图1所示。

图1 参数依赖型软件架构

当执行新的型号任务时,技术人员首先梳理新的任务需求,进行软件维护可行性分析。分析从3个层次依次展开:软件代码和软件配置均不改变是否可以执行新的任务?仅修改软件配置是否可以满足任务要求?是否必须进行代码的更动?并根据最终的分析结论制定软件维护方案,给出软件维护的详细内容。具体流程如图2所示。

图2 软件维护流程

航天测控软件具有较强的软件复用能力,多数情况下可通过仅修改配置参数来适应新的试验任务。根据载人航天工程软件工程化技术标准的要求,配置参数更动后需要进行第三方参数更动测试。

2 参数依赖特性测试流程

软件生命周期包括需求、设计、编码、内部测试、验收、软件维护等阶段。软件维护包括纠错性维护、适应性维护和完善性维护等多种类型,基于任务状态变化的配置参数更动属于典型的适应性维护。任务执行前,需要根据任务状态变化情况,对任务软件进行第三方参数更动测试。值得注意的是,参数更动是有继承关系的,并非所有的任务更动都是基于验收后的初始版本。在参数更动前,需要分析本次任务与历史任务的相似程度,选择配置参数内容相近,更动代价最小的历史任务作为更动基础版本。典型的任务继承关系如图3所示。

图3 软件版本继承关系图

本文设计了第三方参数依赖特性测试流程,规范参数依赖软件从软件验收到软件维护阶段的第三方测试工作。测试流程包括参数依赖特性验收测试、测试状态维护、参数更动测试3个部分。测试流程和各部分的工作对象见图4。

图4 参数依赖特性测试流程

软件研制完成后,第三方评测单位应针对软件初始版本进行参数依赖特性验收测试。参数依赖特性验收测试面向的是参数依赖特性的所有软件需求,需要对参数依赖特性所涉及的全部功能、性能、容错、人机交互等进行全方位的完整测试。提高测试充分性是参数依赖特性验收测试的核心要求。

配置参数更动测试则是面向型号任务,基于参数更动前后的配置参数比对结果,针对更动及影响域而进行的软件回归测试。在完成参数依赖特性验收测试或配置参数更动测试后,需要进行测试状态维护,包括维护软件版本间的继承关系、维护配置参数状态、记录历次参数更动内容、对测试用例进行复用化处理等。

2.1 参数依赖特性验收测试

参数依赖型软件在软件验收阶段,应该进行参数依赖特性专项验收测试,需要对参数依赖特性所涉及的全部功能、性能、容错、人机交互等进行全方位的完整测试。参数依赖特性验收测试是整个测试流程中的基础,其测试充分性是保证后续参数更动测试有效性的必要条件。

2.1.1 参数依赖特性验收测试策略

本文从测试范围、测试依据、测试思路、用例设计、参与人员和测试时机等属性,提出了测试策略描述框架。参数依赖特性验收测试的测试策略如表1所示。

表1 参数依赖特性验收测试策略

2.1.2 参数依赖特性验收测试的充分性保证措施

提高测试充分性是参数依赖特性验收测试的核心要求。保障参数依赖特性验收测试充分性主要通过以下3个措施:

1)提高配置参数功能设计的合理完备:测试人员应与总体设计人员、软件操作人员充分沟通,使用领域分析的方法,从使用需求出发,分析配置参数功能设计是否合理完备。必要时应补充遗漏的配置参数功能,避免软件因设计不充分而带来的配置参数功能的不完善,提高软件复用能力。

2)对参数依赖代码进行逻辑测试:逻辑测试是对程序代码逻辑设计的合理性、实现的正确性进行测试。利用程序代码内部的逻辑结构及相关信息设置监测点,在测试用例执行过程中记录监测点的状态,并给出测试覆盖率信息。逻辑测试是提高测试充分性和实现精准测试的有效手段。参数依赖特性验收测试应根据软件编程语言和运行环境,选择适合的逻辑测试工具,通过插桩代码、执行测试用例、分析语句/分支覆盖率和补充测试等流程,提高对配置参数及其取值范围的测试覆盖率[14-17]。测试中需重点关注以下几点:

(1)确保软件代码实现了软件需求和设计要求的所有配置参数功能。

(2)确保软件代码中的所有配置参数及其处理分支均得到测试。

(3)控制流覆盖不仅要关注软件初始化时配置文件读取部分,还要关注使用配置参数进行控制处理的不同执行路径。

(4)在进行代码插桩前,应通过人工代码走查的方式,标识出参数依赖相关的代码。插桩时仅对参数依赖代码进行插装,后续测试中仅关注参数依赖代码的测试覆盖率。

3)针对软件高发缺陷进行重点测试:通过对历年二十余个参数依赖型软件测试项目分析,我们发现参数相关的软件缺陷大多集中分布在软件特定位置。因此除了依照需求进行功能、性能等常规测试外,验收测试还需重点关注以下内容,详见表2。

表2 验收测试重点及技术要求

以上为参数依赖型软件验收测试的通用要求,具体软件可根据自身特点和数据依赖程度,对以上要求进行选择和裁剪。

2.2 参数更动测试

2.2.1 参数更动测试策略

软件在进行任务参数更动后,应进行参数更动测试。与验收测试不同,参数更动测试属于软件回归测试,更关注参数更动内容及对软件功能、性能等特性的影响。参数更动测试的总体策略如表3所示。

表3 参数更动测试策略

配置参数比对是配置参数更动测试的关键步骤。首先与软件更动维护方案比对,确保已经正确完成了软件更动维护方案要求的更动项,没有偏差和遗漏。同时与更动前的配置参数进行比对,识别出软件更动维护方案中没有描述,但实际实施了的更动,并将其纳入到参数更动测试范围内。

针对识别出的配置参数更动内容,进行影响域分析。对受影响部分逐项进行测试分析,在之前回归测试中确实已经覆盖的更动内容,可以仅通过配置文件检查来验证,之前没有测试或测试不充分的更动内容,通过选用之前的可复用测试用例,或重新设计测试用例来验证。测试设计时应重点关注典型的更动错误类型。

某些情况下,配置参数的更动分析和更动实施不是由软件研发人员完成,而是由软件操作人员完成,此时应该将软件操作人员纳入配置参数更动测试的参与人员中,以保证配置参数比对工作的效果和效率。

2.2.2 参数更动的典型错误

对历年来航天测控中心计算机系统配置参数更动错误进行了梳理和分析,典型的参数更动错误如表4所示。测试设计时应重点关注典型更动错误,提高测试的针对性和有效性。

表4 参数更动的典型错误

2.3 测试状态维护

参数依赖型软件验收测试阶段完成,或参数更动测试完成后,应转入测试状态维护阶段。测试状态维护阶段应进行配置参数状态维护和可复用配置参数测试用例维护。

2.3.1 配置参数状态维护

测试结束后,测试人员应督促软件研发人员、软件操作人员,根据软件最新状态,编制或维护配置参数维护手册,配置参数维护手册也可以作为软件使用手册的单独一章提供。配置参数维护手册应详细描述修改配置参数的方法、注意事项,明确各配置参数的值域范围、参数类型约束、参数间关联约束等。另外在软件代码初始化配置参数和使用配置参数处,增加明确的注释,注释内容应与配置参数维护手册保持一致。

此外,要建立任务参数更动图谱,维护参数版本间的继承关系、更动内容,并纳入配置管理。

2.3.2 可复用配置参数测试用例维护

参数更动测试本质上是软件回归测试。对于新的配置参数更动测试,应通过将更动需求与复用库中类似软件需求进行匹配筛选,检索并形成可复用测试用例集,经适当修改完善后快速生成参数更动测试的测试用例集,从而大幅提高参数更动测试用例设计效率[18-20]。

因此,测试状态维护阶段需要整理本轮测试中与配置参数相关的测试用例,对测试用例进行可复用化处理,建立可复用配置参数测试用例库。测试用例复用化处理的关键是建立测试用例与所测试配置参数的索引,下轮配置参数更动测试可根据配置参数索引,复用相关测试用例。

3 实验结果分析

使用本文提出的参数依赖特性测试策略和方法,对某航天测控中心计算机系统远程数据交互软件进行了第三方测试。该软件主要完成测控中心内外数据的接收、格式转换和分发。数据收发规则保存在配置文件中,软件完成数据收发规则的解析,实现内外数据正确转发。

软件验收测试阶段,采用领域分析、逻辑测试和重点测试等技术,设计并执行了配置参数相关测试用例72个,对参数相关源代码的语句和分支覆盖率均达到100%。发现与配置参数相关软件问题5处,问题包括不能转发某雷达测角数据、接收缓冲区数量配置错误导致软件异常、存在冗余配置参数信息、配置文件格式异常没有进行容错处理、模式控制参数配置异常给出的提示不正确等,详见表5。

表5 验收测试用例设计与缺陷分布表

从表5可以看出,验收测试共设计通用参数功能用例47个,发现软件缺陷1处,缺陷发现率(发现缺陷数/总缺陷数)为25%。设计重点测试用例25个,发现软件缺陷5处(1处在通用测试中同时发现),缺陷发现率为100%。数据表明,针对验收测试重点进行用例设计,可以有效提高测试的有效性和针对性。

在后续某型号任务的配置参数更动测试中,依照配置参数文件更动前后的比对结果和该中心提交的软件维护方案,进行了更动影响域分析和回归用例设计。设计并执行回归测试用例12个,测试中发现遥测数据转发方向配置错误、某门限参数类型错误等2处缺陷,参数更动测试缺陷分布详见表6。软件修正错误后成功执行多次型号任务,没有出现软件问题。与以往同类软件配置参数更动回归测试相比,本次参数更动测试用例数减少60%,测试时间缩短40%,测试用例在覆盖全部更动影响影响域的基础上,具有更强的测试针对性。

表6 参数更动测试缺陷分布表

实践证明,本文提出的参数依赖特性测试策略和方法具有测试覆盖性强、测试重点突出、测试效率高等特点,并满足载人航天工程软件工程化技术规范的要求。

4 结束语

本文分析了参数依赖型软件“代码+参数”的可复用架构和使用模式,制定了针对参数依赖特性的第三方测试规范和流程,提出了参数依赖特性验收、参数更动等测试阶段的测试策略、测试重点等技术要求,对参数更动测试中应重点关注的错误类型进行了归纳,分析了错误原因。本文提出的参数依赖特性测试方法,已经在多个航天测控软件第三方测试中得到应用和验证,该方法具有测试覆盖性强、测试重点突出、测试效率高、可操作性好等特点。后续,作者将对基于配置文件的测试用例辅助生成、参数相关代码的自动识别做进一步的研究,提高本方法的自动化水平。

猜你喜欢
测试用例测控代码
扬州英迈克测控技术有限公司
星载测控终端型谱化研究
基于LDA模型的测试用例复用方法*
昆山祺迈测控设备有限公司
神秘的代码
软件测试中的测试用例及复用研究
一周机构净增(减)仓股前20名
向着新航程进发——远望7号测控船首航记录
一行代码玩完19亿元卫星
近期连续上涨7天以上的股