APP下载

CBTC区域控制器子系统测试结果自动化研究与实现

2021-04-04张焜熊坤鹏朱程辉刘锦峰

现代信息科技 2021年18期

张焜 熊坤鹏 朱程辉 刘锦峰

摘  要:CBTC区域控制器(下文简写为ZC)子系统是地铁信号系统重要的安全控制子系统,其功能逻辑复杂,测试结果和数据具有强关联性。为了提高ZC子系统的测试效率,对ZC子系统的测试框架和测试平台进行了研究,结合ZC子系统的特点,提出并实现了测试结果自动化分析方法。上述测试方法不仅提高了测试效率,同时也提高了脚本的可复用性。

关键词:区域控制器;自动化分析;测试效率;可复用性

中图分类号:TP273   文献标识码:A 文章编号:2096-4706(2021)18-0168-03

Abstract: As an important safety control subsystem of the subway signal system, the Zone Controller (ZC) subsystem is complex and the test results are strongly correlated with the data used. In order to improve the test efficiency, the test framework and the platform are researched. Combined with the characteristics of ZC subsystem, an automated analysis method of test results is proposed and realized. The test method not only improves the test efficiency, but also improves the reusability of the script.

Keywords: zone controller; automated analysis; test efficiency; reusability

0  引  言

ZC子系統是列车安全监控和运营管理的核心轨旁控制设备。它的主要功能是根据列车发送的位置报文和轨道区段上次级检测设备的占用出清状态来实现列车的位置追踪,结合当前ZC和相邻ZC区域内的所有轨旁信号设备状态为列车计算安全防护区域,并给列车发送移动授权,确保整个线路上的列车安全运行。ZC子系统的具有如下特点:功能庞大,逻辑复杂,计算量大,部分功能需要结合数据才能完全实现,且ZC子系统是运行在2取2的安全平台上的。在当前的确认测试阶段,已经实现了测试执行的自动化,测试人员编写测试脚本后,测试用例即可自动运行,但是测试结果还是完全依赖于人工检查,导致测试效率的提高遇到瓶颈,主要体现在:

(1)结果检查需要经过多重分析,确认的难度大,耗时长。

(2)部分计算量较大的用例,人工计算经常出错。

(3)测试结果和数据的强关联性导致当数据修改或升级后,结果需要重新检查确认。

(4)由于平台升级或代码优化,需要经常做回归测试。现有的自动化测试方法对于ZC子系统适配性不高[1,2],而针对CBTC信号系统的自动化测试多用于测试执行阶段,很少涉及结果自动化分析[3-5]。

基于以上原因,结合ZC子系统的特点,在原有测试平台基础上,增加测试结果自动化分析功能和相关接口,创建了ZC子系统自动化测试公共函数库及自动化分析脚本,进一步提高了测试质量和测试效率。

1  自动化分析框架

自动化分析框架是在现有的自动化执行测试平台上,增加相应功能和接口实现测试结果的解析和测试数据的读取,同时为测试人员提供自动化分析接口,测试人员可以在此基础上根据需求和用例编写自动化分析脚本,实现测试结果的自动化分析。在每个用例执行完成后,直接离线执行自动化分析脚本分析测试结果。自动化分析框架结构如图1所示,包含三层处理:输入解析处理,测试结果分析,以及分析结果输出。

输入处理功能包含数据解析模块和记录解析模块,分别用于解析相应测试脚本中使用的测试数据和测试过程中产生的诊断数据。解析处理完成后,生成的数据结构可直接用于后续的测试结果分析模块。

结果分析功能包含用于自动化分析的函数库,测试分析模块和测试分析驱动模块。其中,自动化分析函数库又包含了通用分析函数库,可应用于所有子系统,以及自定义函数库,可应用于专用的子系统。测试分析模块是测试人员根据用例或需求规则编写的自动化分析脚本,最后可以返回预期结果。测试分析驱动模块,用于声明在当前测试分析脚本中使用的数据源,并进行预期结果和实际结果的比对,返回比对结果。

输出功能包含了测试结果输出模块,测试人员可自定义输出的内容和格式,保存结果后用于人工分析和测试报告生成。

2  基于ZC子系统的自动化分析设计与实现

2.1  输入处理功能

对于ZC子系统来说,测试使用的数据为ZC数据准备工具使用的输入数据,后缀名为.par,可以简化理解为一种特殊的文本数据;测试的诊断数据包含两类,一类是wireshark的抓包数据,记录测试过程中ZC子系统同其他子系统的所有通信数据,另外一类是OMAP数据,记录测试过程中ZC子系统内部所有变量的变化。

数据解析模块解析.par文件是根据数据中具有的特殊格式,识别部分行的特殊字符,最终生成可识别的数据结构。

测试记录解析模块解析wireshark文件是根据wireshark的Lua解析文件中的配置进行数据包的解析,同理,测试记录解析模块解析OMAP文件是根据OMAP配置文件中的配置进行数据包的解析,最终生成可识别的数据结构。特别的是,以上两种测试记录,在后续分析时是需要有一定对应关系的,因此,在解析过程中两种数据结构都会增加对应本机的接收或发送时间。

所有经过解析的数据结构都和需求相对应,可以直接应用于后续的测试分析功能中。

2.2  结果分析功能

作为自动化分析的核心逻辑,结果分析功能由平台开发人员和测试人员共同设计和实现。

通用分析函数库包含所有子系统常用的函数,具有很强的通用性,功能包括:坐标的计算、对象外部ID与内部Index的相互转换、对象比较等。

自定义函数库是根据被测系统的特征设计的,基于ZC子系统的特征,制定了以下两个原则设计应用于ZC子系统的函数库。原则一,实现测试分析脚本和数据的弱关联,即当测试数据(线路)变更的时候,不需要修改测试分析脚本。原则二,ZC子系统的基础常用功能函数。对于原则一,想要实现脚本和数据的弱关联,需要实现数据对象处理功能。对ZC子系统常用数据对象的处理,主要包含查找对象类型、查找对象参数、计算对象间关系等。对于原则二,ZC子系统最常用的基础功能之一是每个周期都会给列车计算保护区域,此功能计算较复杂,且应用于其他大部分ZC子系统的功能中。另外,ZC子系統的突出特点是一个线路中会有多个ZC,每个ZC只负责自己相关线路的列车保护,在列车通过ZC边界时,相邻ZC之间会有通信和处理,可以使列车安全顺畅通过。这部分功能的相关数据和内部处理都是比较复杂的,因此,会创建相关的函数库。主要包含计算ZC边界位置、计算虚拟边界位置,相邻通信ZC的周期匹配,相邻ZC的线路信息计算等功能。另外,在编写测试分析脚本的过程中,发现的常用功能函数,也可以在后期加入进自定义函数库中。

测试分析模块包含两部分,数据格式定义和自动化分析规则。数据格式定义时,测试人员根据相应脚本的功能需求以及用例中包含的所有检查点来定义数据格式,方便后续的读取和检查。自动化分析规则是自动化测试脚本的主体部分,测试人员根据测试用例和需求使用python语言编写测试代码。其中,所有脚本都是以ZC子系统的内部周期k为基准,对于wireshark数据,由于不包含ZC周期,则使用同一个时间的前后一段时间(T)的所有包(如OMAP数据时间为11:21:20,那么,wireshark数据就取11:21:20的前后1 s时间内的所有包)进行处理比对,T可以在脚本中自由调整,对于T的设置,需要考虑网络延时,测试充分性和效率等因素。

测试分析驱动模块包含两部分:数据源声明和分析结果比对。在数据源声明中,测试人员需要首先声明测试记录的类型和存放路径。对于OMAP记录,还需要声明要使用的页名,对于wireshark记录,还需要声明通信数据包类型、IP地址、端口号、通信数据包名称。在分析结果比对中,会进行实际结果和预期结果的比对。

2.3  输出功能

测试结果输出模块根据配置选项,可以输出不同格式和内容的测试结果。输出的格式主要包括表格格式和图表格式。输出内容包含以下所示几个部分:

(1)所有本轮测试用例的状态统计。

(2)每个用例步骤的状态统计。

(3)测试不通过的用例步骤分析,包含测试不通过的周期、实际结果、预期结果等信息,方便后续问题的分析和解决。

(4)测试分析脚本的分支覆盖率统计。如果分支覆盖率没有达到100%,就说明实际的测试场景和测试结果可能没有完全满足测试用例,没有完全覆盖测试需求,这也需要重新考虑调整测试执行的脚本。

(5)本轮测试用例通过率。同时,如果需要比较多个版本的测试结果,也可以导入其他版本,进行多个测试结果的数据比对,方便进行代码开发质量的分析。

所有的输出内容可以根据需要自由选择,同时,也可自定义增加其他相关测试数据。

3  测试脚本优先级分析

由于每轮测试时间有限,无法在一轮测试中完成所有测试脚本的编写。为了最大限度地利用测试时间,提高测试脚本使用率,在ZC子系统阶段规定了如下表1测试脚本编写的优先级,由1至5,优先级由高至低。

根据以上优先级列表,对于同时满足多个优先级的,以最高的优先级为准。

4  测试效率统计分析

测试分析自动化应用于测试中,有效地提升了测试效率。根据自动化脚本优先级,在应用中首先编写了最小回归测试集的自动化脚本,针对最小回归测试集的脚本使用率和测试天数的数据变化如下图2所示。

由上图可看出,当测试脚本使用率较低时,脚本使用率的提升对于测试效率的提升帮助比较有限,原因是脚本编写也会损耗一定的时间,但是随着测试脚本编写的数量增多,脚本使用率提升到50%以上后,测试效率的提升非常明显。

另外,也整合了连续3个版本的测试效率的比对图,如图3所示。

使用了测试脚本分析后,测试效率稳步从4.5个每天提升到了7个每天。后续,随着测试脚本的充实,测试效率提升会更加明显。

5  结  论

本文根据ZC子系统的特点和测试现状,设计并实现了脚本的自动化分析,具有以下优点:

(1)应用后的数据显示,可以有效提高测试效率。

(2)替代了复杂计算结果的人力检查,减少了返工和错误的发生。

(3)一般人力检查结果的范围很局限,最多几个到十几个周期,而自动化分析脚本可以覆盖所有有效周期,对于结果的检查更加充分。

(4)实现了测试数据独立化,当测试数据有变化时,测试分析脚本不需要更新。

参考文献:

[1] 杨丰玉,徐浩明,郑巍,等.嵌入式软件测试研究综述 [J].航空计算技术,2021,51(1):112-115.

[2] 孙雷.软件自动化测试的方法分析 [J].集成电路应用,2020,37(5):94-95.

[3] 郎红霞,宁滨,黄友能.基于软件易测试性的CBTC区域控制器系统设计 [J].铁道通信信号,2007,43(12):8-10.

[4] 胡甜.CBTC信号系统自动化测试框架研究 [J].信息与电脑(理论版),2020,32(9):190-194.

[5] 杨永国.一种嵌入式信号处理软件构件测试框架 [J].数字技术应用,2019,37(10):184-185.

作者简介:张焜(1985—),女,汉族,山东海洋人,工程师,测试主管,硕士研究生,研究方向:轨道交通信号系统。