收稿日期:2024-05-21
*基金項(xiàng)目:江蘇省科技計(jì)劃項(xiàng)目(BE2023074)。
作者簡介
胡海華(1980—),男,高級工程師,碩士,主要從事新能源整車及零部件等方面的研究工作。
【摘 要】為提高車輛功能測試的效率與可靠性,設(shè)計(jì)一種基于CAN總線的自動(dòng)化測試系統(tǒng),期望實(shí)現(xiàn)測試用例構(gòu)建與管理、自動(dòng)化測試、實(shí)時(shí)數(shù)據(jù)采集、自動(dòng)報(bào)告生成等功能,并通過試驗(yàn)充分驗(yàn)證系統(tǒng)的可行性。
【關(guān)鍵詞】CAN總線;自動(dòng)化測試;數(shù)據(jù)采集;測試管理
中圖分類號:U463.7 文獻(xiàn)標(biāo)識碼:A 文章編號:1003-8639( 2024 )07-0067-04
Automated Testing System Based on CAN Bus*
HU Haihua,JI Jinqiang,QIAN Zhenghua
(Asiastar Motor Coach Co.,Ltd.,Yangzhou 225116,China)
【Abstract】To improve the efficiency and reliability of vehicle functional testing,a CAN bus based automated testing system is designed,aiming to achieve functions such as test case construction and management,automated testing,real-time data collection,and automatic report generation. The feasibility of the system is fully verified through experiments.
【Key words】CAN bus;automated testing;data collection;test management
控制器局域網(wǎng)絡(luò)(Controller Area Network,CAN)總線是一種重要的串行通信協(xié)議,廣泛應(yīng)用于車輛的電子控制單元ECU之間的信息傳遞。通過CAN總線,多個(gè)ECU可以通過單一的通道高效地交換信息,極大地提高了車輛的控制效率和可靠性。然而,隨著汽車功能的復(fù)雜化,傳統(tǒng)的車輛功能測試面臨諸多挑戰(zhàn)。測試人員通常需要依據(jù)測試大綱和具體功能,模擬測試環(huán)境,采集并分析數(shù)據(jù)波形,最終由人工編制測試報(bào)告,這一過程不僅耗時(shí)而且易于出錯(cuò)。在這種背景下,設(shè)計(jì)一種基于CAN總線的自動(dòng)化測試系統(tǒng)顯得尤為重要。本系統(tǒng)設(shè)計(jì)了一套自定義的語法結(jié)構(gòu),支持用戶在Execl文件中進(jìn)行測試用例的編制和管理。系統(tǒng)實(shí)現(xiàn)測試用例的語法解析、測試過程的自動(dòng)化、實(shí)時(shí)數(shù)據(jù)采集和自動(dòng)報(bào)告生成功能。同時(shí)系統(tǒng)提供了良好的用戶交互界面,簡化操作。本系統(tǒng)避免了過多的人為干預(yù),顯著提高測試的準(zhǔn)確性和效率,降低了人為誤判等風(fēng)險(xiǎn)。
1 系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
1.1 系統(tǒng)的架構(gòu)和功能
綜合考慮系統(tǒng)的功能性和實(shí)用性需求,構(gòu)建其整體結(jié)構(gòu)方案,系統(tǒng)結(jié)構(gòu)圖如圖1所示。
語法結(jié)構(gòu)是系統(tǒng)的核心基礎(chǔ),本系統(tǒng)設(shè)計(jì)了4大類語法結(jié)構(gòu),以指導(dǎo)測試用例的編制和測試系統(tǒng)的執(zhí)行。
測試用例管理負(fù)責(zé)編制和管理測試用例。操作人員需提前在Excel模板中依照規(guī)定的格式和語法將功能測試大綱轉(zhuǎn)換為語法版測試用例,同時(shí),工作表中設(shè)計(jì)了測試用例庫,便于對可復(fù)用的測試用例進(jìn)行維護(hù)。
自動(dòng)化測試軟件是系統(tǒng)的核心執(zhí)行部分,操作人員可以在界面進(jìn)行系統(tǒng)配置、文件導(dǎo)入、測試用例選擇等。當(dāng)測試開始后,軟件會(huì)自動(dòng)根據(jù)測試用例進(jìn)行語法解析、數(shù)據(jù)采集和邏輯判斷,并實(shí)時(shí)顯示測試進(jìn)度和結(jié)果。在測試完成后自動(dòng)進(jìn)行報(bào)告生成。
1.2 測試語法結(jié)構(gòu)
在自動(dòng)化測試系統(tǒng)中,一套能滿足各種測試用例設(shè)計(jì)需求的語法結(jié)構(gòu)是非常重要的,這些語法必須能夠支持從基礎(chǔ)數(shù)據(jù)讀寫到高級邏輯判斷,并且能實(shí)現(xiàn)復(fù)雜邏輯、多變條件以及循環(huán)嵌套的測試步驟,這樣才能確保測試流程的完整性和深度。本系統(tǒng)基于模塊化和可擴(kuò)展性原則,設(shè)計(jì)了14種語法結(jié)構(gòu),具體如下:①基礎(chǔ)語法:read、assert、sendmsg、capture、stopcapture、end;②判斷語法:if/elif/else;③循環(huán)語法:while、break;④輔助語法:alert、wait、creatnum、write、math。部分語法結(jié)構(gòu)說明如表1所示。
1.3 測試用例管理
本系統(tǒng)的測試用例管理采用Execl文件進(jìn)行管理,分為4個(gè)工作表。
1)TestCase:根據(jù)測試大綱編寫的測試步驟。
2)InitStep:測試用例的初始化步驟。
3)ClearupStep:測試結(jié)束時(shí)的清理步驟。
4)CustomStep:用戶自定義的步驟。
在TestCase工作表中,可以通過標(biāo)簽調(diào)用其他3個(gè)工作表中的內(nèi)容,從而實(shí)現(xiàn)測試用例庫的建立與調(diào)用,測試用例庫的調(diào)用方案如圖2所示。
1.4 測試軟件功能介紹
自動(dòng)化測試軟件實(shí)現(xiàn)過程是由操作人員先進(jìn)行系統(tǒng)配置,包括對CAN設(shè)備、通道、DBC文件等內(nèi)容進(jìn)行配置。然后,導(dǎo)入測試用例文件,成功導(dǎo)入文件后,根據(jù)需要選擇測試條目,調(diào)整測試條目執(zhí)行順序。當(dāng)開始測試后,軟件將根據(jù)語法結(jié)構(gòu)逐行解析,并進(jìn)行數(shù)據(jù)采集、處理、判斷等,測試過程中會(huì)將單條測試步驟的詳情按順序更新在界面上,當(dāng)執(zhí)行完單個(gè)測試條目后,將當(dāng)前測試條目的測試結(jié)果更新在界面上。當(dāng)執(zhí)行完所有的測試條目后,軟件會(huì)自行進(jìn)行報(bào)告生成,內(nèi)容包括測試概況、詳細(xì)測試條目、執(zhí)行時(shí)間和數(shù)據(jù)曲線分析等,為進(jìn)一步分析提供了詳實(shí)的數(shù)據(jù)支持。自動(dòng)化測試軟件實(shí)現(xiàn)流程圖如圖3所示。
1.4.1 測試用例加載與顯示邏輯
操作人員通過導(dǎo)入按鍵打開文件對話框,并選擇一個(gè)包含測試用例的Excel文件。導(dǎo)入測試文件后,軟件會(huì)解析文件工作表中的測試條目,讀取特定的行列以構(gòu)建測試用例的層次結(jié)構(gòu),在界面上通過樹狀結(jié)構(gòu)進(jìn)行顯示,對于樹的根節(jié)點(diǎn)和子節(jié)點(diǎn),動(dòng)態(tài)添加了復(fù)選框,用于供操作人員進(jìn)行選擇。軟件中為每個(gè)復(fù)選框綁定了一個(gè)事件處理函數(shù),當(dāng)復(fù)選框的狀態(tài)改變時(shí),這個(gè)函數(shù)負(fù)責(zé)同步更新父節(jié)點(diǎn)或子節(jié)點(diǎn)的選中狀態(tài),允許用戶通過選中一個(gè)頂級用例自動(dòng)選擇所有相關(guān)的子用例,或者通過取消選擇頂級用例來取消所有子用例,可以簡化操作過程。在操作人員選定測試用例后,軟件收集所有被選中的測試節(jié)點(diǎn),用于后續(xù)加載測試步驟使用。測試用例加載與顯示基本流程圖如圖4所示。
1.4.2 測試執(zhí)行實(shí)現(xiàn)邏輯
測試開始后,軟件會(huì)根據(jù)上述選中的測試節(jié)點(diǎn),重新讀取測試用例文件中的測試步驟,通過字典結(jié)構(gòu)將測試步驟構(gòu)建成層級結(jié)構(gòu),同時(shí),通過多線程不斷監(jiān)聽CAN通道以接收消息,采用PyQt的信號和槽機(jī)制處理接收到的數(shù)據(jù)和其他異步事件,提高了系統(tǒng)的響應(yīng)能力和實(shí)時(shí)性。
在測試用例解析方面,主要是根據(jù)不同的語法結(jié)構(gòu),制定不同的解析方案,并執(zhí)行具體的測試步驟邏輯。所有測試步驟結(jié)果實(shí)時(shí)更新,并在執(zhí)行完畢每條測試步驟后,將結(jié)果顯示在界面上,包括所執(zhí)行的測試步驟、當(dāng)前步驟執(zhí)行時(shí)間及具體結(jié)果等關(guān)鍵信息。
HWwo++ALhIni4rRflY2o5Q==針對判斷語句解析,軟件會(huì)先檢查if條件是否成立。如果條件為真,軟件則執(zhí)行if語句塊內(nèi)的相關(guān)操作。若條件為假,并且存在elif語句,軟件會(huì)依次檢查每個(gè)elif語句的條件。如果這些條件也不滿足,軟件最終將執(zhí)行else語句塊(如果存在),以處理未滿足任何先前條件的情況。if語句邏輯實(shí)現(xiàn)流程圖如圖5所示。
針對循環(huán)語句解析,特別是復(fù)雜的循環(huán)嵌套結(jié)構(gòu),系統(tǒng)采用遞歸方法進(jìn)行處理。解析到以while為起始的測試步驟時(shí),系統(tǒng)會(huì)創(chuàng)建一個(gè)字典來記錄循環(huán)邏輯及其嵌套步驟,并將這個(gè)字典存儲在列表中,以跟蹤測試執(zhí)行流程。這個(gè)列表充當(dāng)堆棧,管理嵌套的測試步驟。當(dāng)一個(gè)循環(huán)或條件結(jié)構(gòu)被另一個(gè)循環(huán)包圍時(shí),它會(huì)被添加到堆棧中的字典里。軟件會(huì)評估每個(gè)while循環(huán)的條件,若條件成立,則執(zhí)行循環(huán)體內(nèi)包含的所有步驟,包括進(jìn)一步的嵌套循環(huán)或條件語句。循環(huán)體的執(zhí)行通過遞歸調(diào)用實(shí)現(xiàn),允許系統(tǒng)深入每一層嵌套并執(zhí)行其中的所有步驟。
2 試驗(yàn)驗(yàn)證
測試系統(tǒng)軟件布局如圖6所示,主要包括:界面配置功能區(qū)、操作功能區(qū)、日志顯示區(qū)、測試用例執(zhí)行顯示區(qū)等。
2.1 測試用例導(dǎo)入驗(yàn)證
圖7為基于某款車型策略文件編制的測試用例Excel文件。
在導(dǎo)入測試用例文件后,界面上可以成功加載出所有的功能、ID和名稱,通過復(fù)選框可以勾選所需的測試用例。圖8為測試用例加載顯示界面。
2.2 測試語法解析驗(yàn)證
當(dāng)自動(dòng)化測試啟動(dòng)后,所有正在執(zhí)行的測試步驟會(huì)在界面的左側(cè)欄目中顯示,而右側(cè)欄目則展示當(dāng)前的測試條目,綠色背景的測試條目為測試通過,紅色背景表示測試失敗,黃色表示正在執(zhí)行,人為跳過或其他測試異常的測試條目也用黃色背景標(biāo)識,測試過程的界面如圖9所示。
在測試執(zhí)行中,如果識別到alert語句,軟件會(huì)彈出一個(gè)提示框顯示必要的信息,圖10為alert語句提示框。
圖11為判斷語句if條件為真的執(zhí)行過程,可以看出:當(dāng)if條件滿足后,執(zhí)行了一次內(nèi)部的read語句,執(zhí)行完內(nèi)部read語句后會(huì)跳出if判斷體,執(zhí)行assert語句。
圖12為循環(huán)執(zhí)行的過程,可以看出當(dāng)while條件成立,會(huì)執(zhí)行while內(nèi)部的wait語句,并會(huì)持續(xù)循環(huán)條件判斷,直到while條件不成立。
2.3 自動(dòng)報(bào)告生成驗(yàn)證
當(dāng)自動(dòng)化測試軟件完成測試后,會(huì)自動(dòng)生成PDF格式報(bào)告,會(huì)將測試結(jié)果進(jìn)行匯總統(tǒng)計(jì),并通過圖表的方式進(jìn)行生成,如圖13所示。
測試中所有執(zhí)行的步驟、時(shí)間及結(jié)果都會(huì)用表格的形式進(jìn)行生成,當(dāng)測試用例中有capture語句時(shí),會(huì)開始進(jìn)行數(shù)據(jù)采集,當(dāng)執(zhí)行到stopcapture語句時(shí),會(huì)停止數(shù)據(jù)采集,報(bào)告中會(huì)將采集的CAN信號通過曲線圖的方式插入到相應(yīng)的位置中,如圖14所示。
3 結(jié)束語
本文針對目前車輛測試行業(yè)內(nèi)出現(xiàn)的效率低、人為誤判等問題,提出了一種自動(dòng)化測試解決方案,本系統(tǒng)實(shí)現(xiàn)了通過Execl文件進(jìn)行測試用例管理,設(shè)計(jì)了一套實(shí)用性較強(qiáng)的語法結(jié)構(gòu),可以覆蓋廣泛的測試用例和場景,同時(shí)系統(tǒng)軟件也實(shí)現(xiàn)了測試用例解析、實(shí)時(shí)數(shù)據(jù)采集、自動(dòng)化測試、自動(dòng)生成報(bào)告等功能,大幅提高了測試的準(zhǔn)確性和效率,并且經(jīng)過測試可以滿足實(shí)際需求。
參考文獻(xiàn):
[1] 劉瑤秋,季金強(qiáng),趙苗苗,等. 整車CAN總線數(shù)據(jù)測試系統(tǒng)的研究[J]. 客車技術(shù)與研究,2020,42(6):36-39.
[2] 金虎. 自動(dòng)化軟件測試技術(shù)研究[D]. 成都:四川大學(xué),2006.
[3] 張弘. 基于CAN總線的信號采集與處理模塊研究[D]. 南京:南京航空航天大學(xué),2007.
[4] 黃勝龍. 汽車發(fā)動(dòng)機(jī)ECU的自動(dòng)化HIL仿真測試平臺的研究與實(shí)現(xiàn)[D]. 長春:吉林大學(xué),2013.
[5] 黃建軍,李宥謀,劉婧,等. 基于Python語言的自動(dòng)化測試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2017,40(4):39-43.
(編輯 凌 波)