陳洪邦 李孝成
南京翼輝信息技術有限公司 南京 210000
隨著物聯網的發(fā)展,使用不同硬件平臺、不同操作系統(tǒng)和安裝各種軟件的嵌入式設備被不斷的研發(fā)生產出來,安裝在這些設備中的嵌入式軟件系統(tǒng)變得多種多樣。多種設備為在各個設備中安裝的嵌入式軟件系統(tǒng)提供多種執(zhí)行環(huán)境,但是會產生錯誤。因此,考慮到可能在執(zhí)行這些嵌入式系統(tǒng)功能中出現的錯誤,需要提前對嵌入式系統(tǒng)進行測試。
在與對應于真實環(huán)境的目標環(huán)境端口連接之前的主機環(huán)境下,根據基于許多情況的多種用戶情景來測試嵌入式系統(tǒng)。在主機環(huán)境下展開的情景可以在目標環(huán)境下再現。由于可以將嵌入式系統(tǒng)與具有多種硬件特性和軟件環(huán)境的目標環(huán)境端口連接,并進行操作,所以在完成嵌入式系統(tǒng)的開發(fā)之前,嵌入式系統(tǒng)需要進行多種情景詳細且深入的測試。存在一種傳統(tǒng)的測試方法,使用商業(yè)化的自動測試工具,以便向嵌入式軟件單向發(fā)送命令。
單獨加載嵌入式軟件系統(tǒng)的多個電子設備在通過通信接口發(fā)送和接收數據的同時執(zhí)行每個嵌入式系統(tǒng)功能。各個嵌入式系統(tǒng)的特性相互不同(例如,不同操作系統(tǒng)或者不同CPU架構),因此問題可能不僅由一個嵌入式系統(tǒng)引起而且也由多個嵌入式系統(tǒng)之間的交互引起。在后者的情況下,在執(zhí)行各個嵌入式系統(tǒng)功能的時間差、嵌入式軟件在接口上的效果等可以引起多種不期望的問題。
因此,基于針對單個嵌入式系統(tǒng)的單向命令發(fā)送的傳統(tǒng)測試難以再現特性相互不同的多個嵌入式系統(tǒng)之間的交互中、發(fā)送和接收數據的交互操作等中發(fā)生的多種問題。要覆蓋多種交互情景,傳統(tǒng)測試是不靈活的,驗證與多種情況相對應的情景的成本較高,浪費了時間和勞動力,難以精確測試。
針對上述嵌入式系統(tǒng)測試驗證問題,本文提出一種嵌入式系統(tǒng)的自動化測試裝置和測試方法,根據此方法實現一套基于Sylix OS嵌入式系統(tǒng)的自動化測試系統(tǒng)作為一種解決方案,解決嵌入式系統(tǒng)外設眾多、交互場景復雜、硬件平臺和軟件平臺(包括操作系統(tǒng)和軟件)多樣的測試和驗證工作量巨大且難以覆蓋的難題。
1.1 自動化測試裝置設計 自動化測試裝置由三個功能組件組成,上位機、工具代理、目標代理;上位機是一臺安裝Windows操作系統(tǒng)(也可以是Linux或Mac OS)的電腦,上位機上部署了自動化測試系統(tǒng)人機操作界面,人機界面使用跨平臺C++圖形用戶界面應用程序開發(fā)框架Qt開發(fā);工具代理是具備完整嵌入式系統(tǒng)功能的板卡或設備;目標代理是被測目標對象,一般是具備嵌入式系統(tǒng)功能的板卡或嵌入式設備。
自動化測試裝置的連接拓撲如圖11所示,上位機、工具代理和目標代理之間需要通過網線連接,并給三個設備分配同網段的IP地址,以便于網絡通信。根據測試需求的需要,測試工具與被測目標之間可以通過各種總線連接,例如網口、串口、I2 C、CAN、SPI等,被測目標也可以通過HDMI連接顯示器輸出圖像。
圖1.1 自動化測試裝置連接拓撲
1.2 系統(tǒng)軟件架構設計 自動化測試系統(tǒng)軟件架構分為三個部分,上位機軟件、工具代理軟件和目標代理軟件,上位機軟件主要承擔整個系統(tǒng)的業(yè)務流程控制和人機交互界面;工具代理軟件承擔測試用例的執(zhí)行管理和測試執(zhí)行協作,如按照用例設計的順序執(zhí)行等;目標代理軟件需要完成在測試前置條件滿足情況下,執(zhí)行測試用例,并向測試工具和上位機反饋測試結果和上傳測試日志文件。嵌入式系統(tǒng)的自動化測試系統(tǒng)架構如圖12所示。
圖1.2 嵌入式系統(tǒng)的自動化測試系統(tǒng)架構
2.1 上位機軟件設計 上位機軟件是自動化測試系統(tǒng)的人機操作主界面。主要功能包括測試用例和測試負載的管理,包括增加、刪除、修改、保存等功能;設備拓撲管理、與工具代理和設備代理的消息通信和文件傳輸;對XML和JSON格式文件的管理,測試業(yè)務流程控制、測試報告生成和打印,日志文件收集、查看、分析等,負載監(jiān)控和系統(tǒng)設置等。
2.1.1 測試配置流程 測試配置主要目標是根據測試需求生成目標代理執(zhí)行的測試場景文件,如圖2.3所示。測試場景文件以XML文件保存,一般包括測試用例和測試負載。
根據測試需求,首先需要配置測試用例和測試負載,生成測試用例文件和測試負載文件,這兩種以JSON文件保存;測試用例和測試負載文件結構一般又劃分成測試集、測試用例和測試項,以樹形結構組織;在配置測試場景時,可以直接選擇配置好的測試用例和測試負載的內容作為測試場景文件的測試項,添加到測試場景文件中的測試項也可以根據待測板卡的硬件參數進行測試項參數的調整,并不會影響被引用的測試用例或測試負載文件中的測試項。
因此,測試用例和測試負載文件可以被復用,測試場景中測試參數也可以動態(tài)調整,大大提高了測試效率,降低用例管理的復雜度。
圖2.1 測試配置流程
2.1.2 啟動測試流程 啟動測試流程是自動化測試系統(tǒng)的核心流程,首先,需要啟動執(zhí)行工具代理和目標代理上的軟件程序,在Sylix OS中啟動的命令是/apps/test_tool&,/apps/test_target&。啟動上位機軟件,在系統(tǒng)設置中配置自動化測試執(zhí)行的必需參數。其次,需要在上位機的測試場景中勾選待執(zhí)行的測試用例和測試負載,點擊啟動執(zhí)行。最后在測試分析中查看測試報告和測試產生的日志文件。啟動測試后的三個組件之間具體交互流程,詳見圖2.2。
圖2.2 啟動測試流程
2.2 工具代理軟件設計
2.2.1 業(yè)務主流程 工具代理軟件負責交互命令應答,XML解析,測試流程控制,測試執(zhí)行和分派測試任務給目標代理,并更新測試項執(zhí)行鏈表中的測試結果和測試日志路徑,然后再上報上位機。業(yè)務流程,如圖2.3所示。
2.3 目標代理軟件設計
2.3.1 業(yè)務主流程 目標代理軟件負責執(zhí)行負載程序和測試用例,并向測試工具和上位機反饋測試結果和上傳測試日志文件,業(yè)務具體流程,如圖2.4所示。
2.3.2 負載監(jiān)控流程 負載監(jiān)控流程主要是周期性的上報監(jiān)控數據到上位機,具體業(yè)務流程,如圖2.5所示。
圖2.3 工具代理軟件主流程
圖2.4 目標代理軟件主流程
圖2.5 負載監(jiān)控流程
自動化測試系統(tǒng)驗證的步驟是:
1、進行系統(tǒng)設置;
2、配置設備拓撲;
3、配置測試用例和測試負載;
4、配置測試場景;
5、啟動測試,執(zhí)行測試用例;
6、生成測試報告,查看測試日志,進行測試分析。
3.1 系統(tǒng)設置 進行系統(tǒng)設置,主要對后續(xù)軟件運行需要用到的默認目錄、默認設備拓撲文件和默認系統(tǒng)通信端口號進行設置,如圖3.1所示。
圖3.1 系統(tǒng)設置對話框
3.2 配置設備拓撲 配置設備拓撲,目前只支持一個工具代理設備管理一個目標代理設備,后續(xù)業(yè)務場景需要,也可以擴展成一對多,主要是配置上位機IP,工具節(jié)點設備和目標代理設備的IP和通信端口,如圖3.2所示。
圖3.2 設備拓撲管理
3.3 配置測試用例 增加測試集、測試用例、測試項,進行配置測試用例并保存,以便于后續(xù)在配置測試場景時使用,如圖3.3所示。
圖3.3 測試用例管理對話框
3.4 配置測試場景 增加選中的測試用例到測試場景中,配置測試場景,如圖3.4所示。
圖3.4 增加選中測試用例到測試場景中
3.5 執(zhí)行測試用例 執(zhí)行選中的測試用例,如圖3.5所示。
圖3.5 執(zhí)行選中測試用例
3.6 測試分析 生成和查看測試報告,查看測試日志文件,進行測試分析,如圖3.6所示。
圖3.6 生成測試報告和查看日志記錄
本文探討了現有嵌入式系統(tǒng)的傳統(tǒng)測試方法存在的不足,設計了基于Sylix OS操作系統(tǒng)的自動化測試裝置和自動化測試系統(tǒng)。從測試裝置設計和測試系統(tǒng)軟件設計兩個方面介紹了該系統(tǒng)的實現方法。最后,該系統(tǒng)已經過全面完備的驗證,根據翼輝信息研發(fā)部和測試部工作中的測試需求,配置測試用例和測試負載,生成測試場景文件,下發(fā)到工具代理和目標代理機上執(zhí)行,并對自動化用例執(zhí)行結果進行分析,對該自動化測試系統(tǒng)進行了詳細的驗證,已達到該系統(tǒng)設計的初衷。在研發(fā)過程中,使用此系統(tǒng)輔助測試人員和開發(fā)人員進行嵌入式系統(tǒng)的自動化測試,提升了測試效率,節(jié)約測試時間和人力,提高測試覆蓋率,可以更早發(fā)現系統(tǒng)錯誤(BUG)并快速進行回歸測試,提升產品質量。此測試系統(tǒng)只要稍加修改,就可以用于基于其他操作系統(tǒng)的嵌入式設備的自動化測試驗證。