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