郭佳,楊濤,賈定
一種嵌入式軟件自動化測試技術(shù)分析與研究
郭佳,楊濤,賈定
(陜西重型汽車有限公司 汽車工程研究院,陜西 西安 710200)
文章旨在提出一種簡單易行的嵌入式軟件自動化測試方案,分析該嵌入式軟件自動化測試方案的必要性,介紹了該方案的原理及構(gòu)成,通過一個車身控制器后工作燈功能的實際開發(fā)測試過程,詳細介紹了該方案進行嵌入式軟件邏輯功能測試和診斷測試的過程,通過實例可以看出該方案構(gòu)成簡單、操作方便、自動化程度高、節(jié)約測試時間,尤其在回歸測試時節(jié)約時間更為明顯。同時該方法還可以自動輸出測試報告,省去人工編制測試報告。
嵌入式;自動化;軟件測試
近年來,汽車產(chǎn)品更新?lián)Q代的速度不斷加快,尤其體現(xiàn)在汽車嵌入式電子控制單元的更新?lián)Q代,同時汽車上的嵌入式電子控制單元也在成倍增加,用來實現(xiàn)各種各樣的客戶需求和提升產(chǎn)品的舒適性以及經(jīng)濟性[1],“軟件定義汽車”的時代已經(jīng)到來。為了保證嵌入式電控單元軟件的可靠性,必須進行大量的軟件測試。在電控單元開發(fā)初期,一般會手動打開關(guān)閉硬線開關(guān)信號,手動逐條模擬、填充、發(fā)送報文信號進行電控單元軟件測試。一款常規(guī)的控制器的測試用例都在幾千條甚至幾萬條,這種手動測試效率低下,且容易出錯。回歸測試時需要再手動重復(fù)一遍所有的測試用例,整個控制器的測試效率可想而知。鑒于此,本文提出一種嵌入式電控單元軟件自動化測試的方法:運用CAN總線工具編制測試用例,形成可以執(zhí)行文件,測試用例一次設(shè)計可反復(fù)實用;加載通訊數(shù)據(jù)庫DBC和診斷數(shù)據(jù)庫CDD自動識別控制器接口報文信號;自動按照測試用例執(zhí)行測試;不僅可以進行邏輯功能測試,還可以進行診斷功能測試;最后還可以自動輸出直觀的測試報告。該測試構(gòu)成簡單、自動化程度高、測試效率高,尤其對于開發(fā)初期需要反復(fù)測試的情況可以有效節(jié)約開發(fā)時間,加速回歸測試,可以有效提高嵌入式軟件的可靠性。
隨著CAN總線在汽車上的應(yīng)用,現(xiàn)在大部分控制器都是支持CAN總線,同時隨著新的汽車電子架構(gòu)的出現(xiàn),中央網(wǎng)關(guān)已經(jīng)廣泛應(yīng)用到汽車電子電器架構(gòu)中,中央網(wǎng)關(guān)統(tǒng)一采集整車上大部分硬線開關(guān),然后根據(jù)需要將采集的開關(guān)轉(zhuǎn)成CAN信號路由到不同的CAN網(wǎng)段上,供不同網(wǎng)段的控制器使用,本文正是利用目前控制器的大部分輸入信號是CAN信號,便于通過CAN總線工具分析、仿真、測試,構(gòu)建了通過CAN總線仿真分析軟件搭建嵌入式軟件自動化測試平臺,整個原理如下圖1所示。
圖1 自動化測試平臺原理圖
首先需要CAN總線工具完成控制器CAN通訊矩陣數(shù)據(jù)庫DBC文件編制和診斷數(shù)據(jù)庫CDD文件編制,再通過測試用例編輯軟件完成測試用例的編制,最后導(dǎo)入CAN總線仿真測試軟件中進行執(zhí)行,CAN總線仿真軟件會識別加載進來的測試用例,然后按照數(shù)據(jù)庫的信號信息和節(jié)點信息自動執(zhí)行測試用例,完成邏輯功能測試。
該嵌入式軟件自動化測試的方案,不僅可以對嵌入式電控單元進行邏輯功能自動化測試,還可以對診斷功能自動化測試。診斷測試一般可以分為診斷協(xié)議測試、診斷功能測試、診斷應(yīng)用測試。診斷協(xié)議測試主要是驗證節(jié)點對相關(guān)診斷服務(wù)的請求能否按照診斷來實現(xiàn);診斷功能測試主要是圍繞DTC(Diagnostic Trouble Code)和DID(Data Identifier),通過DID進行數(shù)據(jù)讀/寫,例程控制和I/O控制測試;診斷應(yīng)用測試主要包含數(shù)據(jù)刷新和下線電檢[2]。本文中的方案通過加載診斷測試用例和診斷數(shù)據(jù)庫進而按照診斷服務(wù)自動進行診斷測試,本文的診斷測試主要針對診斷協(xié)議自動化測試和診斷功能自動化測試。
本文中所述的自動化測試平臺的硬件主要是一個桌面級測試臺架,就是按照嵌入式控制器的輸入輸出接口完成相應(yīng)的高低有效開關(guān)接入與相應(yīng)模擬負載接入。此臺架為車身燈光控制臺架,因此驅(qū)動負載用真實的小白熾燈為負載,為了方便測試診斷,在控制器與負載之間接入BOB盒用于模擬負載開路和短路的情況,臺架用DB9接頭引出CAN線,便于與CAN總線分析測試工具連接,再與電源相連接,構(gòu)成一個簡單的桌面級控制器測試臺架。
本文中所述的自動化測試平臺的軟件大致分為測試執(zhí)行軟件和測試用例編制軟件。測試執(zhí)行軟件采用的是VECTOR的CANoe軟件,該軟件可以實現(xiàn)CAN總線的分析仿真及測試,可以同時進行多個網(wǎng)絡(luò)節(jié)點模擬仿真[3],因此可以根據(jù)整車實際情況模擬整車網(wǎng)絡(luò)架構(gòu),實現(xiàn)被測控制器全部網(wǎng)絡(luò)環(huán)境模擬。另外,CANoe軟件還可以編輯DBC數(shù)據(jù)庫,DBC數(shù)據(jù)庫中包含著被測控制器相關(guān)的網(wǎng)絡(luò)節(jié)點,CAN報文和信號的層級關(guān)系,便于測試控制器的邏輯功能。CANoe軟件中的CANdelaStudio插件可以編制診斷數(shù)據(jù)庫CDD,CDD中包含著被測控制器的診斷服務(wù)以及可以實現(xiàn)的診斷功能層級關(guān)系,便于測試控制器的診斷功能[4-5]。DBC和CDD都是實現(xiàn)自動化測試的基礎(chǔ)。測試用例編制軟件采用的是vTEST studio軟件,該軟件用以進行測試用例的設(shè)計,加載DBC和CDD文件后,基于控制器ECU的測試需求,對相應(yīng)的邏輯功能和診斷功能設(shè)計對應(yīng)的測試步驟,編制完成并編譯通過之后,生成的測試腳本文件可加載到CANoe中,進行測試執(zhí)行。
本文以某款車身控制器中的為例,首先根據(jù)功能規(guī)范在MATLAB的Simulink/stateflow環(huán)境下搭建控制器邏輯模型,模型經(jīng)過模型測試通過后生成代碼,再對生成的代碼進行代碼測試,測試用例與模型測試的測試用例一樣,確保生成的代碼與模型具有一樣執(zhí)行行為。經(jīng)模型測試和代碼測試通過后生成代碼,形成應(yīng)用層代碼。底層代碼是由MCAL配置工具和協(xié)議棧配置工具根據(jù)車身控制器的功能規(guī)范、通訊矩陣、診斷規(guī)范配置集成完成,符合AUTOSAR架構(gòu),具有J1939和UDS協(xié)議,支持BT刷寫。最后將應(yīng)用層代碼集成到底層代碼中,再通過BT刷寫到車身控制器中。
根據(jù)該款車身控制器的功能規(guī)范,共有子功能36個,輸入報文信號42條,輸出報文信號139條,硬線數(shù)字輸入開關(guān)只有9個。如果按照手動給定硬線輸入信號和手動模擬、填充、發(fā)送報文的方式進行測試,測試一遍該款控制器需要15天左右的時間。如果按照本文的方法,編制CAN通訊數(shù)據(jù)庫DBC、診斷數(shù)據(jù)CDD以及測試用例,需要不到2天時間,自動化測試執(zhí)行0.5天左右。該方安的測試效率是手動測試效率的5倍左右。這還只是第1次測試的效率對比,該方案的測試用例是以可執(zhí)行文件固化的,可反復(fù)使用的,如果有功能變更或者增加,只需要在原來測試用例文件上變更或增減即可,而手動測試需要每次重新設(shè)計測試用例,手動執(zhí)行測試,該方案在回歸測試時效率更加明顯。
現(xiàn)在以該控制器中后工作燈功能邏輯測試為例,詳細介紹該方案。該后工作燈的控制邏輯如下:燈光開關(guān)1擋有效或者燈光開關(guān)2擋有效或者燈光開關(guān)AUTO擋有效,同時后工作燈開關(guān)信號有效,則驅(qū)動后工作燈針腳有效,后工作燈狀態(tài)報文有效。輸入信號均是網(wǎng)關(guān)采集然后轉(zhuǎn)發(fā)成CAN報文發(fā)給車身控制器,后工作燈狀態(tài)信號是車身控制器發(fā)出的報文,內(nèi)容和后工作燈驅(qū)動信號一致的,因此輸入輸出都是CAN報文。
3.2.1數(shù)據(jù)庫編制
首先根據(jù)車身控制器通訊矩陣用CANoe軟件編制車身控制器的通訊數(shù)據(jù)庫DBC文件,根據(jù)車身控制器的診斷規(guī)范用CANdelaStudio軟件編制車身控制器的診斷數(shù)據(jù)庫CDD文件。
3.2.2測試用例編制
首先,打開vTESTstudio軟件,建立測試用例工程,在測試工程中加載CAN通訊數(shù)據(jù)庫DBC以及要執(zhí)行測試用例的CANoe工程配置等內(nèi)容。其次,在工程下創(chuàng)建測試單元,并為已創(chuàng)建的測試單元創(chuàng)建測試表,在測試表下面就可以創(chuàng)建測試用例了[6]。最后,根據(jù)車身控制器功能規(guī)范設(shè)計測試用例,測試用例中信號名與功能規(guī)范中信號名對應(yīng)關(guān)系如下:
(1)燈光開關(guān)I檔信號——LightSwt_I;
(2)燈光開關(guān)II檔信號——LightSwt_II;
(3)燈光開關(guān)AUTO信號——LightSW_Auto;
(4)后工作燈開關(guān)信號——RSerSwtSig;
(5)后工作燈工作狀態(tài)指示信號——BackCabWorking LightState。
測試用例的編制主要由三個語句組成:Set語句,主要是給定輸入信號賦值;Wait語句,主要是讓控制器按照輸入信號的設(shè)定值執(zhí)行一段時間;Check語句,主要是讀取控制器輸出信號,并將讀取控制器的輸出信號與期望值比較,相等則認為測試通過,不相等則認為測試不通過。后工作燈其中一條測試用例編制如下圖2所示:
圖2 后工作燈一條邏輯功能測試用例
測試用例編制完成后需要vTESTstudio軟件進行相關(guān)語法和邏輯的編譯,編譯通過可以就完成測試用例的編制,可生成供測試軟件執(zhí)行的VTUEXE文件。
3.2.3測試執(zhí)行
測試執(zhí)行是在CANoe軟件中進行。打開CANoe軟件,點擊“Test”工具欄,建立測試配置,在測試配置中加載已經(jīng)編輯好的測試用例文件,即可進行測試。測試執(zhí)行時,CANoe軟件自動完成測試用例接口的讀取,按照已編制好測試用例自動執(zhí)行。
診斷功能測試與邏輯功能測試的過程基本一致,都是先編制數(shù)據(jù)庫,再編制測試用例,最后測試執(zhí)行。診斷測試的數(shù)據(jù)庫是用CANoe的CANdelaStudio插件編制診斷數(shù)據(jù)庫CDD文件。
編制測試用例的過程與編制邏輯功能測試用例的過程也基本一樣,都是建立測試工程、建立測試單元、建立測試表、建立測試用例。只不過診斷測試用例編制時使用的命令不同,主要用到的是Diagnostics Service:診斷服務(wù)命令,用以添加診斷描述文件CDD中的所有診斷命令,向控制器ECU發(fā)送診斷需求報文;Diagnostics Unlock ECU:診斷解鎖ECU命令,主要用以安全訪問,解鎖ECU,實現(xiàn)對ECU相應(yīng)數(shù)據(jù)更改控制。
圖3 邏輯功能測試報告
不管是邏輯功能測試還是診斷功能測試都是測試用例編制軟件通過數(shù)據(jù)庫獲取到相應(yīng)的信號接口,進而對信號接口操作,形成控制器的測試輸入序列,再通過總線分析工具執(zhí)行測試序列完成測試的過程。針對一些需要CAN總線和硬件共同參與功能邏輯的或者診斷測試的開路或者短路測試的情況,測試用例編制軟件vTESTstudio 有一個Set by Tester的命令,這個命令就相當于暫定命令,此時所有的輸入維持不變,可以等待手動進行硬線開關(guān)輸入或者手動設(shè)置開路和短路,硬線輸入設(shè)置完后測試又開始接著暫定的地方自動執(zhí)行。另外,邏輯功能測試和診斷功能測試是可以放到一個測試工程中一次執(zhí)行的,最后統(tǒng)一輸出一個完整的邏輯功能測試和診斷功能測試報告,形成一個完整的控制器測試報告,從測試報告中可以詳細看出每一個測試用例的測試結(jié)果。本文為了敘述方便分開進行描述,如下圖3所示,分別輸出邏輯功能測試報告和診斷功能測試報告。
測試是一款控制器質(zhì)量的有效保障手段,手動測試已經(jīng)越來越不適應(yīng)當前控制器自主開發(fā)的需要。本文提出一種嵌入式軟件自動化的方案,介紹了該方案的原理和構(gòu)成,并通過一款車身控制器的測試實例詳細描述了控制器自動化測試的過程。通過上述的介紹可以看出,CAN通訊已成為控制器的主要通訊信號,正是基于此提出運用CAN總線工具通過通訊數(shù)據(jù)庫DBC和診斷數(shù)據(jù)庫CDD獲取控制器輸入信號,進而操控接口信號編制測試用例,形成可執(zhí)行文件。利用CAN總線工具的仿真測試功能加載并自動化執(zhí)行測試,可實現(xiàn)控制器軟件邏輯功能和診斷功能自動化測試。相比手動測試,節(jié)約反復(fù)設(shè)計測試環(huán)境、設(shè)計測試用例以及手動模擬報文的時間,自動化測試效率是手動測試的5倍以上,同時還可以自動輸出測試報告,相比手動測試時人工觀察和記錄測試結(jié)果以及手動編制測試報告,該方案效率更高,出錯率更低。尤其對于回歸測試,該方案的效率和優(yōu)勢更加明顯,不僅僅節(jié)約了反復(fù)手動設(shè)計測試用例和測試執(zhí)行的時間,而且對于未變更的功能執(zhí)行的都是第一次編制的測試用例,可有效保證前后開發(fā)的一致性。該方案是一套值得推廣的嵌入式軟件自動化測試方案。
[1] 梁晨一.基于CAN/LIN總線的車載網(wǎng)關(guān)自動化測試系統(tǒng)設(shè)計[J].農(nóng)業(yè)裝備與車輛工程,2020,58(10):86-90.
[2] 保志遠.基于硬件在環(huán)技術(shù)的車輛診斷自動化測試系統(tǒng)的開關(guān)與應(yīng)用[D].重慶:重慶大學(xué),2018.
[3] 馬繼周.車用CAN總線自動化測試平臺的研發(fā)與應(yīng)用[J].汽車實用技術(shù),2012(10):1-4.
[4] 葛麗敏.基于VT系統(tǒng)的車身HIL平臺開發(fā)[J].汽車電器,2020(09): 35-37.
[5] 趙羽晴.面向汽車車窗控制單元的自動化測試方法及實現(xiàn)[D].哈爾濱:哈爾濱理工大學(xué),2018.
[6] 曹尚貴,張頌,田飛雄.基于網(wǎng)關(guān)架構(gòu)的車載網(wǎng)絡(luò)總線自動化測試系統(tǒng)[J].工業(yè)儀表與自動化裝置,2020(04):52-56.
Analysis and Research of an Embedded Software Automatic Test Technology
GUO Jia, YANG Tao, JIA Ding
( Automotive Engineering Research Institute of Shaanxi Heavy Duty Automobile Co., Ltd., Shaanxi Xi’an 710200 )
The purpose of this paper is to propose a simple and easy embedded software automatic testing scheme, analyzes the necessity of the embedded software automatic testing scheme, introduces the principle and composition of the scheme, and introduces in detail the process of embedded software logic function testing and diagnostic testing through the actual development and testing process of the rear work lamp function of a body controller The scheme has the advantages of simple structure, convenient operation, high degree of automation, saving test time, especially in regression test. At the same time, this method can also output automatic test report, and it saves time and effort to compile the test report manually.
Embedded; Automation; Software testing
A
1671-7988(2021)22-84-04
U467
A
1671-7988(2021)22-84-04
CLC NO.: U467
郭佳(1987—),男,就職于陜西重型汽車有限公司汽車工程研究院,研究方向為汽車控制器自主開發(fā)。
10.16638/j.cnki.1671-7988.2021.022.022