基于接口仿真的雷达软件测试自动化技术研究与应用
2021-06-11刘宇,刘畅,吴辉,柳溪
刘 宇,刘 畅,吴 辉,柳 溪
(1. 中国电子科技集团公司第十四研究所,江苏 南京 210039;2. 北京航空航天大学 可靠性与系统工程学院,北京 100191)
0 引 言
近年来,雷达产品更新换代日逐渐加快,在软件定义装备发展的大趋势下,工业部门已开展多种软件化雷达研究,软件在雷达装备中的比重日益增大,软件质量对雷达装备质量而言至关重要. 采用传统的用户界面动态测试手段难以实现充分的软件测试,易造成缺陷遗漏. 由于接口原因直接或者间接导致软件缺陷占整个雷达软件系统缺陷的比重为20%到30%左右[1],而其中边界和异常数据是引起软件运行故障的最重要原因之一[2].
从接口端对雷达软件产品展开测试,模拟各种边界/异常数据的收发测试场景,可以提升软件测试的充分性,进而提升雷达软件的可靠性[3]. 而在雷达软件接口测试工作中,由于雷达软件接口形式多样、 结构复杂[4],雷达软件接口测试工作量增长迅速,急需研究雷达软件接口测试的自动化方法,用以提升测试执行工作效率,从而更好地保障雷达软件质量[5].
本文将接口仿真技术应用于雷达软件测试,从而使雷达软件摆脱硬件环境的约束,满足各正常和异常场景的测试需求. 此外,在接口仿真测试环境准备阶段中,纷繁复杂的数据结构建立和生成工作目前尚由人工操作完成,为此本文提出了一种自动化的解决方法,在有效提升雷达软件测试的覆盖率及缺陷检出率基础上,进一步提升了雷达软件接口测试的自动化程度,有效保障了雷达软件的质量.
1 相关工作
目前,对测试自动化的相关研究非常多,王乾宇[6]提出了基于TestQuest测试工具的一套软件测试自动化方法和测试流程,在“虚拟维修训练系统”展开实例验证. 在武器装备国产化道路上,国产操作系统是构建自主可控的信息安全体系的关键,其本身的稳定性、 可靠性和安全性至关重要[7]. 在操作系统研发过程中,全面严格的测试验证成为必需,同时,为减少手工测试的劳动量和出错率,按照预定计划实现自动化测试,是操作系统研发测试验证的必然趋势和要求. 通过自主开发以及引入完善、 综合应用主流商用或开源软件测试工具,研究构建由测试管理、 自动化测试、 缺陷管理等子系统组成的国产操作系统测试体系,实现测试全过程管理统一高效的国产操作系统自动化测试平台,保证国产操作系统研发和维护时的质量可靠性,以满足建立完整的国产操作系统生态链的需要.
在雷达软件测试领域,同样对软件的稳定性、 可靠性和安全性有极高的要求,建立自动化测试平台以保证雷达软件质量的可靠性十分必要.
吕江涛等人[8]围绕软件可维护性设计的7项评价标准,结合软件生命周期的各个阶段,系统全面地阐述了雷达软件可维护性设计的若干技术措施,提出了综合运用开放式软件架构、 软件中间件技术等多种方法,从可理解性、 可修改性、 可移植性等角度全面提高雷达软件的可维护性. 提升雷达软件的可维护性更多的贡献在于提升软件研制效率,节约时间成本,而非减少软件缺陷、 降低软件故障发生率,雷达软件的安全性和可靠性仍然缺少更有力的保障; 张其政等人[9]提出了以数据为驱动,对雷达产品软件进行定量度量的方法,并以雷达产品软件质量量化分析为基础开展质量管理. 雷达软件质量度量技术的作用在于客观分析和评价雷达软件的质量,为软件质量管理提供依据和指导,借助管理的手段提升雷达产品软件质量; 孙俊若等人[10]深入分析雷达系统软件的缺陷分布规律,选择与雷达系统软件缺陷预测相关的度量元,通过对雷达软件故障数据集和系统软件失效模式进行分析,构建了雷达系统软件缺陷预测模型,为预防雷达系统软件缺陷打基础,但该研究尚处于初级阶段,缺乏工程实践应用.
以上方法紧密围绕提升雷达软件质量为中心,从后期维护、 研发管理以及预测预防多个角度展开相关技术研究,可以减少雷达软件缺陷的产生,但都无助于发现和修复软件缺陷,无法解决直接影响雷达软件质量的根本问题. 即使采用上述方法将软件缺陷降低到只有一个,而这一个缺陷若未被检测出并进行修复,也同样对雷达软件质量存在不可估量的影响.
2 基于接口仿真的雷达软件测试自动化框架技术
嵌入式软件封闭抽象、 动态可变、 软硬件耦合性强,因此,嵌入式软件在集成完成后到投入实际使用的两个阶段之间,缺乏一种有效的测试手段. 在嵌入式软件集成阶段,由于缺少交联系统,无法完全覆盖嵌入式软件的时序、 接口等测试,容易造成缺陷遗漏. 而在嵌入式软件的实际使用阶段进行测试,面临两大问题的挑战: 一是系统硬件设备数量和性能有限,无法满足大数据量等极限强度测试条件的需求; 二是如果嵌入式软件在实际环境中出错,存在损坏硬件、 影响整体系统运行甚至危害人身安全的风险,差错、 纠错成本较高.
软件接口仿真测试环境旨在对嵌入式软件提供实时的、 可闭环的、 非侵入式的测试,支持功能性测试、 边界测试、 压力测试等多种测试类型,能够提供仿真模型建立、 I/O设备配置、 测试脚本及数据生成、 测试运行及状态监控、 测试结果实时显示、 测试结果记录、 测试结果分析、 测试回放及数据分析处理、 软件可靠性评估等多种功能. 因此,通过基于接口仿真的方法对雷达软件进行测试,可以克服由于手工测试带来的巨大的人力、 物力和财力的消耗,同时能够提升雷达软件测试的充分性.
2.1 软件接口仿真环境特性分析
军用雷达系统具备硬件组成类型多、 系统任务并行度高、 数据处理实时性强等特点,因此,用于雷达软件测试的接口仿真环境应具备以下特点[11]:
1) 供实时多任务运行
软件接口仿真环境既具备实时系统的一般特性,能够提供并支持测试激励施加和测试结果收集、 模型处理数据与算法实现、 测试过程监控界面等多项测试相关功能同时运行,同时为满足嵌入式软件测试的需要,又具备其独有特性,例如高可靠性、 高实时性、 输入输出的确定性、 ISA和PCI设备动态可配置等.
2) 测试环境仿真虚拟化
软件接口仿真环境以数字仿真的方法对被测嵌入式软件的运行环境进行仿真,模拟外部硬件系统或软件系统与被测嵌入式软件进行通信交互,使得被测软件可以在脱离特定硬件环境约束的条件下执行测试,仿真环境相较于真实运行环境而言更易于测试人员操作、 控制,被测软件的运行也更加便捷、 灵活.
3) 仿真环境通用性强
当前雷达系统是由多个配置项软件组成的,不同雷达系统的配置项组成与交互方式各不相同,且各配置项软件所依赖的硬件平台也不尽相同,因此软件接口仿真环境要在多个层次提供通用性的解决方案,使用户能够通过灵活的环境设置,实现对不同系统的测试[12]. 在硬件通讯设备仿真层次,采用虚拟设备驱动(VDD)技术,支持添加不同的I/O设备; 在网络体系结构层次,在基本的分布式体系结构下,可以通过扩展节点,从而实现对复杂系统的测试; 在被测系统结构仿真层次,可通过通讯协议设置、 接口格式定义等配置实现不同系统的构型; 在测试环境开发层次,采用通用的测试用例及测试脚本开发环境(TCSIDE),提供统一的测试用例和测试脚本开发方法和语言,便于测试用户使用和移植.
2.2 基于接口仿真的雷达软件测试流程
基于接口仿真的雷达软件接口测试,是以仿真的方式模拟外部系统与被测的雷达系统之间进行信息交互,通过测试数据的收发以及对测试结果的分析,完成对被系统的测试,基于接口仿真的雷达软件接口测试工作流程如图1 所示.
图1 测试仿真环境工作流程图
基于接口仿真的雷达软件接口测试主要通过以下步骤执行:
1) 测试环境仿真建模
以软件接口设计文档为输入,构建各雷达分系统软件关联环境模型,定义输入输出属性,正确反映出各分系统软件的数据交互关系,同时要将各个分系统之间的通讯协议映射到仿真模型的连接属性中,雷达软件接口测试仿真模型如图2 所示.
图2 雷达软件接口测试仿真模型示例Fig.2 Example of radar software interface test simulation model
2) 测试脚本编写
测试脚本是整个软件测试正常运行的“剧本”,是驱动整个软件测试正常运行的关键因素. 根据需要执行的测试用例编写相应的测试执行脚本,由实时调度程序驱动测试脚本解释器对测试脚本进行实时解释,动态生成并分发测试数据到各仿真模型,同时通过解释器、 各仿真模型与被测软件之间的交互,对测试反馈进行处理,从而达到测试的目的.
3) 测试数据准备
雷达软件接口测试过程中需发送大量的测试数据,为提升测试执行效率,可以将预进行测试的数据全部存储在数据源文件中,在测试执行过程中通过载入数据源文件实现测试数据的读取和发送,从而完成测试.
4) 测试执行
通过模型和脚本的编译构建、 链接完成测试环境初始化并开始执行测试,同时在测试执行过程中实时监控测试执行状态、 显示测试结果.
5) 测试结果分析与评估
根据设置采集方案记录相应的返回数据,测试人员可利用采集的数据进行数据回放与分析,依据分析结果对软件的可靠性进行评估.
3 测试数据结构自动建立与生成技术研究
在软件接口仿真环境搭建与准备接口测试数据环节,仍需手工操作,由于雷达软件测试项目的接口数量和规模都相对较大,手工操作存在数据多、 易出错、 效率低等问题,为此,本文针对如何自动化解决这个问题展开研究.
3.1 测试数据结构自动建立
当前雷达装备的大多数嵌入式软件系统依托C/C++语言开发,软件通讯接口的定义是通过头文件中的结构体实现的,这为软件编码提供了方便,但是无法直接在接口仿真环境中导入作为通信报文结构的定义. 为此,本文提出一种从头文件到仿真环境通信协议自动化定制的方法,主要步骤如下:
1) 解析接口定义头文件
在头文件中,软件接口是通过结构体进行定义的,设计师通常将多个软件接口间复用性较高的数据字段定义为子结构体,复杂的软件接口往往涉及多层嵌套,因此,需要对数据结构进行迭代解析,逐层展开嵌套结构,最终获得软件接口的完整结构;
2) 解析接口仿真环境配置文件
接口仿真环境中的通讯接口定义是通过环境配置文件的定义实现的,一般的仿真环境配置文件以可扩展标记语言编辑和存储、 解析接口仿真环境配置文件的标记结构、 获得仿真环境中通讯接口的分布情况;
3) 通讯接口结构导入
将从头文件中解析得到的软件接口元素依次按照仿真环境模型配置文件的语句结构,写入到相应的通讯接口中,从而脱离手工操作,通过自动写入底层配置文件,完成软件接口数据的自动建立,有效提升接口测试的自动化程度,降低人为操作的错误率.
3.2 测试数据自动生成
在对雷达软件接口进行接口测试数据设计时,要针对该接口所处理的每一条报文的每一个元素进行分析和设计,单一元素要进行边界值分析及异常值分析,测试数据设计工作量庞大,传统人工分析的方式容易造成设计数据遗漏,手工生成测试数据的方式工作效率较低.
通过总结历史雷达软件接口测试数据分布情况与设计方法,本文提炼了软件接口测试数据设计规则:
1) 有效数据
依据接口元素的有效值定义,若为枚举类型数据,则该元素的有效值应包含所有的枚举值; 若为一定范围内的连续值,则任意取有效范围内(不含边界)的任一值.
2) 边界数据
依据接口元素的有效范围,取有效范围的边界值以及上下边界的越界值共6种数据作为该元素的边界测试数据,如若接口元素的有效范围为[min,max],则边界数据为min-1,min,min+1,max-1,max,max+1.
3) 异常数据
异常数据为接口元素有效值或有效范围以外的值.
4) 异常报文
异常报文是指报文长度不符合接口定义的报文,主要包括以下两种形式: 测试报文长度小于有效报文长度和测试报文长度大于有效报文长度.
依据以上定义的数据生成规则,通过自动化解析软件接口中各元素定义的有效值范围,自动化的生成雷达软件接口测试数据[13,14],具体步骤如下:
1) 建立软件接口数据定义模板文件
以软件接口定义头文件为输入,解析生成预定格式的接口数据定义模板文件(简称模板文件),模板文件中包含接口元素名称、 元素数据类型、 元素枚举值、 元素有效范围等信息(如图3 所示),各元素有效范围按照数据类型的默认范围自动生成,模板文件支持人工编辑、 修改枚举值、 有效范围等信息.
图3 数据定义模板文件样例
2) 生成软件接口测试数据
以模板文件为输入,逐行解析模板文件中的元素数据类型、 有效范围等信息,按照以上描述的测试数据生成规则,自动生成雷达软件接口测试数据,并直接存储到文本文件中,导入至软件接口仿真环境中供测试执行直接调用,数据定义模板文件如图3 所示,数据自动生成方法流程如图4 所示.
图4 测试数据自动生成方法Fig.4 Automatic generation of test data
3.3 测试脚本编写及执行
编写雷达软件接口测试脚本,用以在模拟仿真环境中使用测试数据对被测雷达软件自动化执行测试. 在软件接口测试脚本中,结合被测雷达软件数据率、 响应时间等特点,依据测试用例定义相应的数据发送时间、 数据发送量等信息,运行测试脚本则可按照预设的数据发送条件,向被测雷达软件接口发送测试数据. 同时为测试执行设置返回数据采集方案,用以收集雷达软件接收测试数据后的反馈数据,测试人员通过对采集数据利用工具或人工进行对比与分析,从而对雷达软件的功能性、 可靠性等进行评估.
4 雷达产品实例研究
4.1 基于GESTE平台的雷达软件接口测试
GESTE(通用嵌入式软件测试环境)是由北京航空航天大学自主研发的嵌入式软件仿真测试系统,为嵌入式软件提供通用式的仿真测试环境,实现对嵌入式软件进行实时、 闭环、 非侵入式的系统测试. 在通用性的基础上,支持并辅助二次开发,从而满足雷达软件接口测试需求[15],因此,本文采用GESTE平台实现基于接口仿真的雷达软件测试技术.
4.2 雷达产品实例验证
为检验本文研究的基于接口仿真的雷达软件测试自动化方法,以及本文提出的测试数据结构自动建立与生成技术的有效性,以某型雷达装备的数据处理软件、 伺服控制软件和电源监控软件为实验对象,依据通讯报文的重要程度共选取30条报文展开应用,30条报文分别编号为M1—M30,各报文所含数据元素数量如图5 所示.
图5 实验报文所含数据元素分布情况Fig.5 Distribution of message data elements
在测试设计阶段,分别采用传统的通过人机界面进行测试的方法(简称黑盒方法)以及接口测试的方法,分别对实验对象进行测试用例设计,统计测试用例设计情况,用以分析本文方法在提升测试充分性方面的有效性.
在软件接口仿真环境建立阶段,首先依据头文件、 软件接口设计文档等输入,对实验的30条报文分别采用手工方法和本文提出的测试数据结构自动建立技术在仿真环境中建立通讯接口的方法,完成接口仿真环境建立; 然后分别采用手动方法和本文提出的测试数据自动生成技术,生成测试数据文本文件. 记录相应的处理时间,用以分析本文方法在提升工作效率方面的有效性.
在软件测试执行阶段,首先对数据处理软件、 伺服控制软件和电源监控3个配置项软件采用传统的通过人机界面进行测试的方法(简称黑盒方法)执行测试; 然后采用本文研究的基于接口仿真的方法对这3个配置项软件进行测试,并将检出的软件缺陷交由开发人员进行修改和回归; 最后将修改后的软件交由第3方测试机构对软件进行测试. 分别记录各阶段检出的软件缺陷数据,用以分析本文方法在提升软件缺陷检出率方面的有效性.
4.3 实例验证结果分析
1) 测试覆盖率分析
针对实验所选择的30条报文,在相同时间段内仅针对报文数据的有效性、 无效性及数据边界3个设计角度,分别以传统黑盒方法以及本文研究的基于接口仿真的雷达软件测试方法分别展开测试用例设计,形成的测试用例数量如图6 所示.
图6 设计测试用例数量Fig.6 Number of designed test cases
结合两种方法所设计的测试用例集,对报文各字段的正常、 异常测试场景覆盖情况进行分析,通过黑盒方法和本文方法均能实现对正常测试场景的完全覆盖,对异常测试场景的覆盖率数据如图7 所示.
图7 报文字段异常测试场景覆盖率Fig.7 Proportion of abnormal test scenarios formassage elements
进行正常测试场景设计时,黑盒方法及本文的接口测试方法都能够完全覆盖所有正常测试场景,但是在进行异常测试场景设计时,由于雷达的嵌入式软件封闭化的特性,许多异常测试场景以黑盒测试的角度是无法实现的,由图7 中数据也可以看出,由于受输入方法的限制,黑盒方法对异常场景的覆盖率是比较低的,通过采用本文的接口测试方法,可以实现对报文各字段的异常场景完全覆盖,测试覆盖率得到大幅提升,给予软件质量更为充分的保障.
2) 雷达软件接口测试仿真模型建立
传统手工方式在接口仿真平台创建接口元素,需要新建变量、 输入变量名、 选择数据类型3个操作步骤. 采用手工方式建立接口元素,是以单个接口元素为单位,逐一建立,从而实现创建一条完成的接口报文. 影响仿真模型单个接口元素建立时长的因素主要是操作人员对接口元素的熟悉程度以及在GESTE人机界面进行新建操作的熟练程度.
采用本文提出的测试数据结构自动建立技术,在GESTE平台创建接口元素,仅需人为操作选择预处理的头文件与仿真环境配置文件,接口元素创建与设置工作主要通过算法程序自动执行完成,处理时间大幅缩短.
分别采用手工方式和本文方法将实验的30条报文分别创建到GESTE仿真模型中,记录操作花费的时间,如图8 所示.
图8 建立仿真模型时间Fig.8 Time of building simulation model
针对实验的30条报文计算手工方式和本文方法建立仿真模型的效率,效率提升情况如图9 所示.
图9 建立仿真模型效率提升Fig.9 Efficiency promotion of building simulation model
由图9 中数据可以看出,采用本文方法较于手工方式工作效率大幅提升,接口元素越多,效率提升越显著,采用本文方法自动建立仿真模型较手工方式效率平均提升11.27倍.
3) 雷达软件接口测试数据文件生成
以软件接口测试的角度,依据本文3.2节提出的软件接口测试数据设计准则,分别采用手工方式和本文提出的测试数据自动生成技术,针对实验的30条报文分别进行测试数据设计,生成的测试数据量如图10 所示.
图10 软件接口测试数据量Fig.10 Number of software interface testing data
在本文方法生成测试数据的规则设置时,边界值分别取人工定义的物理意义有效范围边界值以及数据类型的有效范围边界值,当这两个范围重叠时,会生成冗余的测试数据,手动方式生成测试数据能够避免出现冗余数据,但是也容易产生数据遗漏.
记录两种方式生成测试数据所花费的时间,如图11 所示.
图11 测试数据生成时间Fig.11 Time of generating test data
由图11 可以看出,采用本文方法自动生成测试数据文件较手工方式效率提升50%以上,也可有效节约时间成本,提升工作效率.
4) 缺陷检出率分析
雷达的嵌入式软件由于缺少人机操作界面或部分界面进行了输入参数的限制,采用传统黑盒测试方法,许多异常测试场景难以覆盖,容易造成缺陷遗漏. 雷达软件中由于接口原因直接或者间接导致的软件缺陷占整个雷达软件系统缺陷的比重为20%到30%左右[1],而其中边界和异常数据是引起软件运行故障的最重要原因之一[2]. 采用基于接口仿真的雷达软件测试方法对雷达软件执行接口测试试验,测试数据如表 1 所示.
表 1 采用本文方法前后及遗漏缺陷数据对比Tab.1 Comparison of the defects before and after usingproposed method and the missing defects
从表 1 中数据可以看出,采用基于接口仿真的雷达软件测试方法对雷达软件进行测试后,发现问题数量明显上升,检出缺陷数量平均提升一倍,软件缺陷检出能力得到显著提升; 经过采用本文方法测试后的雷达软件交予第三方机构进行测评,检出缺陷数量显著收敛,雷达软件质量情况得到明显改善,体现了软件接口自动化测试对装备质量提升的促进作用.
对软件缺陷数据集进行分析发现,未采用本文方法,即使用传统的手工黑盒方法执行测试时,因部分参数由于界面输入保护无法执行异常数据测试,因此遗漏了许多异常数据测试场景; 而采用本文方法可直接从接口端模拟异常数据测试场景,更深入地检测了软件内部的异常保护情况,因此检测出了更多的软件异常保护不足的软件缺陷,相对于传统手工黑盒方式,软件缺陷检出率更高,从而更能保障软件的安全性和可靠性.
5 结束语
在信息化战争和军事智能化的发展趋势下,软件在装备的功能实现方面日渐占据主导地位,软件的质量状况也逐渐成为影响军事装备综合效能发挥的关键因素. 软件接口测试是雷达软件质量保障的重要手段之一,然而由于雷达软件接口纷繁复杂,使得接口测试工作开展困难. 本文首先针对基于接口仿真的雷达软件测试自动化框架技术展开研究,并应用于雷达软件的测试工作中,有效提升了雷达软件测试的覆盖率及缺陷检出率; 然后针对基于接口的雷达软件测试方法中测试数据的结构建立和生成工作,深入研究自动化的处理方法,大幅提升雷达软件接口测试自动化程度,使得针对接口测试这一项繁琐的工作可以快速执行. 但是由于头文件类型的接口定义文件不能给出接口元素的有效范围定义,在生成测试数据的过程中,需人工对接口模板文件进行编辑补充相应信息,下一步工作将继续针对如何能够自动化提取接口元素的有效范围定义等信息展开研究,从而进一步提升雷达软件接口测试的自动化程度.