孫志科
(北京全路通信信號研究設(shè)計院集團有限公司,北京 100070)
為提高列車運行控制系統(tǒng)中各類安全產(chǎn)品仿真測試的工作效率,同時保證測試質(zhì)量的穩(wěn)定性及測試結(jié)果的一致性,采用自動化測試技術(shù)代替人工測試,已經(jīng)成為鐵路信號安全產(chǎn)品仿真測試技術(shù)發(fā)展的必然趨勢。
聯(lián)鎖軟件是計算機聯(lián)鎖產(chǎn)品的核心,它的軟件功能及配置數(shù)據(jù)的正確性直接影響車站的行車安全及運輸效率。因此,在研究計算機聯(lián)鎖產(chǎn)品自動化測試技術(shù)的初期,各類測試工具軟件均只將聯(lián)鎖軟件作為被測對象,基于通信接口進行數(shù)據(jù)交互,其原理如圖1所示。
圖1 基于通信接口的聯(lián)鎖軟件自動測試工具Fig.1 Automatic test tool for interlocking software based on communication interface
通過控顯軟件與聯(lián)鎖軟件之間的通信接口A,測試工具軟件向聯(lián)鎖軟件輸入各種操作命令,例如:辦理進路、單操道岔等;通過I/O接口仿真軟件與聯(lián)鎖軟件之間的通信接口B,測試工具軟件可以獲得信號設(shè)備的狀態(tài)信息(例如:區(qū)段狀態(tài)、道岔位置等),同時獲得聯(lián)鎖軟件輸出的控制命令(例如:開放或關(guān)閉信號,轉(zhuǎn)換道岔位置等)。通過對比聯(lián)鎖軟件的輸出與預(yù)期結(jié)果的一致性,測試工具軟件即可實現(xiàn)對聯(lián)鎖軟件功能及配置數(shù)據(jù)的正確性、完整性的自動化測試。
但是,除了聯(lián)鎖軟件以外,計算機聯(lián)鎖產(chǎn)品中還包括用于提供操作顯示界面的控顯軟件。即使聯(lián)鎖軟件中的功能邏輯和配置數(shù)據(jù)是正確的,如果控顯軟件存在缺陷,導(dǎo)致操作顯示界面的功能或顯示錯誤,仍然會影響車站運輸作業(yè)的安全和效率。因此,對于操作顯示界面的顯示及操作功能,以及控顯軟件與聯(lián)鎖軟件之間的通信接口,也必須進行測試,確認其正確性和完整性。
但是,脫離了聯(lián)鎖軟件的配合,控顯軟件無法單獨實現(xiàn)任何顯示和操作功能。因此,要想測試操作顯示界面,必須同時運行聯(lián)鎖、控顯軟件,而且其測試方法和操作步驟與測試聯(lián)鎖軟件時有很大程度的重疊。
例如:測試聯(lián)鎖軟件中的進路數(shù)據(jù)和相關(guān)的聯(lián)鎖功能時,需要執(zhí)行辦理、取消進路等操作,而測試控顯界面的區(qū)段鎖閉狀態(tài)顯示及信號機顯示功能時,也需要執(zhí)行同樣的操作。
在人工測試過程中,測試工程師通過一次操作,即可同時完成對聯(lián)鎖軟件和控顯軟件的測試。但是很顯然,基于數(shù)據(jù)通信模式的自動化測試工具軟件無法對操作顯示界面進行測試,這部分測試工作仍然需要測試工程師人工完成,對聯(lián)鎖產(chǎn)品整體的測試效率提升有限。而采用基于操作顯示界面的自動化測試技術(shù),則可以通過一次測試操作同時完成對聯(lián)鎖軟件和控顯軟件的測試,使整體的測試效率最大化。
實現(xiàn)基于操作顯示界面的自動化測試需要解決以下2個方面的問題:
1)計算機界面顯示的自動識別,代替測試工程師完成對操作顯示界面顯示結(jié)果的識別;
2)遠程控制控顯/模擬機,代替測試工程師完成控顯和模擬界面的鼠標及鍵盤操作。
上述2個問題中,最關(guān)鍵的、難度最大的是識別操作顯示界面上顯示的圖形元素的特征,并將識別結(jié)果與標準圖形進行比對,以確認操作界面的實時顯示是否與預(yù)期一致。
對操作顯示界面上顯示的圖像進行實時識別,常用的技術(shù)方案有以下3種:
1)基于控件接口的圖像識別;
2)基于實時視頻捕捉及模板匹配的圖像識別;
3)基于顯示內(nèi)存映射及模板匹配的圖像識別。
對于基于Windows操作系統(tǒng)的應(yīng)用程序來說,通過操作系統(tǒng)提供的圖形控件的訪問接口,應(yīng)用程序可以獲得控件在界面上的各類顯示特征及屬性信息,不需要依賴任何復(fù)雜的算法就可以實現(xiàn)對控件狀態(tài)的獲取和自動操作。
在軟件實現(xiàn)層面,早期可以通過調(diào)用Win32 SDK提供的一系列API函數(shù),通過獲取窗口句柄和發(fā)送消息的模式實現(xiàn)對標準控件的狀態(tài)識別及操作。隨著Windows系統(tǒng)的升級,微軟提供了MSAA、UIA等功能更加完善的接口庫,可以滿足更加復(fù)雜的自動化測試需求,特別是對于自定義控件的支持得到顯著的加強。
采用基于控件接口的圖像識別技術(shù),有以下幾個方面的優(yōu)點:
1)圖像識別速度快;
2)有比較豐富的商業(yè)化工具軟件可用(例如:QTP、AccExplorer),可以大幅度降低面向特定需求的測試工具軟件的開發(fā)難度及成本;
3)可以同時實現(xiàn)對圖形用戶界面的自動操作。
但是,采用這種技術(shù)方案也有一些明顯的缺點。
1)對于非標準控件,特別是自繪制圖形的識別比較困難。而控顯軟件界面中恰恰包含了大量的自繪制圖形(信號機、軌道區(qū)段等)。為了實現(xiàn)自動化測試,需要在被測軟件中增加接口代碼,以提供各類自定義控件及自繪制圖形的特征信息接口,在實際執(zhí)行過程中的風(fēng)險和阻力較大。
2)需要掌握Windows操作系統(tǒng)的很多底層開發(fā)接口,并且需要被測軟件的開發(fā)人員提供大量的技術(shù)支持,測試工具的開發(fā)難度和工作量較大。
3)這種技術(shù)方案的實現(xiàn)依賴于被測對象圖形界面的軟件設(shè)計方案,一旦被測對象所使用的控件發(fā)生變化或者操作系統(tǒng)版本變化,則必須修改測試工具軟件,軟件維護成本較高。
4)測試工具軟件和被測對象必須運行在同一臺計算機中,如果測試工具軟件的運行出現(xiàn)異常,可能影響被測對象的正常運行,導(dǎo)致測試結(jié)果的判定出現(xiàn)錯誤。
用高清數(shù)字攝像機實時拍攝控顯機的顯示界面,通過適當?shù)乃惴ㄌ崛‘嬅嬷懈鱾€圖形元素的特征值,然后與已知的各種圖形元素的特征值(模板)進行比對,從而識別出當前界面中是否存在某個已知的圖形元素。
這種技術(shù)方案與目前已經(jīng)廣泛應(yīng)用的人臉識別系統(tǒng)的原理比較類似。
采用基于實時視頻捕捉及模板匹配的圖像識別技術(shù),有以下幾個方面的優(yōu)點。
1)測試主機及其外圍設(shè)備獨立于被測系統(tǒng),不需要在被測系統(tǒng)中安裝任何用于圖像識別或自動測試的軟件,不會對被測系統(tǒng)的正常運行產(chǎn)生影響。
2)圖像識別算法屬于通用算法,經(jīng)過多年的發(fā)展,大部分常用算法已經(jīng)用各種常用編程語言實現(xiàn),包括一些開源、免費的代碼庫(例如:OpenCV庫),從而降低了圖像識別功能的開發(fā)難度。
但是,采用這種技術(shù)方案也有一些制約因素。
1)通過數(shù)字攝像機獲取的圖像質(zhì)量不穩(wěn)定,容易受到外界環(huán)境的影響,例如:光線強度和角度的變化、外界振動、拍攝角度變化等,導(dǎo)致識別結(jié)果出現(xiàn)偏差或錯誤。
2)雖然很多圖像識別算法已經(jīng)可以獲得開源、免費的源代碼,但是這些算法的調(diào)用接口比較復(fù)雜,需要掌握大量的接口參數(shù)定義及配置組合規(guī)則,才能獲得較好的識別正確率和識別速度,軟件開發(fā)的難度和工作量較大。
3)這種方案只解決了對界面顯示的自動識別需求,不能實現(xiàn)對被測系統(tǒng)的自動操作,需要集成其他的技術(shù)方案(例如:驅(qū)動機械手完成鍵盤或鼠標操作),開發(fā)工作量和難度較大,且整套自動測試系統(tǒng)的配置成本較高。
通過網(wǎng)絡(luò)通信接口(例如:TCP或UDP連接)將測試主機與被測計算機連接在一起,利用通用的遠程控制工具軟件(例如:VNC工具)將被測計算機顯示緩沖區(qū)的內(nèi)存數(shù)據(jù)完整映射到測試主機內(nèi)存中,然后運用各種圖像識別算法對顯示緩沖區(qū)某個區(qū)域的所有像素點的顏色、排列方式等特征值進行提取,并與已知的圖形元素的特征值(模板)進行比對,從而識別出當前區(qū)域是否存在某個已知的圖形元素。
如圖2所示,事先截取進站信號機開放各種顯示的圖片,采用適當?shù)乃惴ㄓ嬎愠龈鱾€圖片的像素點分布、顏色、尺寸等方面的特征值,保存在圖片庫中。在測試過程中,辦理以X信號機為始端的側(cè)向接車進路后,截取包括X信號機圖形在內(nèi)的一個矩形區(qū)域內(nèi)所有像素點在顯示內(nèi)存中的數(shù)據(jù),包括像素點的坐標、顏色等,再利用適當?shù)乃惴ㄓ嬎愠鲞@個矩形區(qū)域中圖形元素的各種特征值,與圖片庫中各種信號顯示圖片的特征值進行比對,發(fā)現(xiàn)與UU燈圖片的特征值一致,說明X信號機開放的是UU燈。
圖2 列車信號機顯示識別原理示意Fig.2 Schematic diagram of display and identification principle of train signal
采用基于顯示內(nèi)存映射及模板匹配的圖形識別技術(shù),有以下幾個方面的優(yōu)點。
1)測試主機獨立于被測對象,測試工具軟件的運行不會對被測對象產(chǎn)生影響。
2)基于顯示內(nèi)存映射及模板匹配的圖像識別算法屬于通用的基礎(chǔ)性算法,已有成熟的商業(yè)化工具軟件可以利用。在此類通用工具軟件的基礎(chǔ)上進行二次開發(fā),即可形成滿足計算機聯(lián)鎖產(chǎn)品自動測試需求的專用工具軟件,從而大大降低軟件開發(fā)的難度和工作量。
3)遠程控制工具軟件在提供被測計算機的顯示內(nèi)存映射的同時,還可以實現(xiàn)測試主機對被測計算機的鍵盤和鼠標的遠程控制,是一種更加完整、有效的解決方案。
當然,采用這種技術(shù)方案也有一些不足之處。
1)需要在被測對象的計算機中安裝遠程控制工具軟件,有可能對被測軟件的運行產(chǎn)生影響。但此類工具軟件往往已經(jīng)有長期的應(yīng)用歷史,屬于成熟軟件,其本身對計算機及網(wǎng)絡(luò)通信的資源占用非常少,對被測軟件的運行產(chǎn)生的影響可以忽略不計。
2)測試主機與被測對象通過網(wǎng)絡(luò)連接,對網(wǎng)絡(luò)通信質(zhì)量要求較高。實際使用中,可以將測試主機與被測對象連接在通信質(zhì)量良好的局域網(wǎng)中,以保證測試的連續(xù)性和實時性。
經(jīng)過綜合對比可以看出,3.4節(jié)的技術(shù)方案更適合用來開發(fā)計算機聯(lián)鎖產(chǎn)品的自動化測試工具軟件。
中國鐵路總公司于2016年發(fā)布《車站計算機聯(lián)鎖操作顯示技術(shù)規(guī)范》(TJ/DW 188-2016),對計算機聯(lián)鎖產(chǎn)品的操作顯示界面做出了全面、詳細的規(guī)定。只要基于滿足這份技術(shù)規(guī)范的車站制作的標準圖片庫和測試工具軟件,即可適用于其他符合此規(guī)范的車站,與該站控顯軟件的具體實現(xiàn)技術(shù)細節(jié)無關(guān),使得基于此方案開發(fā)的自動測試工具軟件具有更好的通用性。
圖像識別及遠程控制都是成熟的基礎(chǔ)性通用技術(shù),有成熟的商業(yè)化工具軟件可以使用。經(jīng)過調(diào)研和試用,筆者選擇了由英國Testplant公司開發(fā)的Eggplant Functional功能自動化測試平臺作為基礎(chǔ),進行二次開發(fā)。
Eggplant Functional平臺提供了豐富的基于顯示內(nèi)存映射及模板匹配的圖像識別功能接口,并且通過VNC工具軟件實現(xiàn)遠程控制功能。該平臺功能豐富,運行穩(wěn)定。實現(xiàn)自動化測試所需的各類常用基礎(chǔ)功能,該平臺均提供了調(diào)用接口。例如:Excel文件讀寫接口、文本文件讀寫接口、數(shù)據(jù)庫讀寫接口、郵件服務(wù)接口等。
該平臺提供了一套自定義腳本語言SenseTalk,以及配套的集成開發(fā)環(huán)境。SenseTalk語言的語法接近英語自然語法,使得用戶可以比較快速的開發(fā)出符合自身產(chǎn)品特點和業(yè)務(wù)需求的自動測試腳本。
筆者基于Eggplant Functional平臺開發(fā)了一套計算機聯(lián)鎖產(chǎn)品工程數(shù)據(jù)自動化測試工具軟件CBI_AS_PDT,實現(xiàn)了基于Excel格式電子聯(lián)鎖表的進路辦理和取消測試、帶動道岔測試、防護道岔測試、侵限區(qū)段測試、進路正常解鎖測試等多項自動化測試功能。
經(jīng)過嚴格的測試及大量車站的試用,并且通過由獨立第三方進行的T2類工具軟件的安全評估后,CBI_AS_PDT已經(jīng)正式應(yīng)用在計算機聯(lián)鎖產(chǎn)品集成項目的工程數(shù)據(jù)測試業(yè)務(wù)中,完成了200余個車站的測試任務(wù),在提高測試效率,保持測試質(zhì)量的穩(wěn)定性方面取得了顯著的成效。
除了面向工程數(shù)據(jù)的自動化測試,圖像識別技術(shù)同樣可以應(yīng)用在聯(lián)鎖系統(tǒng)功能的自動化測試中,以解決應(yīng)用軟件或系統(tǒng)軟件升級后難以開展全面功能測試的難題。此外,其他鐵路信號安全產(chǎn)品同樣可以借助圖像識別技術(shù)實現(xiàn)自動化、智能化測試,從而進一步提升鐵路信號產(chǎn)品的安全性、可靠性。這方面還有很多的課題值得研究。