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