应用图像识别技术开发联锁自动测试工具的研究

孙志科

(北京全路通信信号研究设计院集团有限公司,北京 100070)

既有的自动化测试工具软件都只能对联锁软件进行自动化测试。而供应商向用户交付的是完整的计算机联锁(以下简称CBI)系统,其中还包含操作显示界面软件(以下简称控显软件)。因此,要想进一步提升测试效率,就需要将控显软件包含到自动测试工具的覆盖范围以内,实现系统级的自动化测试。

为此,笔者经过充分的研究和比较,最终基于通用的自动化功能测试平台Eggplant Functional开发了一套自动测试工具软件CBI_AS_PDT,实现了包括操作显示界面在内的CBI 系统级的工程数据及相关功能的自动化测试。

Eggplant Functional 平台是由英国Testplant公司开发的一套基于计算机图像识别及远程控制技术(VNC)的通用自动化功能测试平台。

Eggplant Functional 平台提供了丰富的基于模板匹配的图像识别功能接口,并且通过VNC 工具软件实现图像捕捉及远程控制功能。该平台功能丰富,运行稳定,并且提供了实现自动化测试所需的各类常用基础功能,例如:Excel 及文本文件读写接口、数据库读写接口、邮件服务接口等。

Eggplant Functional 平台提供了一套自定义脚本语言SenseTalk,以及配套的集成开发环境。SenseTalk 的语法接近英语自然语法,用户可以比较快速的开发出符合自身产品特点和业务需求的自动测试脚本。

如图1 所示,被测系统中运行被测车站的联锁软件、控显软件、模拟软件,以及远程控制工具软件VNC,测试服务器中运行Eggplant Functional 平台及自动测试工具软件CBI_AS_PDT,测试服务器与被测系统通过局域网连接。

图1 基于Eggplant Functional的计算机联锁系统自动测试环境架构Fig.1 Automatic test environment architecture for computer interlocking system based on Eggplant Functional

根据CBI 系统工程数据测试规范开发的若干个测试项执行脚本存放在CBI_AS_PDT 的脚本库中。这些脚本按以下几个步骤完成对联锁系统的工程数据及相关功能的自动化测试。

1)通过VNC 连接向控显及模拟软件发送操作命令。

2)通过VNC 连接将被测系统的显示内存完整映射至测试服务器,并实时提取被测信号设备的当前状态。

3)根据Excel 格式联锁表及测试规范的规定设定每一步测试操作的预期结果,将被测信号设备的当前图像与预期结果对应的标准图像进行比对,判定测试是否通过。

4)将操作过程及测试结果实时显示在人机界面中,并记录至指定的测试表格中。

为了实现上述过程,需完成以下几项工作。

1)在图1 的被测系统中安装VNC 工具软件。

2)获得各类图形元素在控显界面上的坐标及属性信息,以便准确识别指定图形元素的当前状态。为此,CBI_AS_PDT 需读取并解析控显软件的数据配置文件,获得各类图形元素的坐标及属性信息(例如:信号机朝向、道岔的名称及位置等)。

3)读取Excel 格式的联锁表文件及参数配置文件,提取其中的信息作为测试结果正确与否的判定依据。

4)测试结束后,将测试记录写入Excel 表格中,并发送至用户指定的邮箱。

CBI_AS_PDT 采用数据驱动测试的模式,通过联锁表、参数配置表中的数据驱动测试脚本运行。测试工程师只需在参数配置表录入适当的参数(例如:防护道岔名称、信号显示关系、被测车站的速度等级、信号机的常态显示等),然后选择需要执行的测试脚本,即可启动测试。

4.1 软件架构及工作流程

CBI_AS_PDT 工具软件的整体架构及执行流程如图2 所示。

图2 CBI_AS_PDT工具软件的整体架构及执行流程Fig.2 Overall architecture and execution process of CBI_AS_PDT tool software

4.2 初始化模块

初始化模块主要完成以下功能。

1)初始化全局数据结构,例如定义各类信号设备的数据字典、存储设备的图形坐标及属性数据。

2)读取配置文件,获得被测软件存储路径等各类路径及参数配置信息。

3)解析控显配置文件,从中读取各类信号设备的图形坐标及属性数据,存入对应的全局数据结构。

4)创建测试记录文件夹,用于保存自动生成的各类测试记录表格。

4.3 公共测试功能模块

本模块将各类测试项均需要使用的公共功能封装为标准接口,供各项测试业务脚本调用。本模块包含子模块如下。

4.3.1 数据处理模块

本模块负责处理各类外部文件提供的输入数据,主要有以下几种。

1)读取并解析联锁表

联锁表文件为指定格式的Excel 电子表格文件。CBI_AS_PDT 从联锁表中提取办理进路的按钮、信号显示、进路内道岔及区段等信息,作为测试结果的判定依据。

2)文本数据处理

文本字符串的各类通用处理命令,主要包括:删除注释;
删除隐含字符(如回车、Tab 等);
根据字符串中的“,”或空格字符将其分割转换为列表。

3)解析信号机图形数据

在静力分析中,除了应力分布图外,管道的位移形变图也是作为衡量管道是否安全的一个重要指标。管道的位移形变主要是其管道所受载荷与管道的约束之间相互作用的结果。倘若管道所受载荷过大,超过了管道约束力并且超过了管道材料的屈服极限,那么就会造成管道的极大弯曲甚至破裂,最终造成泄漏甚至爆炸等事故[6]。

从控显软件数据文件中解析信号机图形的坐标及属性数据,包括:朝向、高矮柱、信号机图形半径、信号机名称的坐标等。

4)解析道岔图形数据

从控显软件数据文件中解析道岔图形的坐标及属性数据,包括:道岔的逻辑名称及显示名称、岔心点坐标、道岔所属区段的名称等。

5)解析区段图形数据

从控显软件数据文件中解析道岔区段、无岔区段、股道图形的坐标及属性数据,包括:无岔区段和股道线段的起点及终点坐标、区段按钮的坐标等。

4.3.2 控显界面操作命令模块

本模块包含所有控显界面的操作命令脚本,主要包括:办理进路、取消进路、重开信号、人解进路、区段解锁、道岔单操等。对于铅封按钮操作命令,操作脚本中需包含输入密码的操作过程。

在操作命令脚本中,在执行完成每一步操作后,会识别被操作对象的状态变化情况,确认操作生效后,再进行下一步操作,以便于在测试执行过程中更准确的定位缺陷。

4.3.3 模拟界面操作命令模块

DS6 系列CBI 系统的工程数据测试主要在仿真环境下开展。因此,CBI_AS_PDT 需要能够识别并操作I/O 接口模拟软件的界面。

本模块包括所有模拟界面的操作命令脚本,主要包括:设置道岔位置、设置信号状态、设置区段状态、设置继电器状态等。

4.3.4 信号设备状态检查模块

本模块包含识别各类信号设备显示状态的脚本命令,主要包括:信号机显示状态检查、区段状态检查、道岔位置检查、继电器状态检查等。

由于操作命令执行时间以及网络延迟等因素的影响,操作命令与状态检查命令之间需设置适当的延时,以保证能够在正确的时机识别被测对象的状态变化,避免误报。

对于信号机,在测试脚本中调用Eggplant Functional 平台提供的库命令,实时截取控显界面待测信号机的显示图形,与基准图片库中的各种信号显示图片进行比对,找到相同的图片后,即可知道控显界面上待测信号机的实时显示。按钮状态、菜单选项的识别原理与信号机显示类似。

对于道岔和轨道区段,由于道岔位置/区段状态是通过道岔名称/区段线段的颜色来表示的,因此可以调用Eggplant Functional 平台提供的库命令,实时识别道岔名称/轨道区段上的像素点颜色,即可知道道岔/轨道区段的实时位置/状态。

4.4 基准图片库

4.4.1 用途

为实现信号机、按钮、菜单选项等图形对象显示状态的自动识别,需预先截取上述图形元素各种状态的图片,添加标签后,存入基准图片库中各类图形对象的子库。

在测试脚本运行的过程中,根据测试步骤和预期结果的需要,从基准图片库中提取图片,与包含被测对象当前显示状态的实时截图进行比对,找到匹配一致的图片后,根据基准图片库中的图片标签信息,即可知道被测信号机、按钮、菜单选项的当前状态或显示。

4.4.2 基准图片制作要点

为缩短图片匹配的时间,基准图片库中存储的图片尺寸与测试过程中实时截取的图片尺寸的比值应尽量接近1,并且两者的绝对尺寸应尽量小。

例如,调车信号机蓝灯显示的基准图如图3 所示,如图4 所示的黄色矩形框为实时截图区域,仅比调车信号机的图形略大。

图3 调车信号机基准图片Fig.3 Reference pictures of shunting signal

图4 调车信号机的实时截图区域Fig.4 Real time screenshot area of shunting signal

对于USU 等闪光信号显示,在控显界面上是由两种图形交替显示形成的。因此,在制作基准图片时,也需要截取两张不同的图片,并在测试脚本中识别这两张图片是否交替显示。USU 显示的两张基准图片如图5 所示。其中,左侧的图片与列车信号机的UU 显示共用。

图5 朝向右侧的列车信号机USU显示的基准图片Fig.5 Reference picture of USU aspect of train signal that facing the right

4.5 测试项执行脚本

根据被测数据所实现的功能,CBI 工程数据测试划分为若干个不同的测试项。为了减少因引入自动测试工具对既有工作模式和习惯的影响,CBI_AS_PDT 原则上按照既有的测试项开发对应的测试脚本,在此基础上对部分测试流程和逻辑相近的项目合并至同一个脚本中实现。例如:将列车进路及调车进路的测试合并在一个脚本中实现。

目前已有十几个测试项执行脚本正式投入工程应用,主要包括:1)列车及调车进路测试;
2)组合列车进路显示关系测试;
3)接近区段延长测试;
4)人工解锁时间及出站信号机红灯灯丝测试;
5)四线制方向电路接口测试;
6)延续进路测试;
7)中间出岔测试。

为尽量提高CBI_AS_PDT 的可用性,在开发测试项执行脚本时重点考虑了以下因素。

1)适用于不同规模和类型的车站,不需要测试工程师根据特定车站修改脚本中的测试逻辑。

2)每一步测试操作均检查被测对象的状态是否符合预期。在测试结果不符合预期时,给出完整、准确的错误现象描述,以便相关人员在测试结束后进行缺陷定位和分析。

3)具备常见故障的自动处理逻辑,以便测试能够继续进行。

4)具备至少24 h 的连续运行能力,以满足大站的测试需求。

目前,CBI_AS_PDT 仅适用于人机操作界面符合中国国家铁路集团有限公司企业标准《车站计算机联锁操作显示规范》(TJ/DW 188-2016)的DS6系列CBI 系统。

在使用CBI_AS_PDT 之前,首先需要对控显界面的显示正确性进行人工检查,确认控显界面的站场图形显示内容与被测车站的信号平面布置图一致。

CBI_AS_PDT 适用于联锁表格式符合《铁路信号联锁图表编制原则》(TB/T 1123-92)或《计算机联锁车站联锁图表编制原则》(QC/R 654-2018)要求的车站,并且需将纸质联锁表转换为Excel 表格文件。不具备Excel 格式电子联锁表的车站,或者联锁表格式不符合上述两个标准要求的车站,无法执行与进路相关的自动测试,但可以执行其他与进路无关的测试项,例如:道岔单锁及单解测试等。

笔者开发的CBI_AS_PDT 工具软件,经过了严格的测试及大量车站的试用,并通过了由独立第三方进行的T2 类工具软件安全评估,已经正式应用在计算机联锁产品集成项目的工程数据测试业务中,完成了200 余个车站的测试任务,在提高测试效率,保持测试质量的稳定性方面取得了显著成效。

猜你喜欢信号机脚本道岔酒驾作文小学中年级(2022年11期)2022-11-25安奇奇与小cool 龙(第二回)课堂内外(小学版)(2020年11期)2020-12-04驼峰信号机与驼峰辅助信号机显示不一致问题分析铁道通信信号(2020年11期)2020-02-07中低速磁浮道岔与轮轨道岔的差异铁道通信信号(2020年10期)2020-02-07四显示自动闭塞通过信号机在TDCS/CTC采集电路中存在的问题及改进铁道通信信号(2019年4期)2019-10-10场间衔接道岔的应用探讨铁道通信信号(2019年3期)2019-04-25既有线站改插铺临时道岔电路修改铁道通信信号(2018年10期)2018-12-06快乐假期中学生(2017年19期)2017-09-03小编的新年愿望中学生(2017年1期)2017-03-24半自动闭塞总出发信号机非正常关闭解决方案铁道通信信号(2016年5期)2016-06-01

推荐访问:联锁 识别 测试工具