张友兵 张 波 马 麟 于晓娜
张友兵:北京全路通信信号研究设计院有限公司 助理工程师100073 北京
张 波:北京全路通信信号研究设计院有限公司 高级工程师100073 北京
马 麟:北京全路通信信号研究设计院有限公司 助理工程师100073 北京
于晓娜:北京全路通信信号研究设计院有限公司 助理工程师100073 北京
车载ATP作为CTCS-2级列控系统的重要组成部分,影响着列车的行车安全,对其进行严格完备的测试是必不可少的。目前对车载ATP的测试大都采用人工方式,存在工作强度大、效率低下等问题,因此急需研究和开发一种自动测试方法,除了避免重复测试外,还可以完成大量手工测试无法完成的工作。
目前,国内外主流的自动化测试工具都是通过脚本作为测试命令的记录形式,脚本在自动测试中起着至关重要的作用。本文主要介绍一种针对CTCS-2级车载ATP自动测试平台的系统结构,详细介绍其应答器脚本、轨道电路脚本和测试案例脚本的设计和使用方法。
CTCS-2级车载ATP自动测试平台结构如图1所示。从图1可以看出,除了被测设备车载ATP外,车载ATP自动测试平台包含4个部分:测试脚本、主引擎、分引擎和测试接口。
图1 CTCS-2级车载ATP自动测试平台结构图
1.测试脚本。分为测试案例脚本、轨道电路脚本和应答器脚本3类。轨道电路脚本包含一条测试案例对应线路上所有轨道区段的低频、载频和位置信息;应答器脚本包含一条测试案例对应线路上所有应答器的报文和位置信息;测试案例脚本是文字形式测试案例的脚本化,是可以测试车载ATP功能,且能被计算机语言解析的字符串。
2.主引擎。负责依次读取测试案例脚本的每一句脚本命令,根据protocol buffer协议,将命令发送给分引擎。另外主引擎还负责分引擎的数据传递,是测试案例脚本与分引擎之间交互数据的桥梁。
3.分引擎。通过主引擎获取测试案例脚本命令,或直接读取轨道电路脚本和应答器脚本,根据命令内容执行相应的具体操作,并向主引擎回复车载ATP的实时信息等。分引擎分为DMI分引擎、列车动力学分引擎和ATP接口平台分引擎。
4.测试接口。是各个分引擎和被测车载ATP之间交互数据的通道。通过DMI接口,DMI分引擎可以获取 ATP发送给 DMI的所有 MMI包和CTCS包,还可以对DMI进行设置司机号、设置车次号、设置列车长度、设置载频等操纵。通过ATP接口平台,ATP接口平台分引擎可以对ATP进行ATP上电、ATP断电、激活驾驶台、关闭驾驶台、设置列车运行方向、发送轨道电路低频和载频信息、发送应答器报文等操作,还可以获取列车当前位置坐标、当前速度、当前加速度等。
对于每一个应答器,必须包含应答器位置和应答器报文2项基本内容。将一条测试案例对应线路上的所有应答器,如应答器位置为1212824,应答器报文(约830bit)表示为90127FC78189414036……,逐条编写后,脚本中每一行代表一个应答器,包含应答器位置和应答器报文。所有应答器在脚本中,可以按公里标增大或减小的方向排列顺序。
在测试执行开始前,测试案例脚本先告诉“ATP接口平台分引擎”列车的运行方向。如果列车沿公里标增大方向运行,则“ATP接口平台分引擎”将在测试过程中,按公里标增大方向依次发送应答器报文。反之,按公里标减小方向依次发送应答器报文。
在测试执行开始后,列车运行,“列车动力学分引擎”实时向“ATP接口平台分引擎”报告列车的当前位置。“ATP接口平台分引擎”实时判断列车是否到达当前待发送应答器报文的发送位置。如果列车还未到达,则继续等待。如果列车到达发送报文的位置,则“ATP接口平台分引擎”将应答器报文发送给“ATP接口平台”。“ATP接口平台”再将应答器报文发送给车载ATP。
对于每一个轨道电路,必须包含轨道电路位置、低频和载频。将一条测试案例对应线路上的所有轨道电路逐条编写脚本。每一行代表一个轨道电路,包含轨道电路位置、轨道电路低频和载频。所有轨道电路在脚本中的顺序,可以按公里标增大或减小的方向排列。如轨道电路位置为1274214,轨道电路低频及载频表示为0112,其中,“01”是载频1700-1的编号,“12”是低频L5的编号。
在测试执行开始前,测试案例脚本先明确“ATP接口平台分引擎”列车的运行方向。如果列车沿公里标增大方向运行,则“ATP接口平台分引擎”将在测试过程中按公里标增大方向依次发送轨道电路低频和载频。反之按公里标减小方向依次发送轨道电路低频和载频。
在测试执行开始后,列车运行,“列车动力学分引擎”实时向“ATP接口平台分引擎”报告列车的当前位置。由“ATP接口平台分引擎”实时判断列车是否到达当前待发送轨道电路低频和载频的发送位置。如果列车还未到达,则继续等待。如果列车到达位置,则“ATP接口平台分引擎”将轨道电路低频和载频发送给“ATP接口平台”。“ATP接口平台”再将轨道电路低频和载频发送给车载ATP。
Tcl是一种功能完备的语言,简单易学,编程方法与C++、C#等传统计算机语言类似,因此使用Tcl脚本语言编写测试案例脚本。测试案例脚本的编写步骤分为3步。
第一步,尽可能阅读所有CTCS-2级车载ATP测试案例,从测试案例中提取不可分割的执行步骤或相对独立的被测功能。例如,对车载ATP上电就是不可分割的执行步骤,判断列车是否到达指定位置就是相对独立的被测功能。提取出来的执行步骤或被测功能要能够覆盖所有测试案例的所有测试步骤。
第二步,利用Tcl脚本语言编码实现执行步骤或被测功能,将每一个执行步骤或被测功能封装成功能明确的Tcl函数,所有这些Tcl函数一起构成Tcl函数库。
第三步,在Tcl函数库的基础上编写测试案例脚本。对于一个文字描述的测试案例,根据每一个测试步骤所要完成的功能,依次从Tcl函数库中找到与之对应的Tcl函数。同时,根据实际的线路数据,为所有调用的Tcl函数输入正确的参数。按照测试案例步骤,依次调用的Tcl函数一起构成了该测试案例的测试案例脚本。
在测试执行开始后,主引擎依次执行测试案例脚本中的每一步。主引擎根据测试案例脚本中的命令类型,将脚本命令下发给对应的分引擎,分引擎要么对车载ATP执行上电、激活驾驶台等操作,要么将车载ATP的实时状态信息回复给脚本,供脚本自动判断车载ATP功能执行是否成功。
测试案例脚本中的加减速命令,通过主引擎传递给“列车动力学分引擎”和“ATP接口平台分引擎”。“ATP接口平台分引擎”根据加减速命令控制速度脉冲的变化,并将速度脉冲传递给车载ATP,供车载ATP计算列车的速度、加速度和走行距离。“列车动力学分引擎”根据加减速命令实时独立地计算列车的当前速度、加速度和走行距离,并将这些信息实时报告给“DMI分引擎”和“ATP接口平台分引擎”。
在测试案例脚本中,如果想获取列车当前的速度、加速度和走行距离等信息,则主引擎将该命令传递给“列车动力学分引擎”,由“列车动力学分引擎”将列车当前的速度、加速度和走行距离等信息报告给脚本;如果想获取列车当前的运行模式、运行等级等信息,则由主引擎将该命令传递给“DMI分引擎”,通过“DMI分引擎”将包含这些信息的MMI包或CTCS包报告给脚本,由脚本对MMI包或CTCS包进行解析,即可获知列车当前的运行模式、运行等级等信息,进而完成对特定功能的测试。
为了减轻测试人员的工作压力,提高测试的工作效率,有必要深入研究CTCS-2级车载ATP的自动测试方法。通过开发和实验室验证,证明该CTCS-2级车载ATP自动测试平台结构合理,原理正确,所编写的应答器脚本、轨道电路脚本和测试案例脚本也是正确的,能够完成对车载ATP功能的自动测试,具有研究和应用价值。
[1]赵丽.基于TCL脚本的自动化测试工具的研究与实现[J].信息化研究,2009,35(11).
[2]蒋云,赵佳宝.自动化测试脚本自动生成技术的研究[J].计算机技术与发展,2007,17(7).
[3]王超.一种适用于 CBTC仿真测试的脚本研究[D].北京交通大学,2010.
[4]John K.Ousterhout Ken Jones.Tcl/Tk入门经典[M].北京:清华大学出版社,2010.