计算机联锁系统自动测试系统研究

2021-01-26 08:36李文涛
铁路通信信号工程技术 2021年1期
关键词:自动测试测试人员测试用例

李文涛

(中国国家铁路集团有限公司工电部,北京 100844)

1 概述

计算机联锁系统作为保障行车安全最基础、最核心的信号控制系统之一,联锁软件投入使用前需要经过严格的审核和测试。车站联锁软件是将通用联锁软件应用于特定站型的实例化结果,不同车站的基础数据或联锁关系存在各自的特点。因各车站的联锁软件实质上不完全相同,所以需要对各车站联锁关系进行完整测试。如何提高测试有效性,是无数联锁工作者关注的问题。

目前国内联锁软件测试存在大量的重复性操作且测试量较大,采用人工测试不仅效率低、消耗了大量人力和物力资源,也容易因人员倦怠,出现人因失效。此外由于测试人员的知识水平、测试经验参差不齐,难以做到测试完备,不遗留缺陷。因此提升测试水平、测试能力,成为各设备提供商与设备接管单位迫切的需求。计算机联锁系统的广泛应用为自动测试的开展提供了可能。本文以灰盒测试为思路,设计实现了一种基于脚本驱动的计算机联锁自动测试系统,具有一定实际意义。

2 软件实现

2.1 需求分析

传统的计算机联锁系统结构如图1所示。

针对计算机联锁的功能性需求及产品特点,除了要求计算机联锁自动测试系统能在计算机联锁仿真模式下模拟行车的各种场景,还应具有以下特性:

图1 联锁系统基本框架Fig.1 Basic framework of interlocking system

逻辑正确:针对联锁功能的普遍性要求,自动测试工具应能根据设计规范和原则等正确执行测试步骤,分辨通过项和错误项;

高覆盖性:自动测试工具应有能力覆盖所有的被测对象及其相关检查条件,如进路、信号机、道岔等,做到不漏查,并减少相同测试功能的自动测试与人工交叉测试;

高效测试:站场数据随着站型的复杂程度成倍增加,要求联锁自动测试工具能高效地执行测试项,及时将测试结果反馈给测试人员;

分布式测试:针对大型站场的遍历测试,可以人工定制不同测试设备的测试任务,分布执行测试用例,以缩短测试时间,提升测试效率;

易读性:自动测试工具对测试失败项应有简单说明,便于测试人员确定失败原因;

维护便利:联锁逻辑复杂,特殊场景较多,测试用例应便于维护,便于增加或修改不同的测试场景。

灰盒测试介于白盒测试和黑盒测试之间,是基于程序内部细节有限认知上的软件测试方法,它考虑了用户端操作、特定的系统知识等因素,在系统组件的协同性环境中评价应用软件的设计。灰盒测试法不仅可以追踪输出变量也可以追踪中间变量,非常适合复杂的联锁数据的测试工作。

基于脚本驱动的测试框架因其通用性高、灵活性强的特点近年来受到众多关注。该类测试方法依靠通用测试脚本和特定测试用例完成。首先,根据约定语法编写测试脚本,脚本定义了测试的执行步骤和预期结果;然后,软件将会根据特定应用场景实例化脚本,实例化结果也叫测试用例。该类测试方法适用于测试步骤基本一致的测试场景,也可以根据特殊需求直接编写测试用例进行测试。联锁数据测试大多具有通用性,对于普通的进路或信号机等测试方法基本一致,但在特定站型下联锁设备可能存在特殊联锁关系,此时设计、测试人员需要单独为其进行考虑。基于脚本驱动的测试方法能够满足联锁测试的通用性和特定性需求。

综上,以灰盒测试为思想,设计实现一种基于脚本驱动的计算机联锁自动测试系统,如图2所示,该测试方法在仿真环境下最大程度地保留了系统功能。测试终端替代了值班员的按键操作,向操作显示设备和联锁计算机发送控制命令并分别从二者获取监测变量的执行结果,操作终端直接从测试终端获取执行命令和结果并将预定义的目的信息显示在界面上,如:进路建立、道岔单操等。

图2 自动测试框架Fig.2 Automatic test framework

2.2 实现

为实现计算机联锁数据的自动测试,首先需要建立车站信息表辅助测试系统获取测试目标、测试条件并判断测试是否满足测试人员预期。车站信息表不仅涵盖了传统意义上联锁表所有的信息,还对联锁车站所有的联锁设备进行统计和属性定义,如图3所示。

图3 车站信息表Fig.3 Station information sheet

基于脚本驱动的自动测试软件定义了3层框架,如图4所示。

图4 基于脚本驱动的软件架构Fig.4 Script-based software architecture

1)与操作终端通信及站场数据处理的应用层。应用层由文件读入模块组成,定义了DefFile类,主要实现输入文件的信息提取功能。输入文件包括:通用脚本模板文件、联锁测试表格、车站信息表等。

2)支持单个处理操作的逻辑层。逻辑层由解析脚本模块和脚本生成模块组成,定义了AnaScript类和GenScript类。脚本解析模块将通用脚本模板转换成只适用于某一站型的执行脚本文件;执行脚本生成模块将解析好的脚本文件转换成txt文件,即测试用例,该文件可以被操作显示设备识别。

3)实现具体测试案例及组合功能的接口层。接口层由脚本执行模块和测试记录模块组成,定义了ExeScript类和TestRecordDlq类。脚本执行模块实现与操作显示设备的通信,将逻辑层生成的测试用例逐条执行,验证文件中确认的变量是否与预期相符;测试记录模块实现测试结果的记录和显示。

为满足联锁产品的通用功能性需求,自动测试软件定义了如表1所示的几类功能函数,执行时,若函数中定义的对象为数组,那么系统将自动遍历执行该数组。测试执行如图5所示,测试结果参考《车站联锁设备维护管理办法》 (TG/XH213-2019)以EXCEL表格形式输出。

表 1 功能函数举例Tab.1 Example of performance function

图5 测试执行步骤Fig.5 Test execution steps

脚本编写人员应充分考虑测试意图,尽可能多地完善测试步骤,与人工测试步骤保持一致。基于脚本驱动的测试方法在使用初期由资深的信号人员编写通用测试脚本并维护,测试人员只需按需配置站场数据、接口文件后选择测试项便可进行自动测试,大大节省了人力成本。

根据测试的类型,测试表格被分为信号机测试表、道岔测试表、列车进路表、调车进路表、TCC接口信息表、RBC接口信息表、CBI接口信息表等。测试人员可选取所有脚本、单个脚本或是单个脚本的某个对象来分别生成用例进行测试。测试结果以“√、×”的形式体现,并可以导出为EXCEL为审核提供依据,如图6所示。

3 举例:取消进路测试

根据《车站联锁设备维护管理办法》 (TG/XH213-2019):所有联锁车站都应对所有进路进行取消进路测试。测试脚本的设计应充分考虑取消进路的场景和所需条件。

首先,自动测试软件获取下列数据:

由车站信息表获取如图7所示的信号机列车进路、调车进路接近区段;

图7 车站信息表-接近锁闭信息Fig.7 Station information sheet-approach locking information

由车站信息表联锁表部分获取如图8所示的所有进路信息:进路类型、始端按钮、终端按钮、信号显示。

图8 车站信息表-进路信息Fig.8 Station information sheet-route information

取消进路测试脚本应包括以下步骤:

办理进路,检查道岔位置被搬至进路要求位置,进路锁闭,信号正常开放,取消进路,信号关闭,进路立即解锁—ROUTE、ZQX功能函数;

办理进路,在信号未开放(开放后通过挤岔或灯丝断丝的方式使信号关闭)的情况下,占用接近轨(信号机外方的第一个区段),取消进路,进路立即解锁— SET、ZQX功能函数;

办理进路,信号开放,占用进路上任意区段(不含侵限区段,侵限区段在其他项中测试),信号关闭,执行取消进路操作,进路不能解锁— SET、ZQX、ZRJ功能函数;

办理进路,信号开放,占用除进路上的区段和接近区段,执行取消进路操作,进路立即解锁—SET、ZQX功能函数。

4 结束语

通过实际项目验证,本文所述自动测试系统表现优良。

在中型、大型站场中测试效率显著提升:如在某特大站场(75组道岔、834条进路)中,所有的联锁关系测试共消耗约648 h人工工时,自动测试共使用525 h,且自动测试能够做到24 h不间断进行;对重复性操作,自动测试具有高可靠性;目前室内基本联锁关系自动测试能够涵盖《车站联锁设备维护管理办法》基本联锁的98.5%,与实际测试情况高度匹配。

综上所述,该自动测试软件能够提升计算机联锁测试效率,保障联锁测试的可靠性。

猜你喜欢
自动测试测试人员测试用例
故障录波装置自动测试系统设计与实现
基于CANoe的商用车SAE J1939网络自动测试方法
直升机某型舵机自动测试系统设计分析
基于LDA模型的测试用例复用方法*
论职务犯罪侦查中测谎技术的应用与完善*
液晶显示器及其电源适配器能效自动测试系统的研制
浅析软件测试中的心理学应用
软件测试中的测试用例及复用研究
绿植防辐射只是个传说,是真的吗?
测试工时受限的测试策略研究