孫志科
(北京全路通信信號研究設計院集團有限公司,北京 100070)
為提高列車運行控制系統中各類安全產品仿真測試的工作效率,同時保證測試質量的穩定性及測試結果的一致性,采用自動化測試技術代替人工測試,已經成為鐵路信號安全產品仿真測試技術發展的必然趨勢。
聯鎖軟件是計算機聯鎖產品的核心,它的軟件功能及配置數據的正確性直接影響車站的行車安全及運輸效率。因此,在研究計算機聯鎖產品自動化測試技術的初期,各類測試工具軟件均只將聯鎖軟件作為被測對象,基于通信接口進行數據交互,其原理如圖1所示。

圖1 基于通信接口的聯鎖軟件自動測試工具Fig.1 Automatic test tool for interlocking software based on communication interface
通過控顯軟件與聯鎖軟件之間的通信接口A,測試工具軟件向聯鎖軟件輸入各種操作命令,例如:辦理進路、單操道岔等;通過I/O接口仿真軟件與聯鎖軟件之間的通信接口B,測試工具軟件可以獲得信號設備的狀態信息(例如:區段狀態、道岔位置等),同時獲得聯鎖軟件輸出的控制命令(例如:開放或關閉信號,轉換道岔位置等)。通過對比聯鎖軟件的輸出與預期結果的一致性,測試工具軟件即可實現對聯鎖軟件功能及配置數據的正確性、完整性的自動化測試。
但是,除了聯鎖軟件以外,計算機聯鎖產品中還包括用于提供操作顯示界面的控顯軟件。即使聯鎖軟件中的功能邏輯和配置數據是正確的,如果控顯軟件存在缺陷,導致操作顯示界面的功能或顯示錯誤,仍然會影響車站運輸作業的安全和效率。因此,對于操作顯示界面的顯示及操作功能,以及控顯軟件與聯鎖軟件之間的通信接口,也必須進行測試,確認其正確性和完整性。
但是,脫離了聯鎖軟件的配合,控顯軟件無法單獨實現任何顯示和操作功能。因此,要想測試操作顯示界面,必須同時運行聯鎖、控顯軟件,而且其測試方法和操作步驟與測試聯鎖軟件時有很大程度的重疊。
例如:測試聯鎖軟件中的進路數據和相關的聯鎖功能時,需要執行辦理、取消進路等操作,而測試控顯界面的區段鎖閉狀態顯示及信號機顯示功能時,也需要執行同樣的操作。
在人工測試過程中,測試工程師通過一次操作,即可同時完成對聯鎖軟件和控顯軟件的測試。但是很顯然,基于數據通信模式的自動化測試工具軟件無法對操作顯示界面進行測試,這部分測試工作仍然需要測試工程師人工完成,對聯鎖產品整體的測試效率提升有限。而采用基于操作顯示界面的自動化測試技術,則可以通過一次測試操作同時完成對聯鎖軟件和控顯軟件的測試,使整體的測試效率最大化。
實現基于操作顯示界面的自動化測試需要解決以下2個方面的問題:
1)計算機界面顯示的自動識別,代替測試工程師完成對操作顯示界面顯示結果的識別;
2)遠程控制控顯/模擬機,代替測試工程師完成控顯和模擬界面的鼠標及鍵盤操作。
上述2個問題中,最關鍵的、難度最大的是識別操作顯示界面上顯示的圖形元素的特征,并將識別結果與標準圖形進行比對,以確認操作界面的實時顯示是否與預期一致。
對操作顯示界面上顯示的圖像進行實時識別,常用的技術方案有以下3種:
1)基于控件接口的圖像識別;
2)基于實時視頻捕捉及模板匹配的圖像識別;
3)基于顯示內存映射及模板匹配的圖像識別。
對于基于Windows操作系統的應用程序來說,通過操作系統提供的圖形控件的訪問接口,應用程序可以獲得控件在界面上的各類顯示特征及屬性信息,不需要依賴任何復雜的算法就可以實現對控件狀態的獲取和自動操作。
在軟件實現層面,早期可以通過調用Win32 SDK提供的一系列API函數,通過獲取窗口句柄和發送消息的模式實現對標準控件的狀態識別及操作。隨著Windows系統的升級,微軟提供了MSAA、UIA等功能更加完善的接口庫,可以滿足更加復雜的自動化測試需求,特別是對于自定義控件的支持得到顯著的加強。
采用基于控件接口的圖像識別技術,有以下幾個方面的優點:
1)圖像識別速度快;
2)有比較豐富的商業化工具軟件可用(例如:QTP、AccExplorer),可以大幅度降低面向特定需求的測試工具軟件的開發難度及成本;
3)可以同時實現對圖形用戶界面的自動操作。
但是,采用這種技術方案也有一些明顯的缺點。
1)對于非標準控件,特別是自繪制圖形的識別比較困難。而控顯軟件界面中恰恰包含了大量的自繪制圖形(信號機、軌道區段等)。為了實現自動化測試,需要在被測軟件中增加接口代碼,以提供各類自定義控件及自繪制圖形的特征信息接口,在實際執行過程中的風險和阻力較大。
2)需要掌握Windows操作系統的很多底層開發接口,并且需要被測軟件的開發人員提供大量的技術支持,測試工具的開發難度和工作量較大。
3)這種技術方案的實現依賴于被測對象圖形界面的軟件設計方案,一旦被測對象所使用的控件發生變化或者操作系統版本變化,則必須修改測試工具軟件,軟件維護成本較高。
4)測試工具軟件和被測對象必須運行在同一臺計算機中,如果測試工具軟件的運行出現異常,可能影響被測對象的正常運行,導致測試結果的判定出現錯誤。
用高清數字攝像機實時拍攝控顯機的顯示界面,通過適當的算法提取畫面中各個圖形元素的特征值,然后與已知的各種圖形元素的特征值(模板)進行比對,從而識別出當前界面中是否存在某個已知的圖形元素。
這種技術方案與目前已經廣泛應用的人臉識別系統的原理比較類似。
采用基于實時視頻捕捉及模板匹配的圖像識別技術,有以下幾個方面的優點。
1)測試主機及其外圍設備獨立于被測系統,不需要在被測系統中安裝任何用于圖像識別或自動測試的軟件,不會對被測系統的正常運行產生影響。
2)圖像識別算法屬于通用算法,經過多年的發展,大部分常用算法已經用各種常用編程語言實現,包括一些開源、免費的代碼庫(例如:OpenCV庫),從而降低了圖像識別功能的開發難度。
但是,采用這種技術方案也有一些制約因素。
1)通過數字攝像機獲取的圖像質量不穩定,容易受到外界環境的影響,例如:光線強度和角度的變化、外界振動、拍攝角度變化等,導致識別結果出現偏差或錯誤。
2)雖然很多圖像識別算法已經可以獲得開源、免費的源代碼,但是這些算法的調用接口比較復雜,需要掌握大量的接口參數定義及配置組合規則,才能獲得較好的識別正確率和識別速度,軟件開發的難度和工作量較大。
3)這種方案只解決了對界面顯示的自動識別需求,不能實現對被測系統的自動操作,需要集成其他的技術方案(例如:驅動機械手完成鍵盤或鼠標操作),開發工作量和難度較大,且整套自動測試系統的配置成本較高。
通過網絡通信接口(例如:TCP或UDP連接)將測試主機與被測計算機連接在一起,利用通用的遠程控制工具軟件(例如:VNC工具)將被測計算機顯示緩沖區的內存數據完整映射到測試主機內存中,然后運用各種圖像識別算法對顯示緩沖區某個區域的所有像素點的顏色、排列方式等特征值進行提取,并與已知的圖形元素的特征值(模板)進行比對,從而識別出當前區域是否存在某個已知的圖形元素。
如圖2所示,事先截取進站信號機開放各種顯示的圖片,采用適當的算法計算出各個圖片的像素點分布、顏色、尺寸等方面的特征值,保存在圖片庫中。在測試過程中,辦理以X信號機為始端的側向接車進路后,截取包括X信號機圖形在內的一個矩形區域內所有像素點在顯示內存中的數據,包括像素點的坐標、顏色等,再利用適當的算法計算出這個矩形區域中圖形元素的各種特征值,與圖片庫中各種信號顯示圖片的特征值進行比對,發現與UU燈圖片的特征值一致,說明X信號機開放的是UU燈。

圖2 列車信號機顯示識別原理示意Fig.2 Schematic diagram of display and identification principle of train signal
采用基于顯示內存映射及模板匹配的圖形識別技術,有以下幾個方面的優點。
1)測試主機獨立于被測對象,測試工具軟件的運行不會對被測對象產生影響。
2)基于顯示內存映射及模板匹配的圖像識別算法屬于通用的基礎性算法,已有成熟的商業化工具軟件可以利用。在此類通用工具軟件的基礎上進行二次開發,即可形成滿足計算機聯鎖產品自動測試需求的專用工具軟件,從而大大降低軟件開發的難度和工作量。
3)遠程控制工具軟件在提供被測計算機的顯示內存映射的同時,還可以實現測試主機對被測計算機的鍵盤和鼠標的遠程控制,是一種更加完整、有效的解決方案。
當然,采用這種技術方案也有一些不足之處。
1)需要在被測對象的計算機中安裝遠程控制工具軟件,有可能對被測軟件的運行產生影響。但此類工具軟件往往已經有長期的應用歷史,屬于成熟軟件,其本身對計算機及網絡通信的資源占用非常少,對被測軟件的運行產生的影響可以忽略不計。
2)測試主機與被測對象通過網絡連接,對網絡通信質量要求較高。實際使用中,可以將測試主機與被測對象連接在通信質量良好的局域網中,以保證測試的連續性和實時性。
經過綜合對比可以看出,3.4節的技術方案更適合用來開發計算機聯鎖產品的自動化測試工具軟件。
中國鐵路總公司于2016年發布《車站計算機聯鎖操作顯示技術規范》(TJ/DW 188-2016),對計算機聯鎖產品的操作顯示界面做出了全面、詳細的規定。只要基于滿足這份技術規范的車站制作的標準圖片庫和測試工具軟件,即可適用于其他符合此規范的車站,與該站控顯軟件的具體實現技術細節無關,使得基于此方案開發的自動測試工具軟件具有更好的通用性。
圖像識別及遠程控制都是成熟的基礎性通用技術,有成熟的商業化工具軟件可以使用。經過調研和試用,筆者選擇了由英國Testplant公司開發的Eggplant Functional功能自動化測試平臺作為基礎,進行二次開發。
Eggplant Functional平臺提供了豐富的基于顯示內存映射及模板匹配的圖像識別功能接口,并且通過VNC工具軟件實現遠程控制功能。該平臺功能豐富,運行穩定。實現自動化測試所需的各類常用基礎功能,該平臺均提供了調用接口。例如:Excel文件讀寫接口、文本文件讀寫接口、數據庫讀寫接口、郵件服務接口等。
該平臺提供了一套自定義腳本語言SenseTalk,以及配套的集成開發環境。SenseTalk語言的語法接近英語自然語法,使得用戶可以比較快速的開發出符合自身產品特點和業務需求的自動測試腳本。
筆者基于Eggplant Functional平臺開發了一套計算機聯鎖產品工程數據自動化測試工具軟件CBI_AS_PDT,實現了基于Excel格式電子聯鎖表的進路辦理和取消測試、帶動道岔測試、防護道岔測試、侵限區段測試、進路正常解鎖測試等多項自動化測試功能。
經過嚴格的測試及大量車站的試用,并且通過由獨立第三方進行的T2類工具軟件的安全評估后,CBI_AS_PDT已經正式應用在計算機聯鎖產品集成項目的工程數據測試業務中,完成了200余個車站的測試任務,在提高測試效率,保持測試質量的穩定性方面取得了顯著的成效。
除了面向工程數據的自動化測試,圖像識別技術同樣可以應用在聯鎖系統功能的自動化測試中,以解決應用軟件或系統軟件升級后難以開展全面功能測試的難題。此外,其他鐵路信號安全產品同樣可以借助圖像識別技術實現自動化、智能化測試,從而進一步提升鐵路信號產品的安全性、可靠性。這方面還有很多的課題值得研究。