張友兵 張 波 馬 麟 于曉娜
張友兵:北京全路通信信號研究設計院有限公司 助理工程師100073 北京
張 波:北京全路通信信號研究設計院有限公司 高級工程師100073 北京
馬 麟:北京全路通信信號研究設計院有限公司 助理工程師100073 北京
于曉娜:北京全路通信信號研究設計院有限公司 助理工程師100073 北京
車載ATP作為CTCS-2級列控系統(tǒng)的重要組成部分,影響著列車的行車安全,對其進行嚴格完備的測試是必不可少的。目前對車載ATP的測試大都采用人工方式,存在工作強度大、效率低下等問題,因此急需研究和開發(fā)一種自動測試方法,除了避免重復測試外,還可以完成大量手工測試無法完成的工作。
目前,國內外主流的自動化測試工具都是通過腳本作為測試命令的記錄形式,腳本在自動測試中起著至關重要的作用。本文主要介紹一種針對CTCS-2級車載ATP自動測試平臺的系統(tǒng)結構,詳細介紹其應答器腳本、軌道電路腳本和測試案例腳本的設計和使用方法。
CTCS-2級車載ATP自動測試平臺結構如圖1所示。從圖1可以看出,除了被測設備車載ATP外,車載ATP自動測試平臺包含4個部分:測試腳本、主引擎、分引擎和測試接口。
圖1 CTCS-2級車載ATP自動測試平臺結構圖
1.測試腳本。分為測試案例腳本、軌道電路腳本和應答器腳本3類。軌道電路腳本包含一條測試案例對應線路上所有軌道區(qū)段的低頻、載頻和位置信息;應答器腳本包含一條測試案例對應線路上所有應答器的報文和位置信息;測試案例腳本是文字形式測試案例的腳本化,是可以測試車載ATP功能,且能被計算機語言解析的字符串。
2.主引擎。負責依次讀取測試案例腳本的每一句腳本命令,根據protocol buffer協(xié)議,將命令發(fā)送給分引擎。另外主引擎還負責分引擎的數據傳遞,是測試案例腳本與分引擎之間交互數據的橋梁。
3.分引擎。通過主引擎獲取測試案例腳本命令,或直接讀取軌道電路腳本和應答器腳本,根據命令內容執(zhí)行相應的具體操作,并向主引擎回復車載ATP的實時信息等。分引擎分為DMI分引擎、列車動力學分引擎和ATP接口平臺分引擎。
4.測試接口。是各個分引擎和被測車載ATP之間交互數據的通道。通過DMI接口,DMI分引擎可以獲取 ATP發(fā)送給 DMI的所有 MMI包和CTCS包,還可以對DMI進行設置司機號、設置車次號、設置列車長度、設置載頻等操縱。通過ATP接口平臺,ATP接口平臺分引擎可以對ATP進行ATP上電、ATP斷電、激活駕駛臺、關閉駕駛臺、設置列車運行方向、發(fā)送軌道電路低頻和載頻信息、發(fā)送應答器報文等操作,還可以獲取列車當前位置坐標、當前速度、當前加速度等。
對于每一個應答器,必須包含應答器位置和應答器報文2項基本內容。將一條測試案例對應線路上的所有應答器,如應答器位置為1212824,應答器報文(約830bit)表示為90127FC78189414036……,逐條編寫后,腳本中每一行代表一個應答器,包含應答器位置和應答器報文。所有應答器在腳本中,可以按公里標增大或減小的方向排列順序。
在測試執(zhí)行開始前,測試案例腳本先告訴“ATP接口平臺分引擎”列車的運行方向。如果列車沿公里標增大方向運行,則“ATP接口平臺分引擎”將在測試過程中,按公里標增大方向依次發(fā)送應答器報文。反之,按公里標減小方向依次發(fā)送應答器報文。
在測試執(zhí)行開始后,列車運行,“列車動力學分引擎”實時向“ATP接口平臺分引擎”報告列車的當前位置?!癆TP接口平臺分引擎”實時判斷列車是否到達當前待發(fā)送應答器報文的發(fā)送位置。如果列車還未到達,則繼續(xù)等待。如果列車到達發(fā)送報文的位置,則“ATP接口平臺分引擎”將應答器報文發(fā)送給“ATP接口平臺”?!癆TP接口平臺”再將應答器報文發(fā)送給車載ATP。
對于每一個軌道電路,必須包含軌道電路位置、低頻和載頻。將一條測試案例對應線路上的所有軌道電路逐條編寫腳本。每一行代表一個軌道電路,包含軌道電路位置、軌道電路低頻和載頻。所有軌道電路在腳本中的順序,可以按公里標增大或減小的方向排列。如軌道電路位置為1274214,軌道電路低頻及載頻表示為0112,其中,“01”是載頻1700-1的編號,“12”是低頻L5的編號。
在測試執(zhí)行開始前,測試案例腳本先明確“ATP接口平臺分引擎”列車的運行方向。如果列車沿公里標增大方向運行,則“ATP接口平臺分引擎”將在測試過程中按公里標增大方向依次發(fā)送軌道電路低頻和載頻。反之按公里標減小方向依次發(fā)送軌道電路低頻和載頻。
在測試執(zhí)行開始后,列車運行,“列車動力學分引擎”實時向“ATP接口平臺分引擎”報告列車的當前位置。由“ATP接口平臺分引擎”實時判斷列車是否到達當前待發(fā)送軌道電路低頻和載頻的發(fā)送位置。如果列車還未到達,則繼續(xù)等待。如果列車到達位置,則“ATP接口平臺分引擎”將軌道電路低頻和載頻發(fā)送給“ATP接口平臺”?!癆TP接口平臺”再將軌道電路低頻和載頻發(fā)送給車載ATP。
Tcl是一種功能完備的語言,簡單易學,編程方法與C++、C#等傳統(tǒng)計算機語言類似,因此使用Tcl腳本語言編寫測試案例腳本。測試案例腳本的編寫步驟分為3步。
第一步,盡可能閱讀所有CTCS-2級車載ATP測試案例,從測試案例中提取不可分割的執(zhí)行步驟或相對獨立的被測功能。例如,對車載ATP上電就是不可分割的執(zhí)行步驟,判斷列車是否到達指定位置就是相對獨立的被測功能。提取出來的執(zhí)行步驟或被測功能要能夠覆蓋所有測試案例的所有測試步驟。
第二步,利用Tcl腳本語言編碼實現(xiàn)執(zhí)行步驟或被測功能,將每一個執(zhí)行步驟或被測功能封裝成功能明確的Tcl函數,所有這些Tcl函數一起構成Tcl函數庫。
第三步,在Tcl函數庫的基礎上編寫測試案例腳本。對于一個文字描述的測試案例,根據每一個測試步驟所要完成的功能,依次從Tcl函數庫中找到與之對應的Tcl函數。同時,根據實際的線路數據,為所有調用的Tcl函數輸入正確的參數。按照測試案例步驟,依次調用的Tcl函數一起構成了該測試案例的測試案例腳本。
在測試執(zhí)行開始后,主引擎依次執(zhí)行測試案例腳本中的每一步。主引擎根據測試案例腳本中的命令類型,將腳本命令下發(fā)給對應的分引擎,分引擎要么對車載ATP執(zhí)行上電、激活駕駛臺等操作,要么將車載ATP的實時狀態(tài)信息回復給腳本,供腳本自動判斷車載ATP功能執(zhí)行是否成功。
測試案例腳本中的加減速命令,通過主引擎?zhèn)鬟f給“列車動力學分引擎”和“ATP接口平臺分引擎”?!癆TP接口平臺分引擎”根據加減速命令控制速度脈沖的變化,并將速度脈沖傳遞給車載ATP,供車載ATP計算列車的速度、加速度和走行距離?!傲熊噭恿W分引擎”根據加減速命令實時獨立地計算列車的當前速度、加速度和走行距離,并將這些信息實時報告給“DMI分引擎”和“ATP接口平臺分引擎”。
在測試案例腳本中,如果想獲取列車當前的速度、加速度和走行距離等信息,則主引擎將該命令傳遞給“列車動力學分引擎”,由“列車動力學分引擎”將列車當前的速度、加速度和走行距離等信息報告給腳本;如果想獲取列車當前的運行模式、運行等級等信息,則由主引擎將該命令傳遞給“DMI分引擎”,通過“DMI分引擎”將包含這些信息的MMI包或CTCS包報告給腳本,由腳本對MMI包或CTCS包進行解析,即可獲知列車當前的運行模式、運行等級等信息,進而完成對特定功能的測試。
為了減輕測試人員的工作壓力,提高測試的工作效率,有必要深入研究CTCS-2級車載ATP的自動測試方法。通過開發(fā)和實驗室驗證,證明該CTCS-2級車載ATP自動測試平臺結構合理,原理正確,所編寫的應答器腳本、軌道電路腳本和測試案例腳本也是正確的,能夠完成對車載ATP功能的自動測試,具有研究和應用價值。
[1]趙麗.基于TCL腳本的自動化測試工具的研究與實現(xiàn)[J].信息化研究,2009,35(11).
[2]蔣云,趙佳寶.自動化測試腳本自動生成技術的研究[J].計算機技術與發(fā)展,2007,17(7).
[3]王超.一種適用于 CBTC仿真測試的腳本研究[D].北京交通大學,2010.
[4]John K.Ousterhout Ken Jones.Tcl/Tk入門經典[M].北京:清華大學出版社,2010.