鄭淳允 巫輝燕
摘 要:本文通過對汽車信息娛樂系統(tǒng)測試的各種需求進行研究,有針對性地設(shè)計一套自動化測試系統(tǒng),并對其工作原理和功能實現(xiàn)做出詳細解析,從而提高排查功能故障的效率,使汽車各分系統(tǒng)的性能得到較好的發(fā)揮,提高了汽車測試的效率,能夠把更多的測試人員從重復機械的大部分功能測試中解放出來。
關(guān)鍵詞:汽車 信息娛樂系統(tǒng) 自動化測試
Design of automatic test platform for automotive infotainment system
Zheng Chunyun Wu Huiyan
Abstract:In this paper, through the study of various requirements of automotive information and entertainment system testing, we design a set of automatic testing system, and make a detailed analysis of its working principle and function realization, so as to improve the efficiency of troubleshooting function, make the performance of each subsystem of the car get better play, improve the efficiency of automotive testing, and make more testers pay more attention Most of the functions of the machine are free from the test.
Key words:Automobile; infotainment system; automatic test;
1 引言
當前,軟件定義汽車逐漸成為行業(yè)的標準,汽車測試方法的改進對電動汽車乘坐的舒適性、安全性和節(jié)能環(huán)保具有重要的意義[1],合理的測試方法既可加快汽車投產(chǎn)升級的速度,又可以使各ECU元件充分發(fā)揮其應有的效果,因此,我們有必要對利用腳本對汽車批量測試尤其是對汽車的信息娛樂系統(tǒng)批量測試的技術(shù)進行研究,使汽車各分系統(tǒng)能發(fā)揮更佳效能,促進電動汽車的普及化。
2 自動化測試系統(tǒng)的組成
汽車的信息娛樂系統(tǒng)具有包括乘客信息娛樂、汽車和環(huán)境信息顯示、導航和連接等在內(nèi)的車內(nèi)特性,主要由信息娛樂系統(tǒng)顯示屏,無線音響單元,遠程信息處理控制單元(TCU)等組成,與車輛其它分系統(tǒng)之間通過總線以報文的形式實現(xiàn)通信。
本文設(shè)計的自動化測試系統(tǒng)主要由總線,圖像識別,dSPACE,程控電源,藍牙配對,查找控件等基本模塊組成。其采用Python語言進行編寫實現(xiàn)。Python是一種腳本型的編程語言,使用起來非常靈活,其具有功能強大、簡單易學、支持面向?qū)ο蟆⒑瘮?shù)式編程[2]的特點。Python擁有眾多的標準庫和第三庫,簡單易用且功能強大,使得開發(fā)各種應用程序變得簡潔快速,滿足不同軟件的開發(fā)需求,非常適合非軟件開發(fā)人員學習和應用[3][4]。
相比人工測試,其特點是采用包括自動生成代碼/下載和試驗/調(diào)試的一整套工具包[5]。對傳入的測試用例檢索各行,每一行按腳本執(zhí)行測試流程,對測試流程中的重復操作實現(xiàn)全自動化執(zhí)行[6]。
3 自動化測試系統(tǒng)的工作原理
3.1 總線測試
本文設(shè)計的自動化測試系統(tǒng)的總線測試功能目前只支持can總線收發(fā),主要是收集車輛通信的can報文信號并與測試用例中預期的can報文進行比對[7][8]。其工作流程為: gRPC客戶端構(gòu)造一個遠程的客戶端,然后讓PC端進行收發(fā)報文,如圖1所示。點擊總線按鈕。
插入總線斷言第一步需導入DBC文件。DBC文件可以理解為是對底層通信的can總線信號的翻譯,該文件會把把翻譯后的文字顯示在導入的軟件界面上,因此可以更直觀地監(jiān)控總線收發(fā)的報文。導入DBC文件后點擊報文,點擊后出現(xiàn)報文信息和信號信息。Phys Value為需發(fā)送的值,Check Value為需接收的有效值,Invalid Value為需接收的無效值,上述參數(shù)均為DBC文件翻譯后在平臺上的顯示。插入發(fā)送需填寫時限,插入接收需填寫時限和有效幀數(shù),無效幀數(shù)選填。插入成功后會添加到腳本步驟列表之中。
3.2 攝像頭截取圖像對比功能測試
攝像頭圖像識別功能測試需要用戶在編寫腳本時保存一張預期圖片和該圖片需要對比的區(qū)域。測試進行時,該功能會利用攝像頭進行拍攝,并抽取一幀圖片,獲取到需要識別的圖片,然后對該圖片進行裁剪,將需要對比的區(qū)域裁剪下來得到需要對比的區(qū)域圖。得到區(qū)域圖后會計算該圖與預期圖各自的直方圖結(jié)果,利用兩圖的直方圖結(jié)果計算出兩圖的相似度。最后相似度大于0.7(相似度值可在軟件設(shè)置調(diào))即為Pass,否則 Fail。流程圖如圖2。
點擊攝像頭按鈕,出現(xiàn)如圖3,該界面可對攝像頭進行操作。左邊視圖是攝像頭實時視頻,右邊視圖是點擊拍照后截取視頻最后一幀的照片。首先需要選擇攝像頭設(shè)備點擊連接,連接設(shè)備后可進行拍照,拍照后可進行保存或插入斷言。保存即保存到本地臨時文件夾(關(guān)閉軟件后會被刪除),插入斷言即將攝像頭的圖像對比斷言加入到主界面,點擊關(guān)閉或關(guān)閉窗體都可將攝像頭關(guān)閉。
3.3 dSPACE工具對機柜進行操作
dSPACE[4][5]功能是建立一個gRPC服務器,然后對gRPC服務器進行請求來實現(xiàn)的。gRPC 服務器利用dSPACE的API進行對機柜進行操作,其實質(zhì)是通過建立一套命令行工具,以方便高級測試人員可以擺脫固定腳本的束縛,用命令行工具實現(xiàn)更靈活的操作,對于一些不常見故障的排查與測試有良好的效果。
3.4 程控電源測試
程控電源的測試是基于硬件在環(huán)仿真(HIL)實現(xiàn)的[9][10][11],打開Hil機柜界面,先點擊設(shè)置,加載和配置SDF后方可進行對信號的操作。右擊信號可查看信號信息,插入讀或?qū)懶盘栔禂嘌?,監(jiān)控信號值變化。
程控電源簡單來說就是通過 pyvisa 發(fā)送 SCPI 指令來實現(xiàn)對程控電源的控制。在 PC 端中集合了幾個常見的功能,比如調(diào)節(jié)電壓,電流等,具體到實現(xiàn)方法都是一樣的發(fā)送SCPI的指令。由是通過pyvisa進行操作的,所以pyvisa不支持的程控電源類型無法進行控制。程控電源服務器的流程如圖4。
程控電源主要用于汽車信息娛樂系統(tǒng)的硬件測試中,比如額定工作電流電壓、高壓低壓保護、待機時暗電流大小的監(jiān)測等等測試用例,自動化測試可以準確調(diào)節(jié)電流電壓,避免人工調(diào)節(jié)的偶然誤差和反應時間滯后的缺點,同時保證測試者與測試設(shè)備的安全。
腳本中插入配置后,腳本中的所有信號讀寫都根據(jù)該配置進行讀寫信號值。如未插入配置,腳本中的信號讀寫會根據(jù)自身填寫的MA 端口進行讀寫,此時如果服務器未開啟該端口會導致腳本報錯。
3.5 本地圖像識別
本地圖像識別需用戶在編寫腳本時保存一張預期圖片和該圖片需要對比的區(qū)域,可以調(diào)用攝像頭截圖獲取所需圖片。測試進行時,該功能會利用adb對選擇運行的安卓設(shè)備進行截屏,獲取到需要識別的圖片,然后對該圖片進行裁剪,將需要對比的區(qū)域裁剪下來得到需要對比的區(qū)域圖。得到區(qū)域圖后會計算該圖與預期圖各自的直方圖結(jié)果,利用兩圖的直方圖結(jié)果計算出兩圖的相似度。最后相似度大于0.7(相似度值可在軟件設(shè)置調(diào))即為Pass,否則Fail。測試流程圖如圖5。
3.6 查找控件
控件是用戶與可與之交互以輸入或操作數(shù)據(jù)的對象??丶ǔ3霈F(xiàn)在對話框中或工具欄上。自動化測試系統(tǒng)需要代替人工點擊車機的動作,與汽車信息娛樂系統(tǒng)頻繁交互,操作量大,因此準確快速查找到相應的控件對提高該自動化測試系統(tǒng)測試的效率和準確率有非常重要的作用。
查找控件主要有兩個功能,一是根據(jù)包名打開應用;二是獲取界面中的控件元素,而獲 取控件元素的方式有3種,分別為 text,description,resouceId。還可設(shè)置“是否點擊”參數(shù)來執(zhí)行相應動作。
4 自動化測試過程實例
基于開發(fā)的自動化測試平臺,對導航軟件中的指示牌文字信息測試用例進行自動化測試,過程如下:
4.1 測試需求
在導航過程中,對導航界面出現(xiàn)的指示牌能夠正確顯示文字信息。
測試前提描述:連接攝像頭,調(diào)好對焦曝光等;儀表在地圖界面,主題為經(jīng)典主題;車機在主頁界面,用adb工具連接。操作車機模擬導航,地圖導航信息(指示牌文字)傳輸正常。
4.2 測試步驟
用戶首先調(diào)用采集圖像接口,獲取同一時刻下的車機和儀表盤的圖像。在儀表盤和車機端的圖像中,該接口規(guī)定了截取導航軟件指示牌文字信息所在的矩形區(qū)域的坐標;系統(tǒng)模塊根據(jù)這些坐標對儀表盤和車機的圖像進行裁剪,得到兩者指示牌文字信息的圖像,再根據(jù)OCR文字識別工具識別出兩者的指示牌文字信息,包括距離下一道路的公里數(shù)、下一道路的名稱、總行程的剩余公里數(shù)、總行程的預計剩余時間。該接口對兩者的上述識別出來的信息進行比對,如果下一道路的公里數(shù)和道路名稱一致,則返回比對成功,否則提示比對失敗。
4.3 測試執(zhí)行及結(jié)果分析
對搭建好的測試序列進行系統(tǒng)批量的執(zhí)行,啟動車機高德導航地圖,進入模擬導航模式,模擬導航過程中顯示出沿途指示牌文字信息,攝像頭截取圖像清晰,系統(tǒng)能準確定位文字出現(xiàn)區(qū)域,并與系統(tǒng)后臺文字庫比對,如果比對正確,則指示牌文字定位框顯示黃色,如圖6所示。以上結(jié)果能夠滿足測試預測結(jié)果,證明了該系統(tǒng)的科學性和可行性。
對該用例進行180次測試后發(fā)現(xiàn),該自動化測試腳本能夠準確定位圖片中隨機出現(xiàn)指示牌的準確位置,并可以準確識別出指示牌上的中文和數(shù)字,經(jīng)過與百度云、pytesseract等常用的文字識別軟件的對比,未發(fā)現(xiàn)識別錯誤的情況出現(xiàn),表明該系統(tǒng)還具有良好的魯棒性。
5 結(jié)束語
本文根據(jù)目前汽車測試效率較低的現(xiàn)狀設(shè)計了一套自動化測試系統(tǒng),主要由總線,圖像識別,dSPACE,程控電源,攝像頭,查找控件等基本模塊組成,通過這些功能,可以把大量重復測試步驟進行批量操作,使得測試效率極大提高。合理的測試方法既可加快汽車投產(chǎn)升級的速度,又可以使各ECU元件充分發(fā)揮其應有的效果,因此,我們有必要對利用腳本對汽車批量測試的技術(shù)進行研究,使汽車各分系統(tǒng)能發(fā)揮更佳效能??偟膩碚f,這套自動化測試系統(tǒng)使得汽車測試效率提高,評價標準統(tǒng)一,有利于解放大量測試人力。
本文的主要創(chuàng)新點是研究了汽車自動化測試的絕大部分應用場景,全面覆蓋了汽車測試的要點,這些測試功能方法提升了重復測試的效率,統(tǒng)一了測試標準,有利于穩(wěn)定汽車電子元件性能,具有實用性、先進性等。
參考文獻:
[1]歐陽明高.中國新能源汽車產(chǎn)業(yè)未來十年大勢展望[J].汽車縱橫,2016(6):62-65.
[2]周偉,宗杰.Python開發(fā)技術(shù)詳解[M].北京:機械工業(yè)出版社.2009.
[3]華劍南.Python語言在自動化測試系統(tǒng)中的應用[J].電子技術(shù)與軟件工程,2017(8):252-253.
[4]王聰穎.基于Python的自動化測試框架的分析與設(shè)計[D].北京:北京郵電大學,2017.
[5]葛慶光.純電動汽車整車控制器的研究[D].合肥工業(yè)大學,2012.
[6]黃福春.新能源整車控制器硬件在環(huán)測試研究與應用[J].汽車電器,2019(11):34-36.
[7]任大恒,嚴曉,黃碧雄,王影.電池管理系統(tǒng)的報文采集與解析[J].計算機系統(tǒng)應用,2020,29(06):132-136.
[8]岳洋,蘭國輝,周紅進.基于GSM和CAN總線的數(shù)據(jù)采集監(jiān)控系統(tǒng)[J].電子測量技術(shù),2012,35(10):107-109+126.
[9]吳方義,劉衛(wèi)東,燕冬,等.基于硬件在環(huán)的整車控制器自動化測試研究與應用[J].汽車電器,2018(11):29-31.
[10]廖奇祥.基于硬件在環(huán)的整車控制器自動化測試研究與應用[J].決策探索(中),2020(02):60-61.
[11]巫輝燕,林漢雄.基于HIL的車載網(wǎng)關(guān)控制器的自動化測試研究[J].汽車實用技術(shù),2021,46(05):140-142.