宋 茜,吳速超,耿宗起,石玉慶
(濰柴動力股份有限公司發(fā)動機技術(shù)研究院,山東 濰坊 261061)
隨著發(fā)動機電控技術(shù)的不斷更新,國產(chǎn)自主ECU也逐漸嶄露頭角。濰柴自主開發(fā)的ECU控制器就完全可以適用于歐VI柴油發(fā)動機的控制。
濰柴自主開發(fā)的ECU控制器會不斷根據(jù)市場反饋以及法規(guī)要求,對控制軟件進行更新升級,以及修復(fù)一些bug。為了更加全面準確地測試軟件性能,我們引入了HIL(硬件在環(huán)),但一臺HIL的價格比較昂貴,所以可用的測試資源是有限的。因此為了實現(xiàn)資源的最優(yōu)化分配,以及實現(xiàn)資源在公司內(nèi)部及各子公司之間的共享,我們利用Jenkins和ECUTEST來解決這個問題。
測試工程師使用ECU-TEST在個人本地電腦編寫測試用例,將其上傳到SVN服務(wù)器,然后觸發(fā)測試任務(wù)。Jenkins接收到測試任務(wù)之后,會自動查詢可用的HIL資源,并將測試用例發(fā)布到合適的HIL上進行運行。運行結(jié)束后,測試報告自動上傳數(shù)據(jù)庫,并郵件通知對應(yīng)的測試工程師,可以去數(shù)據(jù)庫中下載測試報告。
在這整個過程中,免除了測試工程師自己去找HIL資源的麻煩。同時,集團內(nèi)部其他子公司也可以遠程實現(xiàn)ECU軟件的硬件在環(huán)測試,實現(xiàn)了資源的共享和最大化利用。
ECU-TEST是一個自動化測試軟件,主要應(yīng)用于MiL/SiL/HiL測試環(huán)境中的自動化測試用例的編輯、實現(xiàn)、執(zhí)行、測試數(shù)據(jù)分析以及測試報告的生成。借助ECU-TEST,即使沒有任何測試自動化和編程方面的知識,用戶也可以在每個開發(fā)階段直觀地為其軟件創(chuàng)建自動化測試用例并自動運行它們。盡管使用該工具所需的工作量非常低,但在所有級別上都可以保持異常高的測試品質(zhì),這得益于其豐富的測試工具接口和很好的易用性,ECU-TEST在國內(nèi)外汽車公司內(nèi)的MiL/SiL/HiL測試中得到了非常廣泛的應(yīng)用。
Jenkins是一個開源的、提供友好操作界面的持續(xù)集成工具,主要用于持續(xù)、自動地構(gòu)建/測試軟件項目、監(jiān)控外部任務(wù)的運行。Jenkins通常與版本管理工具、構(gòu)建工具結(jié)合使用。常用的版本控制工具有SVN、GIT,構(gòu)建工具有Maven、Ant。
整個功能架構(gòu)如圖1所示。根據(jù)功能的不同,我們將整個架構(gòu)分為3個部分。
1)操作界面:測試工程師的主要任務(wù)就是在操作界面上編寫軟件功能的邏輯測試用例以及對應(yīng)的自動測試用例,創(chuàng)建測試任務(wù),顯示測試任務(wù)執(zhí)行狀態(tài)機結(jié)果等。
2)后臺運行工具:后臺使用的工具有數(shù)據(jù)庫、SVN以及Jenkins。數(shù)據(jù)庫主要用來存儲邏輯用例、測試計劃相關(guān)信息以及測試報告;SVN用來存儲自動測試用例;Jenkins用來尋找合適的HIL資源并將測試任務(wù)配置到該HIL資源上運行。
3)測試執(zhí)行工具:執(zhí)行工具主要有HIL以及安裝了ECU-TEST的電腦。ECU-TEST會連接INCA和HIL,自動執(zhí)行測試任務(wù)中所有的自動測試用例,并生成測試報告。測試報告會上傳到數(shù)據(jù)庫中。
圖1 功能架構(gòu)圖
3.2.1 界面功能
界面設(shè)置分為3個部分:菜單欄、樹狀結(jié)構(gòu)選項欄、內(nèi)容欄。如圖2所示。
圖2 界面圖示例
3.2.1.1 菜單欄
菜單欄的主要功能有:①新建測試用例:點擊該選項,會自動跳出新建測試用例的界面;②新建測試計劃:點擊該選項,會自動跳出新建測試計劃的界面;③導(dǎo)入/導(dǎo)出:點擊該選項,可以選擇導(dǎo)入或?qū)С鰷y試用例。
3.2.1.2 樹狀結(jié)構(gòu)欄
樹狀結(jié)構(gòu)欄主要有3個子項。
1)測試用例:該項下面列舉了所有項目名稱,每個項目名稱下面又劃分不同的方向。
點擊不同方向名稱,可以在右邊的內(nèi)容欄中顯示該項目該方向的所有測試用例列表。
點擊項目名稱,在右邊的內(nèi)容欄中顯示該項目的所有測試用例列表。
點擊“測試用例”這個主選項,在內(nèi)容欄顯示所有測試用例列表。
右鍵點擊各選項,可以選擇導(dǎo)入/導(dǎo)出選項,可以從Excel表中導(dǎo)入測試用例到該選項下,或者將該選項下的部分或所有用例導(dǎo)出到Excel表中。
2)測試計劃:該項下面列舉了所有項目名稱,點擊項目名稱,在內(nèi)容欄可以看到該項目所有的測試計劃。點擊“測試計劃”這個主選項,在內(nèi)容欄顯示所有測試計劃列表。
3)監(jiān)控項:監(jiān)控HIL運行狀態(tài)。
3.2.1.3 內(nèi)容欄
內(nèi)容欄會根據(jù)用戶在樹狀結(jié)構(gòu)欄中選擇的內(nèi)容不同而顯示不同的內(nèi)容。如圖2所示,選中TEST項目名后,內(nèi)容欄分為上下兩部分:上半部分顯示測試用例列表,下半部分顯示用例的具體內(nèi)容。
如果樹狀結(jié)構(gòu)選擇測試計劃,內(nèi)容欄顯示內(nèi)容與上述類似,如圖3所示。
圖3 測試計劃內(nèi)容欄顯示
如果樹狀結(jié)構(gòu)選擇監(jiān)視器,內(nèi)容欄會顯示所有HIL的運行狀態(tài)。
3.2.2 后臺功能
用戶在前端界面對邏輯測試用例以及自動測試用例編寫完成之后,系統(tǒng)的后臺程序會自動將測試計劃放入數(shù)據(jù)庫中,并根據(jù)優(yōu)先級對測試計劃進行排隊。然后按照順序依次執(zhí)行測試計劃。具體的操作流程如下。
1)測試工程師在自己電腦上,使用ECU-TEST編寫自動測試用例。
2)完成后,將測試用例上傳到SVN。
3)然后在本地電腦上創(chuàng)建一個新的測試計劃,并提交到數(shù)據(jù)庫中。
4)Jenkins安裝在服務(wù)器上,一直運行,周期性地遍歷HIL的運行狀態(tài)。
5)一旦發(fā)現(xiàn)有空閑的HIL,就去數(shù)據(jù)庫中遍歷測試計劃,查找優(yōu)先級最高的、創(chuàng)建時間最早的、適合在該HIL運行的測試計劃。
6)Jenkins將測試計劃中包含的ECU-TEST編寫的自動測試用例從SVN上拉取到HIL對應(yīng)的電腦上,并啟動ECU-TEST工具,開始執(zhí)行自動測試用例。
7)測試結(jié)束后,Jenkins關(guān)閉ECU-TEST,并將測試報告上傳到SVN。
8)郵件通知測試工程師,測試已完成,以及提供測試報告連接。
9)釋放HIL節(jié)點。
后臺功能的實現(xiàn),主要依托于Jenkins、ECU-TEST和Python。使用ECU-TEST編寫的自動測試用例,實現(xiàn)了ECU軟件測試的自動化。Jenkins將界面的請求運行測試計劃與ECU-TEST運行關(guān)聯(lián)起來,實現(xiàn)了整個系統(tǒng)的連接。使用Python語言編寫了幾個小腳本,實現(xiàn)了Jenkins從SVN拉取和上傳數(shù)據(jù)以及發(fā)送郵件給測試工程師等幾個小功能。
該系統(tǒng)采用Java編寫前端界面,使用Python、ECU-TEST和Jenkins在后端實現(xiàn)測試功能。實現(xiàn)了ECU軟件測試的自動化。同時因為可以遠程控制測試計劃的執(zhí)行,所以可以顯示HIL資源的共享,以及HIL資源的24h不間斷運行,提高HIL的利用率。