林 磊,郭 鑄,羅方旋,余昌瑾
(株洲中車時代電氣股份有限公司軌道交通技術中心,湖南 株洲412001)
同時CRH2型網絡控制系統與MVB總線型集中控制網絡不同,該網絡為分布式環網結構進行分布式冗余,各節點均進行參與控制邏輯,支持8輛編組、16輛編組及8+8重聯編組運營,需按1∶1實物進行測試設計,測試所花費的時間由于其復雜程度大導致相應人工測試時間也長達數月,自動化用例及平臺設計極大減輕人力成本及對細節一致性的把握,同步提升效率和質量。
本文重點從車載網絡控制系統通信與人機界面全自動化測試研究與應用,實現測試過程無人化,同時進一步保障車載網絡產品的正確性與可靠性,解決動車領域快速響應與高質量之間的矛盾。
CRH2型動車組網絡控制系統自動化仿真測試平臺(圖1),由1∶1被測車載網絡設備,車輛設備仿真,自動化測試集成開發環境組成。
網絡控制系統與車輛具備人機交互界面、速度傳感器、輸入輸出數字量與模擬量和第三方設備電流環/HDLC串行通信接口,短編動車組由8節車廂組成,長編動車組為16節車廂組成。司機臺人機交互界面或車輛交互信息對應相應設備仿真,將車輛網絡設備發出的信息轉換為以太網數據包傳輸至計算機測試環境進行信息處理,同時將計算機測試環境發出的指令轉換成車輛網絡識別的用戶操作、硬線IO、串行通信數據等,實現車輛設備的仿真。

圖1 自動化仿真測試平臺軟硬件框架結構
模擬司機對車載顯示設備的操作與界面內容確認功能,通過通信接口,將界面實時截屏到遠程計算機,同時將遠程計算機點擊輸入操作傳送至車載顯示設備執行用戶請求,實現顯示設備自動化基礎交互。
遠程界面通常兩種實現方式:(1)實時視頻與機械手結合;(2)車載顯示設備中嵌入截屏和模擬操作功能。
視頻和機械手方案對視屏像素與車載顯示器真實像素將產生差異,直接影響圖像識別準確率同時機械手操作顯示設備速度緩慢影響測試效率。
CRH2型動車組網絡系統顯示器采用Proface觸摸屏,嵌入遠程投影功能(圖2),將車載顯示界面,1∶1像素投影至計算機,同時傳送鼠標對界面的點擊操作,模擬人點擊觸摸屏操作。
本屆十杰評選,再一次提及人像精髓的理解:要有“精、氣、神”,人物要活靈活現!錯把“技術”當“藝術”,拍出來的照片是僵化的。而關于“好作品”的定義,又一次回歸到自然的“真我”理念上來。

圖2 司機顯示器遠程界面
自動化測試除IO點位、通信數據流等訪問與控制功能,還需要模擬與司機顯示設備人機交互,目前通用計算機UI自動化測試框架比較成熟,但UI自動化測試基于計算機程序界面為控件按不同層次組合而成,測試工具可通過枚舉指定界面中的各控件列表,提取關心的控件并獲得顯示信息進行操作和確認。
但車載顯示設備通常均為嵌入式系統,僅能以圖片形式獲取整個界面的顯示,不能以控件列表進行拆分及文字提取(圖3)。因此通用的計算機UI自動化測試工具不能實現對嵌入式系統的界面測試。CRH2型自動化仿真測試平臺,通過圖像識別,對圖片中的各文字和非文字進行識別,形式元素信息列表,用于確認測試中關心的信息進行操作和判斷。

圖3 車載顯示設備與計算機界面自動化測試對比
對于傳統控件列表的識別,界面不存在識別率的概念,但適應性存在限制,不支持以圖片非控件組成界面。而對以圖片識別為基礎的測試系統,圖片的清晰度將直接影響到識別的準確性,采用遠程投影1∶1像素的遠程界面,同時采用文字識別+符號圖片集像素匹配方式,彌補單純使用文字識別覆蓋不完全的缺陷。
CRH2型動車組測試用例采用Excel編寫文本用例,對參數、操作、確認分欄編輯以提高可讀性,使用例更接近自然語言,同時以腳本語言為基礎,支持腳本語言的所有特性及擴充特性。
目前主流自動化測試軟件,均以腳本語言為基礎,即用于描述和運行相關用例,并提供無限擴展能力,例如廣泛應用的QTP自動化測試軟件基于VBScript腳本語言[1-2]。由于腳本語言的發展及主流排行變化,腳本語言的選擇由語言的便捷性、易讀性及支持庫的多少決定,本測試平臺采用目前主流腳本語言Python作為腳本運行環境,降低學習難度和設計難度,同時提高擴展性。
為降低用例編制難度和易讀性,人工用例由情況、操作和確認(表1),對應的自動化用例包含參數、操作和確認(表2)。由于同一項功能,需要進行多種條件下進行測試,此時用例效率將遠遠大于直接編碼,編譯器的作用即將參數進行展開生成Python腳本能夠支持的代碼后在腳本運行環境調試運行,以下對比人工測試用例和自動化測試用例,由于編譯出來的腳本會大大超過用例本身,僅將參數1編譯后即將生成進行對比(表2)。

表1 人工測試用例

表2 自動化測試用例
從上對比可以發現,用例參數化+編譯的方式可以基本統一人工測試用例和自動化測試用例,在不增加用例編制工作和可讀性的同時實現用例自動化。
在用例編制時,需要明確對象和操作,例如人工測試用例“給定牽引為牽引3檔”,需指明3個要素即可確認對象、屬性和操作,分別為“牽引”、“檔位”,“3檔”,為兼顧Python語言支持,用例寫為:牽引["檔位"]=3,可讀性和要素與人工測試用例等同。
為實現用例的可讀性,需要將“牽引“這個對象與仿真設備綁定,否則這行用例代碼對Python來說并無意義。
綁定實現初始化代碼如下,其中Memroy Mapper為實現綁定功能的Python類:
牽引=MemoryMapper(仿真設備地址)
牽引.AddMemory(“檔位”,信息所在偏移)
同時由于MemoryMapper類通過重載__setitem__(self,key,val) 和 __getitem__(self,key) 方法,當Python執行用例:牽引["檔位"]=3時,MemoryMapper類會調用__setitem__方法,查找仿真設備的地址及相關屬性信息偏移,實現仿真設備向網絡控制系統給定真實信號。
用例執行前的初始用綁定代碼,即實現數據綁定功能,可通過編譯器編譯Excel編制的協議自動生成,提高自動化程度。
集成開發環境核心思想為最大程度降低用戶操作并明確顯示用戶關注信息,如圖4所示,加載測試工程,顯示工程對應測試用例集并顯示相關用例,同步顯示可編譯后的執行代碼,單步或運行跟蹤,同時將測試過程中的相關操作界面和問題日志實時顯示,用于用戶確認測試進度與測試異常狀態。采用類似Visual Studio等主流集成開發環境的dock布局,可實現同屏調整及分屏顯示,提搞自動化測試過程的直觀度。

圖4 自動化測試集成開發環境
用戶在進行自動化測試時,僅需提供車輛設備與網絡通信協議和用例兩份Excel文檔,其余過程均由集成開發環境處理完成。并通過關系型數據庫,實現測試文本和圖片日志與代碼用例相關聯,快速定位用例和代碼行。
自動化調試過程為測試用例最終轉換為圖文并茂的測試報告的執行過程,如圖5所示,自動化調試過程除包含對被測對象的調試外,由于用例的編制也可能存在錯誤,因此對用例的調試同樣重要。

圖5 自動化測試流程
網絡控制系統自動化測試平臺為適應車載顯示設備與控制設備工業領域特殊要求并繼承主流計算機自動化測試工具的優點,具備適應車載網絡設備顯示與控制的全自動化測試,解決具有人機交互界面參與的嵌入式控制系統不支持全自動化測試的難題。目前已應用于CRH2型動車組網絡控制系統的軟件測試和硬件功能測試中,提高測試效率與質量。