APP下载

CBTC系统数据转换工具自动化测试框架研究

2020-06-29胡甜

机电信息 2020年12期

摘要:针对CBTC系统数据转换工具测试中由于数据量大、回归轮次多等原因导致的耗时、耗力的现状,提出了一种自动化测试框架,旨在提高测试效率,缩短测试时间,减少人为错误。该自动化测试框架易于扩展,可以灵活地应用到各个项目中。

关键词:自动化测试框架;测试脚本;数据转换

0    引言

基于通信的列车控制(Communication Based Train Control,简称CBTC)系统已经成为城市轨道交通信号系统的发展方向[1]。数据,作为CBCT系统中的核心组成部分,肩负着为整个CBTC系统的运行提供线路数据信息、子系统数据信息等重要功能。为了快速准确地生成数据,数据转换工具应运而生,该工具提供了子系统设计数据的生成、系统数据和子系统设计数据的安全校验以及子系统应用数据的生成等功能。由于生成数据的安全性和准确性是CBTC系统安全连续运行的重要保证,因此需要对数据转换工具进行充分有效的测试。

在项目执行过程中发现,目前的数据转换工具测试存在以下问题:

(1)手工黑盒测试回归效率低。

(2)由于数据量大,手动测试存在偶然性和不确定性。

(3)回归的覆盖率不足,容易遗漏问题。在项目执行过程中,由于执行进度和交付时间紧等原因,测试策略通常是回归测试,也就是根据需求变更和代码变更挑选回归范围,在回归覆盖率和测试时间之间折中,但这样很容易遗漏问题。

本文针对前面提到的数据转换工具测试中由于数据量大、回归轮次多等原因导致的耗时、耗力的现状,提出一种自动化测试框架,旨在:

(1)降低回歸成本,减少人力和时间投入;

(2)提高回归覆盖率,每一轮测试都可以做到全回归;

(3)提高回归的稳定性,使测试结果确定。

1    CBTC系统数据转换工具概述

图1是CBTC信号系统的架构,包括列车自动监控子系统(简称“ATS子系统”)、区域控制器(简称“ZC子系统”)、联锁子系统(简称“CBI子系统”)和车载子系统(简称“OBCU子系统”)[2]。

下面简单介绍一下各子系统的功能:

(1)ATS子系统完成列车运行监控、报警显示、进路排列和运行图的调整等功能,还可以提供近期的列车运行记录的查询。

(2)OBCU子系统是控制列车运行和保证列车实现移动闭塞制式的关键设备。

(3)ZC子系统是重要的地面控制设备,主要功能是对本区域内运行的列车进行管理,同时考虑列车进路、道岔状态、线路限速以及其他障碍物的条件,向列车发送“移动授权”。

(4)CBI子系统是为了保证行车安全,在进路、道岔和信号机之间存在的相互制约关系。主要负责采集道岔、信号机、屏蔽门、紧急按钮等的状态信息,并控制它们,完成列车进路的办理和取消。

每个子系统都需要轨旁数据(比如线路上道岔、轨道等轨旁设备的信息)和子系统数据(比如站台信息、进路信息等)的支持,而子系统软件运行时则要读取特定格式(比如二进制或者XML格式)的文件,数据转换工具的作用就是将轨旁数据和子系统数据根据各子系统的设计要求,转换成规定格式的设计数据。下面简单介绍一下数据转换工具。

CBTC系统数据转换工具是用于系统设计和数据转换的软件平台,功能包括:

(1)导入、导出轨旁数据;

(2)导入、导出系统参数;

(3)导入、导出子系统设计数据;

(4)数据校验,工具可以检查出源数据的格式错误,并正确报警。

该工具的输入数据是轨旁数据和子系统设计数据,多为Excel格式;输出为子系统数据,多为二进制格式。

为了确保系统运行正常,一定要保证转换前后数据的一致性。

2    自动化测试框架概述

框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面给出的定义,而后者是从目的方面给出的定义。从框架的定义可以了解,框架可以是被重用的基础平台,也可以是组织架构类的东西。其实后者更为贴切,因为框架本来就是组织和归类所用的。

自动化测试框架可以提供自动化测试执行和管理功能的架构模块,测试完成后统计测试结果。自动化测试框架需要满足以下几个要求:

(1)自动化测试更便于实施,也就是说,写测试脚本要方便,要让不怎么懂技术的测试人员也可以写自动化测试脚本。

(2)解决自动化测试脚本本身存在的问题,如异常处理和场景恢复等[3]。一个自动化测试框架在批量执行脚本的情况下,不论遇到什么情况,如脚本运行错误、脚本质量错误、测试环境异常、被测设备死机或挂起等,都要有能力重新清理测试环境,使测试环境恢复到最初始的状态,并执行接下来需要执行的脚本。

(3)易于维护。自动化测试是为了提高效率,因此测试框架和测试脚本都要易于维护,不能让维护变成另一种工作量。

(4)可重用性[4],在框架里,可以实现一些通用功能,简化脚本开发过程。

(5)测试报告美观易读。

因此,自动化测试框架应具备以下功能:

(1)Log:日志记录和管理功能,针对不同情况,设置不同的日志级别,方便定位问题。

(2)Report:生成测试报告。

(3)Common:公共函数、方法以及通用操作的管理,遵循高内聚、低耦合的原则,为编写脚本提供便利。

(4)TestCase:测试用例管理功能。

(5)Harness:提供多种测试用例的执行方式,方便测试人员执行脚本;还负责异常梳理和场景恢复。

3    针对数据转换工具的自动化测试框架

3.1    测试框架架构

测试框架架构如图2所示,其中DataTool为被测体,测试框架包括:

(1)Log:提供日志功能,设置不同的日志级别,可以在案例执行过程中写入日志,方便定位问题。

(2)Harness:提供了测试案例的管理方式和执行方式。

(3)TestCase:提供脚本编写的模板,测试人员可以基于框架编写测试脚本。

(4)Common:提供一些可重用功能,以简化脚本编写难度。

(5)Report:测试结束生成測试报告,提供简洁明了的测试结果和测试日志。

(6)ExcelReader:针对数据转换工具开发的Excel读取和修改模块,用来读取数据工具的输入数据。

(7)BinaryReader:针对数据转换工具开发的二进制文件读取模块,用来读取和解析数据工具的输出数据。

对于数据转换的测试流程为:测试脚本分别读取输入数据和输出数据,依据一定的规则进行运算,然后将输入数据和输出数据进行比对,记录日志。

对于数据校验的测试流程为:根据测试目的,修改输入数据,运行数据转换工具读取修改后的输入数据,通过测试脚本读取报警内容,和期望结果进行比对,记录日志。

3.2    Log功能

Log功能提供如下接口:

(1)LogPass(string msg):记录测试通过。

(2)LogFail(string msg):记录测试失败。

(3)LogInfo(InfoType iType,string msg):记录测试日志,其中日志类型分为Info、Error、Debug和Highlight四种类型,方便测试人员定位问题。

测试人员可以在编写脚本时调用Log模块记录日志,还可以通过该模块根据判据记录测试结果。

3.3    Harness功能

Harness模块提供了如下3个主要功能:

(1)测试脚本管理:该模块提供了测试脚本的编写模板,测试人员可以根据模板编写脚本,如果有其他需求,该框架也可以很简便地扩展。

(2)测试脚本执行:该模块支持多种执行方式,使用模块提供的命令行,可以按照测试人员分类执行,也可以按照测试类别分类执行。

(3)测试场景恢复:测试框架还支持在脚本执行前后进行特定的场景恢复操作,保证脚本之间的独立性。

3.4    TestCase功能

在该测试框架中,每个测试脚本均为一个命名唯一的函数,且都有唯一的属性,Harness模块会根据该属性读取并执行测试脚本。这样,测试人员只需要关注脚本编写本身,极大地降低了对测试人员编码水平的要求。

测试人员编写脚本时可以根据测试目的调用Common和Log模块提供的接口。

3.5    Common功能

Common模块提供了一些可复用的功能,封装成统一的接口,供测试脚本调用,降低了脚本编写难度。主要功能包含:

(1)支持多种数据类型的结果比对,并生成日志;

(2)读取二进制文件,支持大小端,并且按照规定的格式解析二进制文件;

(3)读取XML文件;

(4)读取和修改Excel文件,这样,测试人员可以通过接口调用来修改Excel文件,而非人工操作,极大地提高了测试效率和测试准确率。

3.6    Report功能

Report模块提供了两种形式的报告:txt格式和xml格式。

(1)txt格式的测试报告包含测试脚本执行过程中生成的日志,如图3所示。

(2)xml格式的测试报告提供了测试结果总结,如图4所示,包含测试环境、测试时间、测试脚本名称和测试结果,执行失败的脚本会高亮。测试报告的内容和格式也可以根据测试需求进行修改和扩展。

4    结语

数据工具自动化测试框架可以用于数据工具测试,作为框架,它的结构是开放的,使用时可以根据测试的需要对其进行扩展和改进,可灵活运用到各种项目中。在项目执行过程中,通过使用该工具,可以极大地提高测试效率和测试准确率,对测试人员的代码水平也没有太高的要求。

[参考文献]

[1] 2009—2012年中国城市轨道交通线网规划及行业设备报告[R].

[2] IEEE Standard for User Interface Requirements in Communications-Based Train Control (CBTC) Systems: 1474.2—2003[S],2003.

[3] KELLY M.Choosing a test automation framework[EB/OL]. [2020-03-20].https://www.ibm.com/developerworks/rational/library/591.html.

[4] NAGLE C.Test Automation Frameworks[EB/OL].[2020-03-

20].http://safsdev.sourceforge.net/FRAMESDataDriven-TestAutomationFrameworks.htm.

收稿日期:2020-03-24

作者简介:胡甜(1982—),女,湖北红安人,博士,工程师,软件测试主管,研究方向:嵌入式软件白盒测试、软件自动化测试。