王軍賢
(通號(hào)城市軌道交通技術(shù)有限公司,北京 100070)
隨著城市軌道交通的快速發(fā)展,計(jì)算機(jī)聯(lián)鎖(CBI)在城軌基于通信的列車控制系統(tǒng)(CBTC)中廣泛應(yīng)用。計(jì)算機(jī)聯(lián)鎖作為保障行車安全的子系統(tǒng),它的功能、性能和產(chǎn)品質(zhì)量直接關(guān)系到列車運(yùn)行的安全與效率,而聯(lián)鎖軟件作為計(jì)算機(jī)聯(lián)鎖系統(tǒng)的核心軟件,其數(shù)據(jù)的準(zhǔn)確性對(duì)信號(hào)系統(tǒng)的安全性與可靠性至關(guān)重要,是城軌CBTC運(yùn)行的基礎(chǔ),因此對(duì)聯(lián)鎖產(chǎn)品遍歷測(cè)試在城市軌道交通領(lǐng)域顯得非常關(guān)鍵。目前主要采用人工測(cè)試,人工測(cè)試的弊端為效率低、測(cè)試成本高、測(cè)試結(jié)果不可重復(fù)等。為了解決這些問(wèn)題,可以采用自動(dòng)化測(cè)試技術(shù),以提高測(cè)試效率和降低測(cè)試成本。聯(lián)鎖自動(dòng)測(cè)試是一種自動(dòng)化測(cè)試技術(shù),它可以幫助開發(fā)人員更快地測(cè)試軟件,確保軟件的正確性和可靠性。
目前城軌CBTC聯(lián)鎖產(chǎn)品交付測(cè)試包括軟件版本校核、單項(xiàng)測(cè)試、輸入輸出測(cè)試、界面顯示測(cè)試、進(jìn)路測(cè)試、維護(hù)機(jī)測(cè)試、平臺(tái)數(shù)據(jù)測(cè)試、接口測(cè)試8個(gè)大項(xiàng),其中單項(xiàng)測(cè)試包括上電鎖閉測(cè)試、道岔單鎖/單解、道岔強(qiáng)扳等15個(gè)測(cè)試項(xiàng);進(jìn)路測(cè)試包括進(jìn)路辦理、進(jìn)路鎖閉、信號(hào)開放、引導(dǎo)進(jìn)路等48個(gè)測(cè)試項(xiàng),進(jìn)路測(cè)試分為CBTC模式和降級(jí)模式兩種;接口測(cè)試包括聯(lián)鎖與區(qū)域控制器(ZC)接口信息測(cè)試、聯(lián)鎖與地面電子單元(LEU)接口應(yīng)答器報(bào)文數(shù)據(jù)測(cè)試、聯(lián)鎖與列車自動(dòng)防護(hù)系統(tǒng)(ATP)接口數(shù)據(jù)測(cè)試、聯(lián)鎖與車地通信(TWC)接口數(shù)據(jù)測(cè)試等4個(gè)測(cè)試項(xiàng)。聯(lián)鎖產(chǎn)品交付測(cè)試共計(jì)72個(gè)測(cè)試項(xiàng),測(cè)試對(duì)象如圖1所示。
圖1 測(cè)試對(duì)象Fig.1 Test objects
目前聯(lián)鎖產(chǎn)品測(cè)試主要依靠純?nèi)斯y(cè)試,完整測(cè)試1條進(jìn)路包括CBTC模式和降級(jí)模式大約需要2.5~3 h,對(duì)于車站規(guī)模為25~30條進(jìn)路的新建車站,進(jìn)行一輪完整的交付測(cè)試周期大約為20個(gè)工作日,有些車站進(jìn)路數(shù)量超過(guò)50條,進(jìn)行完整一輪交付測(cè)試的周期大約需要30個(gè)工作日,加上前期測(cè)試輸入資料準(zhǔn)備、測(cè)試環(huán)境準(zhǔn)備、編寫測(cè)試大綱和測(cè)試報(bào)告相關(guān)工作,每個(gè)車站的測(cè)試周期會(huì)更長(zhǎng);另外,人工測(cè)試操作重復(fù)性高、測(cè)試效率低,難免出現(xiàn)人為操作失誤,導(dǎo)致測(cè)試結(jié)果的可信性降低,很難做到完全的遍歷測(cè)試。
綜上,無(wú)論是從測(cè)試效率和測(cè)試準(zhǔn)確率都無(wú)法滿足聯(lián)鎖產(chǎn)品交付測(cè)試工作的需求,為了滿足測(cè)試的高效性、準(zhǔn)確性及覆蓋率,急需研究一種聯(lián)鎖自動(dòng)測(cè)試工具代替人工測(cè)試來(lái)提高測(cè)試效率和準(zhǔn)確率,進(jìn)而大大提升聯(lián)鎖產(chǎn)品測(cè)試的交付能力和水平。
人工測(cè)試采用一臺(tái)可進(jìn)行限定環(huán)境模擬的接口計(jì)算機(jī),測(cè)試工程師使用自然語(yǔ)言編寫測(cè)試用例,選擇測(cè)試數(shù)據(jù)的樣本,初始化測(cè)試環(huán)境并向測(cè)試人機(jī)界面發(fā)送命令,后通過(guò)顯示的數(shù)據(jù)檢查結(jié)果并編寫測(cè)試報(bào)告,如圖2所示。
圖2 人工測(cè)試流程Fig.2 Manual test process
人工測(cè)試潛在的問(wèn)題主要包括:不具代表性的數(shù)據(jù)樣本、數(shù)據(jù)丟失或數(shù)據(jù)濫用;數(shù)據(jù)讀取錯(cuò)誤,測(cè)試報(bào)告完整度不高等均會(huì)給測(cè)試帶來(lái)干擾,造成逃逸缺陷(NCR),影響系統(tǒng)安全。
自動(dòng)測(cè)試工具具有場(chǎng)景運(yùn)行功能,它有完整的環(huán)境和故障模擬,測(cè)試工程師使用高級(jí)指令和宏以及系統(tǒng)知識(shí)去編寫測(cè)試案例,上載所有測(cè)試數(shù)據(jù)后運(yùn)行測(cè)試,自動(dòng)選擇要測(cè)試的案例,通過(guò)測(cè)試工具管理場(chǎng)景結(jié)果,根據(jù)測(cè)試結(jié)果自動(dòng)編寫測(cè)試總結(jié)報(bào)告,自動(dòng)測(cè)試流程如圖3所示。
圖3 自動(dòng)測(cè)試流程Fig.3 Automatic test flow
綜上,自動(dòng)測(cè)試的優(yōu)勢(shì)總結(jié)有如下:
1)測(cè)試運(yùn)行時(shí)無(wú)人為錯(cuò)誤,包括操作或檢查;
2)確??芍貜?fù)性和非回歸能力;
3)測(cè)試結(jié)果有明確通過(guò)/失敗標(biāo)識(shí);
4)測(cè)試庫(kù)、宏、場(chǎng)景的可以被復(fù)用;
5)可實(shí)現(xiàn)測(cè)試案例邏輯和故障分析。
自動(dòng)化測(cè)試是不在人工干預(yù)的情況下,按提前預(yù)設(shè)的流程自動(dòng)進(jìn)行測(cè)試、數(shù)據(jù)分析并以一定的方式輸出展現(xiàn)測(cè)試結(jié)果,基于以上思路設(shè)計(jì)以場(chǎng)景庫(kù)、測(cè)試引擎及測(cè)試平臺(tái)為核心的自動(dòng)化測(cè)試工具。自動(dòng)化測(cè)試工具架構(gòu)如圖4所示。
圖4 自動(dòng)化測(cè)試工具架構(gòu)Fig.4 Architecture of automatic test tool
場(chǎng)景庫(kù):存儲(chǔ)、維護(hù)多種測(cè)試場(chǎng)景和測(cè)試腳本,方便回歸測(cè)試。場(chǎng)景定義應(yīng)結(jié)合信號(hào)系統(tǒng)需求、子系統(tǒng)需求,以及由此設(shè)計(jì)的用例,并將這三者的追蹤關(guān)系進(jìn)行記錄,以保證測(cè)試用例的可追溯性并滿足覆蓋審查條件。
測(cè)試引擎:負(fù)責(zé)被測(cè)對(duì)象軟件的初始化和數(shù)據(jù)傳輸,解析自動(dòng)化測(cè)試腳本,對(duì)各子系統(tǒng)的接口函數(shù)進(jìn)行驅(qū)動(dòng),對(duì)其中的調(diào)用可以進(jìn)行加速、減速等模擬時(shí)鐘操作。
測(cè)試平臺(tái):以信號(hào)系統(tǒng)和各子系統(tǒng)(列車自動(dòng)控制系統(tǒng)(ATS)、計(jì)算機(jī)聯(lián)鎖(CI)、ZC、車載控制器(VOBC))為被測(cè)對(duì)象,包括運(yùn)行在一臺(tái)或多臺(tái)Linux操作系統(tǒng)的由真實(shí)信號(hào)系統(tǒng)源代碼編譯的應(yīng)用程序、基于共享內(nèi)存技術(shù)實(shí)現(xiàn)的內(nèi)存變量監(jiān)視和重載庫(kù)、軌旁設(shè)備(信號(hào)機(jī)、道岔、計(jì)軸、屏蔽門等)模擬器、仿真車輛模擬器和以太網(wǎng)模擬器等多個(gè)應(yīng)用進(jìn)程。
司機(jī)操作界面:提供車輛運(yùn)行狀況顯示,包括速度、告警、駕駛模式等信息,可以執(zhí)行人工操作指令或場(chǎng)景庫(kù)中的測(cè)試腳本觸發(fā)的指令。
子系統(tǒng)仿真代理接口:負(fù)責(zé)獲取信號(hào)系統(tǒng)軟件中的數(shù)據(jù),記錄軟件運(yùn)行時(shí)的各類屬性值、狀態(tài)機(jī)工況、代碼執(zhí)行路徑等。
針對(duì)城軌聯(lián)鎖產(chǎn)品測(cè)試項(xiàng),部分測(cè)試項(xiàng)主要為人工校核,如控顯界面顯示信號(hào)機(jī)朝向、高矮柱、平臺(tái)參數(shù)等,該測(cè)試項(xiàng)主要為界面或數(shù)據(jù)核對(duì),工具識(shí)別相對(duì)困難且測(cè)試用時(shí)占比較小,通過(guò)大量測(cè)試實(shí)踐證明,單項(xiàng)測(cè)試、進(jìn)路測(cè)試信息量大且耗時(shí)耗力,主要通過(guò)人工識(shí)別聯(lián)鎖表內(nèi)信息同步手動(dòng)操作控顯界面按鈕來(lái)測(cè)試,因此這部分具備自動(dòng)化測(cè)試的特點(diǎn)。構(gòu)建自動(dòng)測(cè)試工具首先讀取輸入資料如聯(lián)鎖表、采驅(qū)表,并生成具體聯(lián)鎖車站自動(dòng)測(cè)試基礎(chǔ)數(shù)據(jù),然后根據(jù)預(yù)先設(shè)定好的測(cè)試項(xiàng)目、測(cè)試方法和步驟對(duì)聯(lián)鎖軟件進(jìn)行單項(xiàng)測(cè)試和進(jìn)路測(cè)試,最后生成測(cè)試日志和測(cè)試記錄,實(shí)現(xiàn)流程如圖5所示。
圖5 聯(lián)鎖自動(dòng)測(cè)試實(shí)現(xiàn)流程Fig.5 Implementation flow of automatic test of interlocking product
聯(lián)鎖自動(dòng)化測(cè)試工具通過(guò)腳本文件來(lái)定義測(cè)試場(chǎng)景,通過(guò)多次運(yùn)行編輯和生成的腳本文件實(shí)現(xiàn)對(duì)測(cè)試案例的重復(fù)測(cè)試,能模擬用戶在控顯界面和鍵盤上操作,并能識(shí)別屏幕上的文本以及圖片,并根據(jù)控顯界面元素的顏色以及狀態(tài)的變化來(lái)檢查界面顯示是否滿足測(cè)試結(jié)果,如識(shí)別道岔是否處于期望位置,信號(hào)機(jī)顯示的顏色是否符合預(yù)期。同時(shí),聯(lián)鎖自動(dòng)化測(cè)試工具可通過(guò)適配器采用以太網(wǎng)通信方式獲取聯(lián)鎖輸入與輸出數(shù)據(jù),并以此判斷測(cè)試結(jié)果是否符合預(yù)期。
本文設(shè)計(jì)的聯(lián)鎖自動(dòng)化測(cè)試工具可涵蓋單項(xiàng)測(cè)試、進(jìn)路測(cè)試等測(cè)試體系的所有測(cè)試內(nèi)容,采用人工與自動(dòng)相結(jié)合的方式,執(zhí)行效率更高,對(duì)于回歸測(cè)試也可以啟用自動(dòng)測(cè)試工具實(shí)現(xiàn),可以運(yùn)行在測(cè)試人員工作電腦或者工控機(jī)上,通過(guò)讀取輸入資料,包括聯(lián)鎖表、采驅(qū)表,并生成具體車站自動(dòng)測(cè)試數(shù)據(jù),通過(guò)人機(jī)界面選擇測(cè)試項(xiàng)目,滿足7×24 h自動(dòng)測(cè)試的需求,并自動(dòng)生成測(cè)試日志和測(cè)試報(bào)告,并記錄相關(guān)NCR,測(cè)試工具架構(gòu)如圖6所示。
圖6 聯(lián)鎖自動(dòng)測(cè)試工具架構(gòu)Fig.6 Architecture of automatic test tool of interlocking product
工具核心是測(cè)試工具的控制器,通過(guò)它加載場(chǎng)景和配置數(shù)據(jù),發(fā)送待執(zhí)行的命令,并在日志文件中記錄測(cè)試結(jié)果。工具核心也允許用戶去定義測(cè)試場(chǎng)景及整體測(cè)試配置。當(dāng)適配器從工具核心收到執(zhí)行命令后,執(zhí)行操作并把測(cè)試結(jié)果返回工具核心。采用圖像識(shí)別技術(shù)自動(dòng)定位和確定軟件界面中包含的控件進(jìn)而自動(dòng)生成測(cè)試腳本;測(cè)試過(guò)程中,通過(guò)對(duì)待測(cè)軟件進(jìn)行屏幕截圖,采用圖像識(shí)別算法識(shí)別截圖中是否包含預(yù)定義的可操作控件,如果存在,則觸發(fā)控制指令,達(dá)到圖像識(shí)別引導(dǎo)測(cè)試過(guò)程的目的;測(cè)試結(jié)果的驗(yàn)證通過(guò)對(duì)待測(cè)軟件的界面進(jìn)行截圖操作,利用圖像識(shí)別技術(shù)將截圖與期望的結(jié)果進(jìn)行匹配,從而自動(dòng)獲取測(cè)試結(jié)果。LSTEST適配器通過(guò)UDP界面控制與LSTEST應(yīng)用軟件接口,并檢查顯示,適配器從工具核心收到執(zhí)行命令,執(zhí)行操作并將結(jié)果送回工具核心。對(duì)于接口使用cwind庫(kù)和twapi來(lái)控制適配器到HMI的鼠標(biāo)操作,并使用Img和twapi來(lái)檢查設(shè)計(jì)位置的屏幕顯示,該接口基于TCP實(shí)現(xiàn),事實(shí)上在執(zhí)行其他命令時(shí),工具核心會(huì)等待反饋,以防造成通信堵塞。如果有通信故障發(fā)生,將嘗試建立3 次通信,如果失敗,則會(huì)向工具核心返回1個(gè)故障信息。
為最大限度提高測(cè)試效率,做如下優(yōu)化,定義可替換測(cè)試MMI的接口,定義MMI虛擬用戶來(lái)控制和檢查MMI,增加故障命令、環(huán)境模擬,并加入從舊的測(cè)試數(shù)據(jù)自動(dòng)導(dǎo)入測(cè)試數(shù)據(jù)。
4.2.1 讀取輸入資料
首先讀取Excel格式文件CBTC聯(lián)鎖表、降級(jí)模式聯(lián)鎖表、引導(dǎo)進(jìn)路聯(lián)鎖表、自動(dòng)折返進(jìn)路聯(lián)鎖表并識(shí)別聯(lián)鎖表中的道岔信息、區(qū)段信息、信號(hào)機(jī)信息等其他元素,然后將測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ),導(dǎo)入聯(lián)鎖表數(shù)據(jù),同時(shí)讀取輸入輸出信息表,然后將測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ),作為生成自動(dòng)測(cè)試基礎(chǔ)數(shù)據(jù)的輸入。
4.2.2 生成測(cè)試數(shù)據(jù)
在完成基礎(chǔ)數(shù)據(jù)的讀取后,生成基于特定線路和特定站場(chǎng)的測(cè)試數(shù)據(jù)以便調(diào)用,在測(cè)試時(shí)調(diào)用并生成測(cè)試基礎(chǔ)數(shù)據(jù),基礎(chǔ)數(shù)據(jù)生成結(jié)果如圖7所示。
圖7 基礎(chǔ)數(shù)據(jù)生成結(jié)果Fig.7 Results of basic data generation
4.2.3 測(cè)試運(yùn)行
啟動(dòng)工具核心,對(duì)車站聯(lián)鎖數(shù)據(jù)進(jìn)行完整測(cè)試、部分測(cè)試,可以根據(jù)項(xiàng)目特性與差異點(diǎn)任意選取測(cè)試項(xiàng),也可在任意測(cè)試項(xiàng)內(nèi)選擇所需要測(cè)試的數(shù)據(jù)靈活設(shè)置,測(cè)試項(xiàng)選擇如圖8所示。
4.2.4 測(cè)試輸出
測(cè)試完成后,測(cè)試主界面可直接顯示測(cè)試錯(cuò)誤數(shù)量,測(cè)試日志內(nèi)則詳細(xì)記錄了測(cè)試結(jié)果,測(cè)試結(jié)果主界面顯示如圖9所示。
圖9 測(cè)試結(jié)果顯示Fig.9 Display of test results
測(cè)試完成后,除查看測(cè)試主界面測(cè)試錯(cuò)誤數(shù)量外,測(cè)試日志內(nèi)也詳細(xì)記錄了測(cè)試結(jié)果,并給出錯(cuò)誤原因,可供測(cè)試人員分析,同時(shí)可根據(jù)測(cè)試日志生成最終的測(cè)試記錄單,導(dǎo)入要生成報(bào)告的日志,可同時(shí)選擇一個(gè)或多個(gè)日志文件,然后單擊“生成”即可。測(cè)試報(bào)告如圖10所示。
圖10 測(cè)試報(bào)告Fig.10 Test report
本文構(gòu)建的自動(dòng)化測(cè)試工具的優(yōu)點(diǎn)可在不改變?nèi)魏螖?shù)據(jù)代碼的情況下代替人工操作鼠標(biāo)執(zhí)行測(cè)試,且滿足7×24 h自動(dòng)測(cè)試的需求,大大提高測(cè)試效率,尤其是在需求改變不大的回歸測(cè)試中,甚至可以達(dá)到3倍以上效率的提高,有助于信號(hào)系統(tǒng)交付能力的整體提升;同時(shí)自動(dòng)測(cè)試工具支持C/S、B/S各種技術(shù)框架和基于組件智能識(shí)別的組件工具,可實(shí)現(xiàn)自動(dòng)化回歸測(cè)試和功能測(cè)試,讓測(cè)試更智能。在手動(dòng)測(cè)試中測(cè)試人員存在一定的人為失誤風(fēng)險(xiǎn),并且很難做到完全的遍歷測(cè)試,人工測(cè)試存在一定的測(cè)試誤差,自動(dòng)化測(cè)試工具可優(yōu)先彌補(bǔ)此測(cè)試風(fēng)險(xiǎn)。測(cè)試成本降低約15%~30%,測(cè)試時(shí)間大大縮短,提升現(xiàn)場(chǎng)交付效率約30%~50%。
但是自動(dòng)化測(cè)試工具在使用前需要進(jìn)行測(cè)試準(zhǔn)備,包括截圖配置、菜單配置、輸入資料配置等等,配置相對(duì)耗時(shí),同時(shí)自動(dòng)測(cè)試工具對(duì)測(cè)試設(shè)備要求較高,測(cè)試設(shè)備需運(yùn)行流暢。若出現(xiàn)卡頓則會(huì)影響測(cè)試結(jié)果,糾錯(cuò)能力稍差,在測(cè)試過(guò)程中若彈出其他不相干的窗口,則會(huì)影響測(cè)試結(jié)果,甚至停止測(cè)試,同時(shí)對(duì)于自動(dòng)測(cè)試工具的檢測(cè)認(rèn)證以及其系統(tǒng)的安全性與可靠性認(rèn)證及維護(hù)是一個(gè)有待優(yōu)化的問(wèn)題。
本文在現(xiàn)有聯(lián)鎖產(chǎn)品交付測(cè)試方法和特點(diǎn)的基礎(chǔ)上結(jié)合各線路,提出自動(dòng)化測(cè)試的方式,且構(gòu)建自動(dòng)化測(cè)試工具架構(gòu),實(shí)現(xiàn)聯(lián)鎖產(chǎn)品交付測(cè)試的自動(dòng)化過(guò)程。目前該自動(dòng)化測(cè)試工具已經(jīng)用于城軌聯(lián)鎖產(chǎn)品交付測(cè)試中,對(duì)提高測(cè)試效率及測(cè)試質(zhì)量發(fā)揮了一定作用,但后期仍有一定的改進(jìn)空間,可優(yōu)化降低配置時(shí)間及配置通過(guò)率并增加圖像識(shí)別技術(shù)達(dá)到完全的自動(dòng)化測(cè)試,讓測(cè)試效率及測(cè)試質(zhì)量再上一個(gè)新臺(tái)階。