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