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