APP下载

航电显控软件数据链模块软件测试

2019-04-26孙龑徐豪胡玉露葛晨余爱国

电子技术与软件工程 2019年4期
关键词:航电数据链测试方法

文/孙龑 徐豪 胡玉露 葛晨 余爱国

1 引言

随着通信技术发展,数据链已成为现代军事信息系统中的核心技术。而航电显控软件作为航电系统的一部分,在数据链通信中主要负责接收数据以及飞行员的控制命令,根据正确的处理逻辑与外部设备通信,并将数据链数据显示在显示设备上。

在航电显控软件测试过程中,数据链模块的测试具有如下特征:

(1)数据量大。仅“目标种类”一项就有近3000项,且每种分类下还有相关子数据,逐个测试工作量巨大;

(2)测试类型交织。由于航电显控软件的功能要求,在数据链模块测试过程中人机交互测试、功能测试、边界测试相互交织,很容易产生测试不充分的问题。

本文以航电显控软件为对象,依据国军标相关要求,通过软件架构分析、数据链数据分类等方面对软件测试方法进行研究。

2 航电显控软件数据链模块介绍

在某型机的航电显控软件的测试过程中,测试环境示意图如图 1所示。该航电显控软件的数据链模块主要包括两个部分:

(1)数据链数据解析模块,负责数据链数据的接收、解析、封装和发送;

(2)数据链数据显示模块,负责将解析后的数据链数据转化为图形或数字显示到航电显示器上并接收用户指令传递给数据链数据解析模块。

由于该航电显控软件中实现了较好的模块化:所有数据链数据采用统一数据格式进行存储,同一类型的数据采用相同的单元进行解析或封装。且根据国军标中对软件测试阶段和测试类型的划分和技术要求,在测试过程中隶属于白盒测试的(文档审查、单元测试等)工作过程相对固化。因此本文将针对数据链数据的特性展开分析,研究优化黑盒测试(配置项测试、系统测试)工作的方法。

3 测试方法的设计

依据该航电显控软件的接口设计文档,数据链与航电显控软件之间交互的数据可以分为三类:目标数据、指令数据、其它数据。

3.1 目标数据的测试方法设计

基于目标数据特点的分析,可以将目标数据的测试分为对目标名称的测试和对目标图标的测试。

3.1.1 目标名称的测试方法设计

基于数据链接口设计文档进行分析,目标名称具有如下特点:

(1)共有目标近3000种,每种目标具有唯一的类型ID和名称;

(2)目标名称显示在目标列表画面,通过航电显示器可以查看。

在对目标名称的测试中,基于目标名称的特征,在测试中存在如下难点:

(1)名称数量多,人工的方式很容易产生遗漏;

(2)既要测试名称与ID的映射,还要测试名称的正误;

(3)由于名称是通过航电显示器显示的,所以还要测试名称的显示是否符合要求。

基于以上难点,设计测试方法如下(测试方法流程参见图 2):

(1)通过工具从代码中提取名称字符串。从代码中拷贝名称字符串后删除冗余字符(文中通过Notepad软件完成),得到代码中的名称列表,进入步骤(2);

(2)通过工具建立代码中的ID号与代码中名称的映射。基本操作类似步骤(1),提取出代码中的ID号后,通过工具(文中使用Excel软件)建立代码中的名称与ID的映射列表,进入步骤(3);

(3)通过工具对代码中的映射与接口设计文档中的映射进行比对。通过比对(这里使用Excel,也可使用类似Beyond Compare等工具),查找出不一致,如果存在不一致,并进行更改,进入步骤(1);如果不存在不一致,进入步骤(4);

(4)模拟特征目标查看名称显示。选择带有特殊字符(如含有英文、中文、特殊符号、字符个数最多)的名称进行模拟显示,查看显示是否正常。在查看过程中除了要查看显示名称与需求中所要求的名称是否一致,还要查看颜色、布局等显示与软件需求是否一致。如果存在不一致,进行更改,进入步骤(5),如果不存在不一致,测试结束。

通过以上方法的设计,实现了如下目的:

图1:某型机航电显控软件测试环境示意图

图2:目标名称测试流程

(1)通过提取代码中目标名称字符串、工具审查的方式,替代了人工逐个审查字符串的方式,提升了测试效率;

(2)在工具审查的过程中也是基于ID映射的,并通过特征数据的功能测试,测试了名称与ID之间映射的正确性;

(3)在方法中设计了对特征数据的选择和功能测试,保证了显示的正确性。

3.1.2 针对目标图标的测试方法设计

基于数据链接口设计进行分析,目标其它信息具有如下特点:

(1)共有目标近3000种,每种目标都有一个图标,其中部分目标具有唯一的图标,也存在多个目标共用一个图标;

(2)每一种目标具有唯一的ID;

(3)每一种目标具有多个类型(敌、我、友等),每种类型的图标颜色不同。

在对目标图标的测试中,基于目标图标的特征,在测试中存在如下难点:

(1)由于在代码中图标是以位图的形式存储,仅使用代码审查的方式逐个查看位图过于耗时;

(2)原有的一个人发送仿真数据一个人监控测试的模式需要同时占用两个人;

图3:目标图标测试流程

(3)目标数量多,不采用优化的方式,耗时太长;

(4)由于每种图标的具有多个不同类型,逐个目标逐个类型的模拟会加倍测试的时间。

基于以上难点,设计测试方法如下(测试方法流程参见图 3):

(1)代码审查ID划分。即通过代码审查的方式确认使用同一个图标的ID范围是否正确,如果存在故障,则更改故障进入步骤(1),否则进入步骤(2);

(2)设计测试用例。依据数据链接口文档中图标ID范围的划分设计测试用例,同一种图标设计1~2个测试用例,完成后进入步骤(3);

(3)基于测试用例设计自动模拟程序。自动模拟程序具有如下特征:一、每隔一定周期自动发送一次数据,无需人工干预;二、每次发送N(N是指目标类型个数)个同一ID但是不同类型的目标数据;三、所发送的ID号由步骤(2)确定;四、同一ID的N个目标的在显示器画面显示的位置不同,不同ID的同一类型的目标处于画面的同一位置,完成后进入步骤(4);

(4)执行模拟程序。启动模拟程序,此时如果有剩余的未模拟的ID(即未执行的用例)则执行步骤(5),否则测试结束;

(5)测试图标显示。利用模拟程序发送的ID和类型,通过航电显示器查看ID与图标的映射、图标的样式和颜色设置是否正确,此时如果发现故障,则修改故障进入步骤(5),否则进入步骤(4)。

通过以上方法的设计,实现了如下目的:

(1)通过查看航电显示器显示的手段检查图标显示的正确性,相比于代码审查逐个ID审查图标的手段,提升了效率;

图4:指令数据测试流程

(2)通过模拟器周期性的发送仿真数据而不是人员逐个手动发送,节省了人力;

(3)依据数据链接口的要求,采用了先通过代码审查检查代码中ID与图标的映射再依据数据链接口优化测试用例的方法,减少了所需执行的测试用例个数;

(4)采用了同时发送多个不同类型的目标、固定位置显示固定类型目标的方式,实现了一次测试多个类型的目的,缩短了测试时间。

3.2 指令数据

基于数据链接口设计文档进行分析,指令数据具有如下特点:

(1)指令集中存在约30个数据块,每个数据块中含有1项至多项数据信息;

(2)共有约90条指令,每条指令由某几个数据块组合而成;

(3)指令通过航电显示器的指令画面显示,指令画面会显示出该指令中所含有的数据信息。

在对指令数据的测试中,基于指令数据的特征,在测试中存在如下难点:

(1)不同指令之间可能存在相同的数据块,采用穷举测试耗费时间太长;

(2)不同指令在指令画面的布局不同,需要对每一条指令的布局进行测试;

(3)每次测试过程中还需测试指令的解析是否正确,即指令解析数值与真实数值是否一致。

基于以上难点,设计测试方法如下(测试方法流程参见图 4):

(1)代码审查确定代码架构。通过代码审查,该航电显控软件具有如下特点:一、指令数据解析和指令数据显示为相互独立的模块;二、在指令的数据解析中是以数据块为单元,即每一个数据块构建一个解析单元,某条指令的解析是由属于该指令的数据块的解析单元组成;三、由于每个指令中所包含的数据块的组合不同,所以每个数据块的显示是不同的;审查结束后进入步骤(2);

(2)逐条模拟指令。如果此时存在未模拟的指令逐条发送指令数据,进行指令模拟测试,进入步骤(3);如果此时不存在未模拟的指令,测试结束;

(3)测试指令中的数据块。如果此时模拟的指令中存在未测试的数据块,进入步骤(4),否则进入步骤(2);

(4)单个数据块的测试。在测试中,主要完成如下工作:一、每条指令的测试是以数据块为单位进行的;二、每个数据块的测试包括解析测试和显示测试两部分;三、对于即将测试的数据块,先要确定该数据块在已测试的指令中是否已经测试过,如果已测试过则本次只需要进行数据块的显示测试,否则该数据块先要进行解析测试再进行显示测试。如果在测试过程中发现故障修改故障进入步骤(4),否则进入步骤(3)。

通过以上方法的设计,实现了如下目的:

(1)通过代码审查确定代码架构,基于代码架构,对于已进行过解析测试的数据块仅进行显示测试,即每个数据块仅进行一次解析测试,提升了测试效率;

(2)针对每一条指令的每一个数据块都进行了显示的测试,保证了显示的准确性;

(3)针对每个数据块都进行一次解析测试确保了每一个数据块解析的正确。

3.3 其它数据链数据

除了目标数据和指令数据外,数据链其它数据根据数据类型可以划分为枚举型数据和数值型数据。枚举型数据是指解析后的数值是一个个离散的值,每一个数据值均有对应的含义。数值型数据是指解析后的数值是连续值,表示的是一个数值范围。

表1:“空中目标”的“名称”信息

表2:“空中目标”的“名称”原测试方法耗时信息

表3:“空中目标”的“名称”本文设计的测试方法耗时信息

表4:“空中目标”的“图标”信息

表5:“空中目标”的“图标”原测试耗时信息

表6:“空中目标”的“图标”本文设计的测试方法耗时信息

表7:“指挥引导”指令的信息

表8:“指挥引导”指令的原测试耗时信息

表9:“指挥引导”指令的本文设计的测试方法耗时信息

表10:“时间基准消息”数据块的数据结构

表11:“时间基准消息”的原测试用例设计

基于数据链接口设计文档进行分析,其它数据链数据具有如下特点:

(1)数据由多个独立的数据块组成,每个数据块中含有一个或多个数据项;

(2)数据项为枚举型或数值型;

(3)每个数据块中不同的数据项的解析是相互独立的单元;

(4)在数据模拟过程中,只能以数据块为单元发送数据;

(5)针对每个数据块分为解析模块和显示模块,数据块在完成解析后显示到航电显示器上。

在对其它数据链数据的测试中,基于数据的特征,在测试中存在如下难点:

(1)针对某一数据项,穷举测试工作量过大,不易实现;

(2)对于一个数据块中存在多个数据项的情况,由于数据链数据模拟监控器是以数据块为单位进行发送,如果每次仅发送一个数据项的有效值,测试效率很低;

(3)数据测试过程中,既要进行解析测试,也要进行显示测试。

基于以上难点,设计测试方法如下(测试方法流程参见图 5):

(1)确定数据块中是否只有一个数据项。如果被测数据块中仅有一个数据项,进入步骤(2),否则进入步骤(7);

(2)确定该数据项是枚举型还是数值型。如果是枚举型进入步骤(3),如果是数值型进入步骤(5);

(3)代码审查映射一致性。通过代码审查确认代码中的映射与数据链接口设计文档中映射的一致性,如存在故障则修改故障进入步骤(3),否则进入步骤(4);

(4)构建测试用例集进行测试。用例集仅选取特殊值(最长字符串、特殊字符等)进行显示测试,如存在故障则修改故障进入步骤(4),否则测试结束;

表12:“时间基准消息”的原测试耗时信息

表13:“时间基准消息”的本文设计的测试方法用例设计

表14:“时间基准消息”的本文设计的测试方法耗时信息

图5:其它数据链数据测试流程

(5)构建测试用例集。依据边界值分析技术,对数值型数据项的每一个范围选取特定值(最小值、略大于最小值、正常值、略小于最大值、最大值)构建测试用例集,进入步骤(6);

(6)测试数据的解析和显示。模拟数据执行测试用例,测试解析和显示是否正确,如存在故障,修改故障,进入步骤(6),否则测试结束;

(7)分解数据项。即确认数据块中包含几个数据项,每个数据项是枚举型还是数值型;如果数据项为枚举型,则进入步骤(8),否则进入步骤(9);

(8)代码审查映射一致性。通过代码审查确认代码中的映射与数据链接口设计文档中映射的一致性,如存在故障则修改故障进入步骤(8),否则进入步骤(9);

(9)选取数据项用例值。仅选取数据项中的特殊值(最长字符串、特殊字符等)作为测试用例值,进入步骤(11);

(10)选取数据项用例值。即通过边界值分析选取数据项测试用例值,然后进入步骤(11);

(11)构建该数据块最小用例集。即依据步骤(9)和步骤(10)所确定的各个数据项的测试用例值,建立该数据块的最小用例集;该用例集每条用例由一组数据构成,用例集包含所有数据项的所有用例值;完成构建后进入步骤(12);

(12)执行数据块的最小用例集。执行步骤(11)所构建的用例集,进行解析测试和显示测试,如果存在故障则修改故障进入步骤(12),否则测试结束。

通过以上方法的设计,实现了如下目的:

(1)分别针对枚举型数据和数值型数据进行了测试设计,选取特征值构建测试用例集,而不是采用穷举的手段进行测试,提高了测试效率;

(2)基于每次要发送一个数据块的事实,根据数据块的情况构建最小用例集,每个用例同时对多个数据项进行测试,避免了逐个测试数据项的低效;

(3)通过执行测试用例集并观察航电显示器显示的手段进行测试,实现了数据解析和数据显示的同步测试。

4 测试方法示例及比较

针对以上测试方法,在本次研究中进行了如下验证以确认方法的有效性。由于原有测试方法和本文设计的测试方法在故障处理中所耗费的时间基本一致,故文中仅进行测试过程的耗时比对。

4.1 目标数据的测试方法的验证

4.1.1 目标名称的测试方法的验证

为简化验证过程,仅选取目标中的一个子类“空中目标”进行验证。“空中目标”的“名称”信息参见表1。

采用原有逐个模拟目标ID查看字符串显示的测试方法耗时情况参见表2,总耗时为 10秒/人·个 * 2人 * 152个=3040秒。

本文设计的测试方法的耗时信息参见表3,总耗时为 150秒 + 150秒 + 300秒 +120秒 + 3个 * 10秒/人·个 * 2人 + 15秒 = 795秒。

对比可知,本文设计的测试方法测试速度提升((152/795)/(152/3040)-1)*100%≈282%。

4.1.2 目标图标的测试方法的验证

为简化验证过程,本次验证中仅选取目标中的一个子类“空中目标”进行验证。“空中目标”的“图标”信息参见表4。即每个ID对应5种类型的图标,但是由于共用的原因,实际图标库中仅有50个不同的图标。

采用原有的逐个模拟ID和类型数查看图标显示的方法耗时信息参见表5,总耗时为 10秒/人·个 * 2人 * 5种/个 * 152个 = 15200秒。

采用本文的测试方法的耗时信息参见表6,总耗时为760秒 + 50秒/人·个 * 10个 * 1人 + 20秒/个 * 10个+1800秒 =3260秒。

对比可知,本文设计的测试方法测试速度提升约((152/3260)/(152/15200)-1)*100%≈366%。

4.2 指令数据的测试方法的验证

为简化验证过程,本次验证中仅选取指令中的一个子类“指挥引导”进行验证。“指挥引导”指令的信息参见表7。

采用原有的逐个模拟指令查看指令的解析与显示的方法耗时信息参见表8,总耗时为 20秒/条 * 20条 * 2人 + 30秒/个·人 * 54个 * 2人 = 4040秒。

采用本文的测试方法的耗时信息参见表9,总耗时为20秒/个 * 18个 + 30秒/个·人 * 18个 * 2人 + 20秒/条·人 * 20条 * 2人 + 10秒/条 * 20条 = 1900秒。

对比可知,本文设计的测试方法测试速度提升约((20/1900)/(20/4040)-1)*100%≈113%。

4.3 其它数据的测试方法的验证

由于其它数据量较多,为简化验证过程,本次验证中仅选取一个数据块“时间基准消息”进行验证。“时间基准消息”数据块的信息参见表10。

采用原有的逐个模拟数据项的方法设计的测试用例集参见表8,查看解析与显示的方法耗时信息参见表11和表12,总耗时为5秒/条 * 20个 + 10秒/个·人 * 20个 * 2人 + 5秒/个·人 * 20个 * 2人 = 700 秒。

采用本文中测试方法设计的测试用例参见表13,采用本文设计的测试方法的耗时信息参见表14,总耗时为90秒 + 25秒/条 * 5条 + 10秒/条·人 * 5条 * 2人 + 25秒/条·人 * 5条 * 2人 = 565秒。

对比可知,本文设计的测试方法测试速度提升约((20/565)/(20/700)-1)*100%≈24%。

4.4 测试方法有效性的验证

通过文中的方法完成自测试后,在三方测试过程中,航电显控软件数据链模块未发现故障,测试方法有效。

5 结束语

本文针对某型机航电显控软件数据链模块的测试过程进行了研究,根据航电显控软件与数据链之间的交互关系,提出了一种基于数据特征的灰盒测试方法。该方法针对不同类型的数据链数据,设计了不同的测试流程,针对性地优化了各类型数据的测试过程。文中还对原有测试方法和本文设计的测试方法进行比较,证明了本文的测试方法在效率上的提升。本文对类似架构的航电显控软件的测试具有一定的参照价值。

猜你喜欢

航电数据链测试方法
基于泊松对相关的伪随机数发生器的统计测试方法
多平台通用数据链助力未来战场
高速公路工程项目实施中数据链应用探析
基于深度学习的无人机数据链信噪比估计算法
基于云计算的软件自动化测试方法
DLD-100C型雷达测试方法和应用
民用飞机航电系统虚拟教学资源建设
一种无人机数据链信道选择和功率控制方法
某型无人直升机航电舱热设计优化
航电枢纽清污系统改造