陳洪邦 李孝成
南京翼輝信息技術有限公司 南京 210000
隨著物聯網的發展,使用不同硬件平臺、不同操作系統和安裝各種軟件的嵌入式設備被不斷的研發生產出來,安裝在這些設備中的嵌入式軟件系統變得多種多樣。多種設備為在各個設備中安裝的嵌入式軟件系統提供多種執行環境,但是會產生錯誤。因此,考慮到可能在執行這些嵌入式系統功能中出現的錯誤,需要提前對嵌入式系統進行測試。
在與對應于真實環境的目標環境端口連接之前的主機環境下,根據基于許多情況的多種用戶情景來測試嵌入式系統。在主機環境下展開的情景可以在目標環境下再現。由于可以將嵌入式系統與具有多種硬件特性和軟件環境的目標環境端口連接,并進行操作,所以在完成嵌入式系統的開發之前,嵌入式系統需要進行多種情景詳細且深入的測試。存在一種傳統的測試方法,使用商業化的自動測試工具,以便向嵌入式軟件單向發送命令。
單獨加載嵌入式軟件系統的多個電子設備在通過通信接口發送和接收數據的同時執行每個嵌入式系統功能。各個嵌入式系統的特性相互不同(例如,不同操作系統或者不同CPU架構),因此問題可能不僅由一個嵌入式系統引起而且也由多個嵌入式系統之間的交互引起。在后者的情況下,在執行各個嵌入式系統功能的時間差、嵌入式軟件在接口上的效果等可以引起多種不期望的問題。
因此,基于針對單個嵌入式系統的單向命令發送的傳統測試難以再現特性相互不同的多個嵌入式系統之間的交互中、發送和接收數據的交互操作等中發生的多種問題。要覆蓋多種交互情景,傳統測試是不靈活的,驗證與多種情況相對應的情景的成本較高,浪費了時間和勞動力,難以精確測試。
針對上述嵌入式系統測試驗證問題,本文提出一種嵌入式系統的自動化測試裝置和測試方法,根據此方法實現一套基于Sylix OS嵌入式系統的自動化測試系統作為一種解決方案,解決嵌入式系統外設眾多、交互場景復雜、硬件平臺和軟件平臺(包括操作系統和軟件)多樣的測試和驗證工作量巨大且難以覆蓋的難題。
1.1 自動化測試裝置設計 自動化測試裝置由三個功能組件組成,上位機、工具代理、目標代理;上位機是一臺安裝Windows操作系統(也可以是Linux或Mac OS)的電腦,上位機上部署了自動化測試系統人機操作界面,人機界面使用跨平臺C++圖形用戶界面應用程序開發框架Qt開發;工具代理是具備完整嵌入式系統功能的板卡或設備;目標代理是被測目標對象,一般是具備嵌入式系統功能的板卡或嵌入式設備。
自動化測試裝置的連接拓撲如圖11所示,上位機、工具代理和目標代理之間需要通過網線連接,并給三個設備分配同網段的IP地址,以便于網絡通信。根據測試需求的需要,測試工具與被測目標之間可以通過各種總線連接,例如網口、串口、I2 C、CAN、SPI等,被測目標也可以通過HDMI連接顯示器輸出圖像。

圖1.1 自動化測試裝置連接拓撲
1.2 系統軟件架構設計 自動化測試系統軟件架構分為三個部分,上位機軟件、工具代理軟件和目標代理軟件,上位機軟件主要承擔整個系統的業務流程控制和人機交互界面;工具代理軟件承擔測試用例的執行管理和測試執行協作,如按照用例設計的順序執行等;目標代理軟件需要完成在測試前置條件滿足情況下,執行測試用例,并向測試工具和上位機反饋測試結果和上傳測試日志文件。嵌入式系統的自動化測試系統架構如圖12所示。

圖1.2 嵌入式系統的自動化測試系統架構
2.1 上位機軟件設計 上位機軟件是自動化測試系統的人機操作主界面。主要功能包括測試用例和測試負載的管理,包括增加、刪除、修改、保存等功能;設備拓撲管理、與工具代理和設備代理的消息通信和文件傳輸;對XML和JSON格式文件的管理,測試業務流程控制、測試報告生成和打印,日志文件收集、查看、分析等,負載監控和系統設置等。
2.1.1 測試配置流程 測試配置主要目標是根據測試需求生成目標代理執行的測試場景文件,如圖2.3所示。測試場景文件以XML文件保存,一般包括測試用例和測試負載。
根據測試需求,首先需要配置測試用例和測試負載,生成測試用例文件和測試負載文件,這兩種以JSON文件保存;測試用例和測試負載文件結構一般又劃分成測試集、測試用例和測試項,以樹形結構組織;在配置測試場景時,可以直接選擇配置好的測試用例和測試負載的內容作為測試場景文件的測試項,添加到測試場景文件中的測試項也可以根據待測板卡的硬件參數進行測試項參數的調整,并不會影響被引用的測試用例或測試負載文件中的測試項。
因此,測試用例和測試負載文件可以被復用,測試場景中測試參數也可以動態調整,大大提高了測試效率,降低用例管理的復雜度。

圖2.1 測試配置流程
2.1.2 啟動測試流程 啟動測試流程是自動化測試系統的核心流程,首先,需要啟動執行工具代理和目標代理上的軟件程序,在Sylix OS中啟動的命令是/apps/test_tool&,/apps/test_target&。啟動上位機軟件,在系統設置中配置自動化測試執行的必需參數。其次,需要在上位機的測試場景中勾選待執行的測試用例和測試負載,點擊啟動執行。最后在測試分析中查看測試報告和測試產生的日志文件。啟動測試后的三個組件之間具體交互流程,詳見圖2.2。

圖2.2 啟動測試流程
2.2 工具代理軟件設計
2.2.1 業務主流程 工具代理軟件負責交互命令應答,XML解析,測試流程控制,測試執行和分派測試任務給目標代理,并更新測試項執行鏈表中的測試結果和測試日志路徑,然后再上報上位機。業務流程,如圖2.3所示。
2.3 目標代理軟件設計
2.3.1 業務主流程 目標代理軟件負責執行負載程序和測試用例,并向測試工具和上位機反饋測試結果和上傳測試日志文件,業務具體流程,如圖2.4所示。
2.3.2 負載監控流程 負載監控流程主要是周期性的上報監控數據到上位機,具體業務流程,如圖2.5所示。

圖2.3 工具代理軟件主流程

圖2.4 目標代理軟件主流程

圖2.5 負載監控流程
自動化測試系統驗證的步驟是:
1、進行系統設置;
2、配置設備拓撲;
3、配置測試用例和測試負載;
4、配置測試場景;
5、啟動測試,執行測試用例;
6、生成測試報告,查看測試日志,進行測試分析。
3.1 系統設置 進行系統設置,主要對后續軟件運行需要用到的默認目錄、默認設備拓撲文件和默認系統通信端口號進行設置,如圖3.1所示。

圖3.1 系統設置對話框
3.2 配置設備拓撲 配置設備拓撲,目前只支持一個工具代理設備管理一個目標代理設備,后續業務場景需要,也可以擴展成一對多,主要是配置上位機IP,工具節點設備和目標代理設備的IP和通信端口,如圖3.2所示。

圖3.2 設備拓撲管理
3.3 配置測試用例 增加測試集、測試用例、測試項,進行配置測試用例并保存,以便于后續在配置測試場景時使用,如圖3.3所示。

圖3.3 測試用例管理對話框
3.4 配置測試場景 增加選中的測試用例到測試場景中,配置測試場景,如圖3.4所示。

圖3.4 增加選中測試用例到測試場景中
3.5 執行測試用例 執行選中的測試用例,如圖3.5所示。

圖3.5 執行選中測試用例
3.6 測試分析 生成和查看測試報告,查看測試日志文件,進行測試分析,如圖3.6所示。

圖3.6 生成測試報告和查看日志記錄
本文探討了現有嵌入式系統的傳統測試方法存在的不足,設計了基于Sylix OS操作系統的自動化測試裝置和自動化測試系統。從測試裝置設計和測試系統軟件設計兩個方面介紹了該系統的實現方法。最后,該系統已經過全面完備的驗證,根據翼輝信息研發部和測試部工作中的測試需求,配置測試用例和測試負載,生成測試場景文件,下發到工具代理和目標代理機上執行,并對自動化用例執行結果進行分析,對該自動化測試系統進行了詳細的驗證,已達到該系統設計的初衷。在研發過程中,使用此系統輔助測試人員和開發人員進行嵌入式系統的自動化測試,提升了測試效率,節約測試時間和人力,提高測試覆蓋率,可以更早發現系統錯誤(BUG)并快速進行回歸測試,提升產品質量。此測試系統只要稍加修改,就可以用于基于其他操作系統的嵌入式設備的自動化測試驗證。