前言
汽車電子軟件扮演著越來越重要的角色,為適應市場變化,車載軟件和功能的開發(fā)需要快速迭代。敏捷開發(fā)、持續(xù)測試、CI/CT/CD實現(xiàn)和DevOps等成了汽車電子行業(yè)的高頻詞,也正在幫助OEM和零部件供應商實現(xiàn)頻繁的代碼部署和實現(xiàn)可靠軟件交付的目標。測試自動化是這些過程中不可或缺的一部分,因為可以提升測試效率以加速開發(fā)迭代,特別是對于重復性的任務或不需要任何人工干預的任務。
說到自動化測試,Robot Framework作為自動化測試領域的明星框架,已經(jīng)開始摩拳擦掌,躍躍欲試。今天我們一起來看下Robot Framework在汽車電子測試中,可以發(fā)揮出多大的作用。
Robot Framework簡介
Robot Framework是一個廣受歡迎的自動化測試框架。所謂框架,可以理解為一組準則,遵循這些準則可以獲取明顯的收益。自動化測試框架就是由一個或多個自動化測試基礎模塊、自動化測試管理模塊、自動化測試統(tǒng)計模塊等組成的工具集合。
Robot Framework是一個基于Python語言開發(fā)的,可擴展的,是以關鍵字驅(qū)動模式的自動化測試框架。
特點
1
編輯用例簡單,啟用易于使用的表格語法,以統(tǒng)一的方式創(chuàng)建測試用例;
2
提供從現(xiàn)有關鍵字創(chuàng)建可重復使用的更高級別關鍵字的功能;
3
提供易于閱讀的結果報告和HTML格式的日志;
4
提供一個簡單的庫API,用于創(chuàng)建自定義測試庫,可以使用Python或Java本機實現(xiàn);
5
支持創(chuàng)建數(shù)據(jù)驅(qū)動的測試用例;
6
提供標記以分類和選擇要執(zhí)行的測試用例;
7
可以和SVN或者GIT及Jenkins持續(xù)集成。
上文我們提到Robot Framework是以關鍵字驅(qū)動模式的自動化測試框架,同時支持創(chuàng)建數(shù)據(jù)驅(qū)動的測試用例。那么關鍵字驅(qū)動和數(shù)據(jù)驅(qū)動分別有什么特點呢?
關鍵字驅(qū)動是由關鍵字和數(shù)據(jù)組成測試用例執(zhí)行測試,測試框架的底層負責解釋關鍵字,完成指令,測試用例的編輯者只需要使用關鍵字和數(shù)據(jù)組合,即可實現(xiàn)復雜的測試邏輯。測試執(zhí)行的代碼和測試用例代碼是分離的。這種方式學習成本比較高,開發(fā)關鍵字及其相關功能的初始投資可能需要更長的時間。
數(shù)據(jù)驅(qū)動測試是從數(shù)據(jù)文件讀取輸入、輸出數(shù)據(jù),通過變量傳入測試腳本執(zhí)行測試,數(shù)據(jù)是可變的,測試設計是重復的、高度抽象的。使用這種測試方式可以減少重復勞動,測試用例易于修改和維護。但是這種方式不擅長邏輯處理,一組腳本只能處理特定格式的數(shù)據(jù)。在一些特定的測試場景下,這種方式具有明顯優(yōu)勢。比如汽車ECU(如網(wǎng)關)測試有數(shù)據(jù)轉(zhuǎn)發(fā)/路由的測試場景,需要測試的數(shù)據(jù)有時多達上千個,我們只需創(chuàng)建一條數(shù)據(jù)轉(zhuǎn)發(fā)業(yè)務的測試用例,從數(shù)據(jù)文件中讀取輸入、輸出數(shù)據(jù)后,遍歷所有數(shù)據(jù)即可完成測試。
Robot Framework整體架構
Robot Framework是一個通用的,和具體測試工具松耦合的框架,其高度模塊化的架構如下圖所示:
測試數(shù)據(jù)(Test Data)使用非常簡單、易于編輯的表格格式。Robot Framework會解析測試數(shù)據(jù), 執(zhí)行測試用例, 并生成日志和報告。框架本身對測試對象可以完全“一無所知”, 而是通過測試庫與其交互。測試庫可能是直接使用被測應用程序的接口, 也可以使用其它底層的測試工具作為驅(qū)動。
Robot Framework環(huán)境安裝
Robot Framework環(huán)境的安裝比較簡單,只需兩步即可完成:
1.安裝python配置環(huán)境變量;
2.打開dos窗口,輸入指令 pip install robotframework,點擊回車,安裝RobotFramework。
?
Robot Framework常用關鍵字
上文我們提到Robot Framework是一個關鍵字模式驅(qū)動的自動化測試框架,Robot Framework的測試用例由關鍵字和測試數(shù)據(jù)組成。關鍵字是用Python語言編寫的函數(shù),也即是一個個方法。它是為了完成一個功能來設計的,分為系統(tǒng)關鍵字和用戶關鍵字。
系統(tǒng)關鍵字包含標準庫里面的關鍵字和第三方庫里面的關鍵字,就像C/C++的庫函數(shù)或者Python的內(nèi)置函數(shù)一樣。
用戶關鍵字是根據(jù)業(yè)務需求將不同的業(yè)務封裝成一個關鍵字或者將用例執(zhí)行的步驟封裝成一個關鍵字,就像C/C++或者Python中的用戶自定義函數(shù)。
下面我們介紹幾個常見關鍵字的用途
Convert To Integer:將給定的變量轉(zhuǎn)換成一個整數(shù)。示例:
?
${result} =Convert To Integer100# Result is 100
?
?
Import Library:導入擴展庫或者自定義庫。示例:
?
Import LibraryMyLibrary
Import Library${CURDIR}/Lib.pyarg1named=arg2WITH NAMECustom
?
?
Get Variable Value:獲取變量的值,賦給一個新的變量,如果變量不存在可以設置一個默認值。示例:
?
${x} = Get Variable Value $a default
${y} = Get Variable Value $a $
${z} = Get Variable Value $z
?
?
Log:使用給定的級別記錄給定的信息。示例:
?
LogHello, world!# Normal INFO message.
LogWarning, world!WARN# Warning.
?
?
Set Variable:給變量設置值。示例:
?
${hi} =Set VariableHello, world!
${hi2} =Set VariableI said: ${hi}
${var1}${var2} =Set VariableHelloworld
@{list} =Set Variable${list with some items}
${item1}${item2} =Set Variable${list with 2 items}
?
?
Should Be Equal:Robot Framework中的斷言關鍵字,如果給定的對象不相等,就會判定失敗。示例:
?
Should Be Equal${x}expected
Should Be Equal${x}expectedCustom error message
Should Be Equal${x}expectedCustom messagevalues=False
?
?
Sleep:測試執(zhí)行等待一定時間。示例:
?
Sleep42
Sleep1.5
Sleep2 minutes 10 seconds
Sleep10sWait for a reply
?
?
Robot Framework測試用例示例
說了這么多,大家肯定想趕緊看看Robot Framework是怎么使用的,現(xiàn)在我們通過一個簡單的例子來說明Robot Framework是怎么執(zhí)行測試的。
測試用例操作步驟
加載CANoe測試工程
啟動測試
等待一定時間,確保CANoe啟動完成
設置系統(tǒng)變量的值
等待一定時間,確保系統(tǒng)變量設置完成
獲取關聯(lián)系統(tǒng)變量的信號值
比較設置的值和讀取的值是否相同
終端輸出提示“測試用例執(zhí)行結束”
Robot Framework編寫的測試用例如下圖一所示:
圖一 Robot Framework測試用例示例
執(zhí)行測試用例:dos窗口中輸入robot 測試用例路徑,點擊回車即可,這里執(zhí)行用例的邏輯是使用pip安裝Robot Framework時,會在Python安裝路徑下面的Scripts文件夾生成robot.exe文件,Scripts文件夾已經(jīng)添加到系統(tǒng)路徑,因此不需要再配置robot.exe的系統(tǒng)路徑就可以直接調(diào)用。
執(zhí)行后用例后,CANoe中關聯(lián)系統(tǒng)變量的信號值設置成功,如圖二所示。
圖二 CANoe信號EngineState::OnOff值設置為1
用例執(zhí)行完成后,生成的測試報告如圖三所示。
圖三 測試用例執(zhí)行后生成的測試報告
Robot Framework與CANoe結合使用
相比于IT行業(yè)的軟件測試,汽車電子需要搭建硬件測試環(huán)境,測試時需要監(jiān)控和仿真很多總線信號和硬線信號,CANoe作為專業(yè)的總線網(wǎng)絡開發(fā)和測試工具被眾多整車廠和供應商的系統(tǒng)設計師、開發(fā)工程師和測試工程師所廣泛使用。配合Vector的硬件設備,如VN通信硬件接口卡及VT IO板卡,以及圖形化自動化測試工程開發(fā)軟件vTESTstudio,可以勝任汽車電子研發(fā)測試的各項任務。Robot Framework和CANoe結合使用,既帶來了Robot Framework可以自動部署測試軟件、自動截取日志、可以生成易于閱讀的測試報告和可以靈活的選取測試用例的優(yōu)點,也保留了Vector工具在多總線支持、網(wǎng)絡監(jiān)測和分析、系統(tǒng)仿真等方面的優(yōu)勢,各取所長。
CANoe是留有COM Interface的,這樣我們可以通過第三方的程序調(diào)用CANoe開放的API。調(diào)用交互的部分DEMO代碼如下圖四所示:
圖四 Python編程調(diào)用CANoe代碼
Robot Framework和CANoe結合使用一般有兩個思路:
第一種情況是把測試用例的過程主體在Robot Framework環(huán)境中編寫腳本實現(xiàn)并執(zhí)行,在執(zhí)行過程中調(diào)用CANoe提供測試數(shù)據(jù)、參數(shù)、變量的讀取和設定,這個思路適合對時間要求不敏感的測試用例。如下圖五所示用例,CanoeHandle為自定義的關鍵字庫,創(chuàng)建了加載CANoe工程、啟動測試、停止測試、獲取信號值、設置系統(tǒng)變量值、獲取系統(tǒng)變量值等關鍵字,可以使用這些關鍵字組合創(chuàng)建Robot Framework測試用例,執(zhí)行測試。
圖五 基于Robot Framework編寫CANoe測試用例
第二種情況是測試用例整體在Vector工具鏈中開發(fā)測試工程和腳本(比如基于vTESTstudio開發(fā)圖形化測試工程或是CANoe-CAPL編寫測試腳本),并在CANoe中執(zhí)行工程和腳本。此時,如圖六所示,Robot Framework作為一個測試用例管理框架來使用,CanoeHandle為自定義的關鍵字庫,創(chuàng)建了加載CANoe工程、加載測試腳本、執(zhí)行測試腳本等關鍵字,可以使用Robot Framework進行測試管理,根據(jù)實際需求刪選測試用例、自動控制測試開始、停止等。結合Jenkins打造通用的自動化持續(xù)集成測試平臺,可以顯著提升測試效率。
圖六 基于Robot Framework管理CANoe測試工程
結語
IT領域的開發(fā)理念和以太網(wǎng)等具體通信技術經(jīng)過優(yōu)化改造后在汽車上的應用,為軟件定義汽車的實現(xiàn)提供了諸多方法論和技術手段上的支撐和支持。同樣,發(fā)源于IT行業(yè)的測試技術也越來越多地被應用到汽車電子的測試中,在過去一年的項目中,北匯信息已經(jīng)將Robot Framework與CANoe等汽車行業(yè)的主流工具進行了結合應用,積累了一些實踐經(jīng)驗,期待與大家深入交流和探討。下期我們將帶來Robot Framework結合Jenkins的測試實踐應用的主題,敬請關注。
注:文中部分圖片來源于Vector。
審核編輯 :李倩
-
汽車電子
+關注
關注
3023文章
7819瀏覽量
166010 -
自動化
+關注
關注
29文章
5483瀏覽量
79007 -
數(shù)據(jù)驅(qū)動
關注
0文章
124瀏覽量
12312
原文標題:Robot Framework簡介及在汽車電子測試中的應用
文章出處:【微信號:QCDZSJ,微信公眾號:汽車電子設計】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論