通过测试脚本自动处理车载设备人机界面数据的方法研究

2013-09-25 07:24张友兵
城市轨道交通研究 2013年9期
关键词:自动测试脚本图标

张友兵 张 波

(北京全路通信信号研究设计院有限公司列车自动控制研究所,100073,北京∥第一作者,助理工程师)

车载ATP(列车自动保护)功能作为CTCS-2级列控系统的重要组成部分,影响着列车的行车安全,故对车载ATP进行严格完备的测试是必不可少的。

对车载ATP功能进行人工测试,存在测试人员工作强度大、浪费人力、效率低下等问题,因此亟需研究和开发一种针对车载ATP的自动测试方法。自动测试能够代替手工测试工作,避免重复测试,还可以完成大量手工测试无法完成的测试工作[1-2]。

对车载ATP功能进行自动测试,可以从DMI(人机界面)获取有关车载ATP的实时信息,并编写测试脚本对这些信息进行处理分析,以实现对车载ATP功能的测试。

本文主要介绍了一种针对CTCS-2级车载ATP功能的自动测试平台,介绍了该自动测试平台的系统结构;详细介绍了通过脚本自动按压DMI按钮来自动确认或取消DMI文本消息,自动判断DMI输出语言、DMI显示图标、DMI动态图像信息的基本原理和方法。利用这些方法对来自DMI的数据进行分析处理,就可以实现对车载ATP功能的自动测试。

1 CTCS-2级车载ATP自动测试原理

CTCS-2级车载ATP功能自动测试平台结构如图1所示。从图1可以看出,除了被测设备车载ATP外,车载ATP功能自动测试平台包含4个部分:测试脚本,主引擎,分引擎和测试接口。

图1 CTCS-2级车载ATP功能自动测试平台结构图

1)测试脚本分为3类:测试案例脚本,轨道电路脚本和应答器脚本。轨道电路脚本包含1条测试案例对应线路上所有轨道区段的低频、载频和位置信息。应答器脚本包含1条测试案例对应线路上所有应答器的报文和位置信息。测试案例脚本是文字形式的测试案例的脚本化,是可以测试车载ATP功能且能被计算机语言解析的字符串。

2)主引擎负责依次读取测试案例脚本的每一句脚本命令,根据protocol buffer协议将脚本命令发送给分引擎,另外主引擎还要将分引擎的数据传递给脚本。主引擎是测试案例脚本与分引擎之间交互数据的桥梁。

3)分引擎要么通过主引擎获取测试案例脚本命令,要么直接读取轨道电路脚本和应答器脚本,根据命令内容执行相应的具体操作,并向主引擎回复车载ATP的实时信息等。分引擎分为DMI分引擎、列车动力学分引擎和ATP接口平台分引擎。

4)测试接口是各个分引擎和被测车载ATP之间交互数据的通道。

通过DMI接口,DMI分引擎可以获取ATP发送给DMI的所有数据包。还可以对DMI进行以下操纵:设置司机号,设置车次号,设置列车长度,设置载频等。

通过ATP接口平台,ATP接口平台分引擎可以对ATP进行以下操作:ATP上电,ATP断电,激活驾驶台,关闭驾驶台,设置列车运行方向,发送轨道电路低频和载频信息,发送应答器报文等;还可以获取列车当前位置坐标、当前速度、当前加速度等。

2 构建控制DMI的传输控制协议

为了对车载ATP功能进行自动测试,需要实时获取车载ATP的状态信息。车载ATP通过DMI向列车司机显示列车运行的状态信息[3],因此可以通过DMI获取车载ATP的实时信息。可以利用图像识别技术识别DMI上的信息[4],但是这种方法比较复杂,实现难度比较大。本文采用直接与DMI通信,获取DMI数据包的方法。为了可以通过DMI获取有关车载ATP的数据,需要在DMI分引擎和DMI之间建立交互数据的通信协议。

在DMI分引擎和DMI之间建立传输控制协议(TCP)。通过TCP,DMI分引擎可以对DMI进行以下操作:设置司机号,设置车次号,设置列车长度,设置载频,设置列车运行等级,设置列车运行模式,设置RBC(无限闭塞中心)的ID(标识),设置RBC号码,模拟按压启动按钮、缓解按钮、警惕按钮、回复DMI文本消息等。

通过TCP,DMI向DMI分引擎发送以下信息:所有MMI数据包和所有的CTCS数据包。这些数据包中包含DMI按钮状态、DMI文本消息、DMI语言信息等内容。

3 通过测试脚本处理DMI数据

3.1 测试脚本自动按压DMI按钮

在CTCS-2级车载ATP功能测试案例中,经常会遇到需要按压DMI上按钮的操作。例如,在列车运行过程中,当列车速度超过紧急制动速度时,车载ATP将实施紧急制动直到列车停车。列车停车后,DMI将提示司机缓解紧急制动,此时司机需要按压DMI上的缓解按钮。在自动测试中,需要将按压缓解按钮的命令写在测试脚本中,当测试脚本判断DMI出现按压缓解按钮的提示信息时,就将按压缓解按钮的命令发送给DMI。其步骤如下:

1)主引擎识别出当前一条脚本命令为“按压DMI按钮”。

2)主引擎将“按压DMI按钮”命令下达给DMI分引擎。

3)按照DMI分引擎与DMI之间的TCP,DMI分引擎将真实的按压启动按钮命令下达给DMI。

4)DMI收到“按压启动按钮”命令后,自动按压启动按钮。

脚本自动按压启动按钮原理如图2所示。

图2 脚本自动按压启动按钮原理

3.2 测试脚本自动确认或取消DMI文本信息

在列车运行过程中,DMI经常会出现文本消息。这些文本消息有些不需要司机进行任何操作。例如,列车以部分监控模式出站,当满足进入完全监控模式的条件时,车载ATP自动转入完全监控模式,此时DMI显示文本消息“进入完全监控模式”,此条文本消息只是提示司机,不需要司机对DMI进行任何操作。有些文本消息需要司机确认,即可按压DMI的确认按钮。例如,在车载ATP上电成功后,DMI显示文本消息“启动确认”,需要司机按压确认按钮。有些文本消息需要司机确认或取消,即按压DMI的确认按钮或取消按钮。例如在车载ATP上电成功后,DMI显示文本消息“执行制动测试”,如果需要执行制动测试,则司机按压确认按钮,如果不需要执行制动测试,则司机按压取消按钮。

在CTCS-2级车载ATP功能测试案例中,有些测试步骤的期望结果就是检查DMI显示某一条文本消息,并对该条文本消息进行确认或取消。现在,以文本消息“应答器信息缺失”为例,说明在车载ATP功能自动测试中,测试脚本如何自动确认和取消DMI文本消息。

在列车运行过程中,当列车越过一个应答器时,由于应答器故障,车载设备在期望窗口内未收到该应答器报文,则DMI将显示文本消息“应答器信息缺失”,则需要确认该条文本消息。自动测试中脚本自动确认文本消息“应答器信息缺失”的详细步骤如下:

1)主引擎识别出当前一条脚本命令为“期望DMI文本消息”。

2)主引擎将“期望DMI文本消息”命令下达给DMI分引擎。

3)按照DMI分引擎与DMI之间的TCP,DMI分引擎将来自DMI的包含DMI文本消息的数据包发送给主引擎。

4)主引擎将包含DMI文本消息的数据包发送给脚本。

5)脚本解析包含DMI文本消息的数据包,判断当前DMI文本消息是否是“应答器信息缺失”。如果当前DMI文本消息是“应答器信息缺失”,则期望DMI文本消息成功,结束循环;如果当前DMI文本消息不是“应答器信息缺失”,则期望DMI文本消息失败,则继续循环。

脚本自动确认DMI文本消息的原理如图3所示。

3.3 测试脚本自动判断DMI输出语音

对车载ATP功能进行测试时,有些测试步骤的期望结果是DMI输出指定语音。例如,在列车运行过程中,当列车速度超过报警速度时,在车载ATP制动到目标速度过程中,DMI输出“减速”语音;当列车速度超过紧急制动速度时,车载ATP实施紧急制动直到列车停车,列车停稳后,DMI输出“允许缓解”语音。下面以“允许缓解”语音为例,说明自动测试中测试脚本如何自动判断DMI是否输出指定语音。

图3 脚本自动确认DMI文本消息原理

自动测试中脚本自动判断DMI输出语音“允许缓解”的详细步骤如下:

1)主引擎识别出当前一条脚本命令为“期望DMI输出语音”。

2)主引擎将“期望DMI输出语音”命令下达给DMI分引擎。

3)按照DMI分引擎与DMI之间的TCP,DMI分引擎将来自DMI的包含DMI语音的数据包发送给主引擎。

4)主引擎将包含DMI语音的数据包发送给脚本。

5)脚本解析包含DMI语音的数据包,判断当前DMI语音是否是“允许缓解”。如果当前DMI语音是“允许缓解”,则期望DMI语音成功,结束循环;如果当前DMI语音不是“允许缓解”,则期望DMI语音失败,则继续循环。

脚本自动判断DMI输出语音的原理如图4所示。

图4 脚本自动判断DMI输出语音原理

3.4 测试脚本自动判断DMI显示图标

对车载ATP功能进行测试时,在列车运行过程中,当列车速度超过最大常用制动速度时,DMI将显示“最大常用制动图标”。有些测试案例要求判断DMI显示“最大常用制动图标”,但是在DMI所有数据包中,并没有包含DMI图标的数据包,所以不能使用判断DMI输出语音的方法去判断DMI显示图标。

但是在DMI的动态数据包中,有一个变量保存着车载ATP的制动状态,通过该变量可以判断列车是否处于最大常用制动状态。假设DMI软件是完全正确的,则通过该变量也就可以间接判断出DMI是否显示“最大常用制动图标”。下面以“最大常用制动图标”为例,说明自动测试中脚本如何判断DMI是否显示指定图标。

自动测试中脚本自动判断DMI显示“最大常用制动图标”的详细步骤如下:

1)主引擎识别出当前一条脚本命令为判断DMI显示“最大常用制动图标”,此图标信息可以从DMI动态数据包中的制动状态信息间接获取,所以向主引擎发送“期望动态数据包”。

2)主引擎将“期望动态数据包”命令下达给DMI分引擎。

3)按照DMI分引擎与DMI之间的TCP,DMI分引擎将来自DMI的“动态数据包”发送给主引擎。

4)主引擎将“动态数据包”发送给脚本。

5)脚本解析“动态数据包”,判断动态数据包中包含的制动状态是否是“最大常用制动状态”。如果当前制动状态是“最大常用制动状态”,则判断DMI显示“最大常用制动图标”成功,结束循环;如果当前制动图标不是“最大常用制动状态”,则判断DMI显示“最大常用制动图标”失败,则继续循环。

脚本自动判断DMI显示图标的原理如图5所示。

图5 脚本自动判断DMI显示图标原理

3.5 测试脚本自动判断DMI动态图像信息

在列车运行过程中,DMI上会显示内容丰富的动态图像信息。有些动态图像信息是不可测的,比如,列车在减速过程中,列车离制动的时间越近,预警时间指示图标越大。对于另一些动态图像信息,将测试功能放在DMI分引擎中,脚本告诉DMI分引擎要测试的功能,DMI分引擎执行测试,再将测试结果报告给脚本,却是可以实现的。例如,对车尾保持功能的测试。

对车载ATP功能进行测试时,列车启动后,以部分模式行车,列车车头经过应答器后,转为完全监控模式。在列车车尾没有经过应答器之前,列车应该保持原有运行速度;当列车车尾越过应答器之后,列车才开始加速运行,即需要判断车尾保持功能。在对车载ATP功能进行自动测试时,脚本自动判断车尾保持功能的步骤如下:

1)主引擎识别出当前一条脚本命令为“测试车尾保持命令”。

2)主引擎将“测试车尾保持命令”下达给对应的DMI分引擎。

3)DMI分引擎实时判断列车是否位于测试车尾保持区域。当列车位于测试车尾保持区域,DMI分引擎向DMI发送获取允许速度命令,DMI向DMI分引擎回复列车当前允许速度。DMI分引擎判断列车当前允许速度是否等于要求的车尾保持速度。如果列车当前允许速度不等于车尾保持速度,则分引擎向主引擎报告“车尾保持失败”,主引擎向脚本报告“车尾保持失败”;如果列车当前允许速度等于车尾保持速度,则不做任何处理,继续下一次循环。当列车出了测试车尾保持区域,则DMI分引擎向主引擎报告“车尾保持成功”,主引擎向脚本报告“车尾保持成功”。

脚本自动判断车尾保持功能的原理如图6所示。

图6 脚本自动判断车尾保持功能原理

4 结语

在对CTCS-2级车载ATP进行人工测试过程中,许多测试步骤的期望结果是判断DMI是否显示指定文本消息、是否发出指定语音、是否显示指定图标等。本文介绍了在对车载ATP进行自动测试过程中,测试脚本自动按压DMI按钮、自动确认或取消DMI文本信息、自动判断DMI输出语音、自动判断DMI显示图标、自动判断DMI动态图像信息的基本原理和方法。通过开发和实验室验证,证明文中所述方法是正确的,通过判断DMI的各种信息,可以实现对车载ATP功能的自动测试,具有研究和应用价值。

[1]赵丽.基于TCL脚本的自动化测试工具的研究与实现[J].信息化研究,2009,35(11):28.

[2]蒋云,赵佳宝.自动化测试脚本自动生成技术的研究[J].计算机技术与发展,2007,17(7):4.

[3]朱磊.基于可重用框架的CTCS仿真车载DMI研究与实现[D].北京:北京交通大学,2009.

[4]张勇,覃燕,李凯,等.CTCS-3级列控系统车载设备人机界面信息的识别方法[J].中国铁道科学,2010,31(4):92.

[5]林颖,王长林.车载列车自动保护系统对空转及滑行的检测与校正方法研究[J].城市轨道交通研究,2011(3):28.

猜你喜欢
自动测试脚本图标
酒驾
安奇奇与小cool 龙(第二回)
Android手机上那些好看的第三方图标包
JXG-50S型相敏轨道电路接收器自动测试台
关于某型雷达自动测试系统的几点认识和建议
图标
快乐假期
小编的新年愿望
中国风图标设计
有意思的厕所图标