3 覆蓋測試工具
要取得較好的覆蓋測試效果,需要借助一定的工具軟件。這些工具軟件一般具備如下的功能特點,可彌補人為測試的缺陷:
?、俜治鲕浖炔拷Y構,幫助制定覆蓋策略及設計測試案例;
?、谂c適當的編譯器結合,對被測軟件實施自動插裝,以便在其運行過程中生成覆蓋信息并收集這些信息;
?、鄹鶕鸭母采w信息計算覆蓋率,幫助測試人員找到未被覆蓋的軟件部位,以改進測試案例提高覆蓋率。
在利用工具進行動態覆蓋測試時,需要3個要素:測試用例、插裝過的被測代碼、搜集覆蓋信息并進行分析的工具本身。代碼插裝由工具自動完成,通過執行測試用例,再由工具搜集覆蓋信息并進行分析,就可以看到覆蓋率指標了。圖1展示實現覆蓋測試的基本過程。
4 嵌入式軟件的覆蓋測試原理
嵌入式軟件的開發與通用軟件很大的不同點在于,需要采用交叉開發的方式:開發工具運行在軟硬件配置豐富的宿主機上,而嵌入式應用程序運行在軟硬件資源相對缺乏的目標機上。對于這類軟件的測試也存在著同樣的問題:測試工具運行在宿主機上,測試所需要的信息在目標機上產生,并通過一定的物理/邏輯連接傳輸到縮主機上,由測試工具接收。因此,嵌入式軟件測試的一個重要問題是建立宿主機與目標機之間的物理/邏輯連接,解決數據信息的傳輸問題。
嵌入式軟件覆蓋測試的基本原理如圖2所示。
在目標機方,插裝過的被測應用程序將覆蓋信息發送到消息隊列中,一個專門的任務負責在適當的時候將這些信息發送到宿主機方??s主機方有專門的模塊負責接收覆蓋信息。并交給分析工具分析和在線動態顯示覆蓋率的增長情況。
支持嵌入式軟件覆蓋測試的工具應解決如下2方面的關鍵問題:
*與嵌入式操作系統的結合
覆蓋測試工具與嵌入式操作系統的結合體現在3方面。首先,在目標機方,應用任務與專門負責收集/上傳覆蓋信息的任務是通過消息隊列來傳遞數據的,該消息隊列可使用嵌入式操作系統的相應機制實現。其次,這個專門任務也可以被看作一個特殊的應用任務,也必須有嵌入式操作系統的支持,因為任務管理是后者的基本功能之一。最后,目標機與宿主機之間的通信可以采用串口或以太網方式,對串口的驅動或網絡協議均可使用嵌入式操作系統的相應程序組件。
*與其它嵌入式交叉開發工具的關系
嵌入式應用程序的開發通常采用交叉開發方式,幾乎所有的開發工具均要解決3部分的問題:宿主機部分的功能、目標機部分的功能、宿主機與目標機的連接問題。其中,宿主機與目標機的連接是個瓶頸,如果不同的工具要使用同一物理線路實現數據傳輸,則要解決對該物理線路(或者說硬件端口)的正確共享。比如在圖3所示的環境中,宿主機方的各種工具通過統一的接口——目標服務器(target server)實現對通信線路的訪問,目標機方的調試代理(debug agent)則是各種信息(調試信息、覆蓋信息、時間信息、對象信息等)的收集與傳遞的核心。
5 Logiscope在嵌入式操作系統DeltaCORE測試中的應用
Logiscope是Verilog公司的CASE產品,對軟件的編碼、測試、維護提供多方面的服務,并且支持嵌入式軟件的覆蓋測試。
5.1 測試前的準備
測試前的準備即為支持對DeltaCORE的測試所做的移植工作。
目前,Logiscope已經為一些成熟的商用嵌入式操作系統提供了支持,比如pSOS。DeltaCORE是我國自主開發的嵌入式強實時操作系統內核,為了利用Logiscope實現對DeltaCORE的應用程序乃至DeltaCORE本身的測試,我們主要解決了第4節中描述的第1個關鍵問題。
為了支持嵌入式程序的測試,Logiscope提供了運行在目標機方的程序代碼(或稱為目標機端的支持庫),里面包含了:
*1個用來收集和發送覆蓋信息的主循環線程,該線程即是嵌入式應用中的特殊任務;
*實現具體數據傳輸的函數,包括對串口或網絡的驅動,它們將被上述線程調用;
原文轉自:http://www.anti-gravitydesign.com