- 相關(guān)推薦
嵌入式軟件的覆蓋測試
摘要:覆蓋測試是驗證軟件功能結構正確性以及查找問(wèn)題的非常重要的方法和手段,它要借助一定的工具才能取得較好的效果,滿(mǎn)足軟件在質(zhì)量和時(shí)間上的雙重要求(純粹的人工測試工作量大、不方便、周期長(cháng))。如何利用好這方面比較成熟的工具,對其機理的研究及適應性改造是很重要。本文著(zhù)重描述這類(lèi)工具的工作機理,以及對嵌入式軟件測試的特殊要求,并以對自主知識產(chǎn)權嵌入式操作系統的測試為例進(jìn)行說(shuō)明。1 概述
軟件測試是很廣的概念。從其貫穿軟件生命周期全過(guò)程來(lái)看,測試可分為模塊測試、集成測試、系統測試等階段。測試還可分為靜態(tài)檢查和動(dòng)態(tài)運行測試兩大類(lèi)。在動(dòng)態(tài)運行測試中,又可有基于程序結構的白盒測試(或稱(chēng)為覆蓋測試)和基于功能的黑盒測試。測試不僅關(guān)注程序的功能,還有性有測試、強度測試等等。
要達到比較好的測試效果,除了要有周全的測試計劃、可控的測試過(guò)程、測試人員豐富的經(jīng)驗外,還需要借助一些行之有效的輔助工具,尤其在當今軟件規模日益龐大、測試工作量成倍增加的情況下。對應上述的測試分類(lèi)情況,測試工具可劃分為:支持對程序源代碼進(jìn)行靜態(tài)規則檢查和質(zhì)量評估的靜態(tài)分析工具、支持對程序單元進(jìn)行動(dòng)態(tài)覆蓋測試的工具、對軟件系統的整體運行性能進(jìn)行測試的工具。另外,還有一些特殊用途的或專(zhuān)用工具,如協(xié)議測試儀、內存檢測工具等。這些工具都有較為成熟的商業(yè)化產(chǎn)品,也可通過(guò)自行開(kāi)發(fā)的方式獲得。
本文具體討論了對一類(lèi)特殊的系統軟件——嵌入式實(shí)時(shí)操作系統——進(jìn)行覆蓋測試的情況。內容涉及對這類(lèi)軟件特性的研究、測試的難點(diǎn)和特點(diǎn)、對現有測試工具的適應性改造和測試實(shí)例說(shuō)明。
2 軟件覆蓋測試
覆蓋是一種白盒測試方法,測試人員必須擁有程序的規格說(shuō)明和程序清單,以程序的內部結構為基礎,來(lái)設計測試案例。其基本準則是則測試案例來(lái)盡可能多地覆蓋程序的內部邏輯結構,發(fā)現其中的錯誤和問(wèn)題。所以,覆蓋測試一般應用在軟件測試的早期,即單元測試階段。
覆蓋的幾種方法或策略如表1所列。
表1 幾種典型的覆蓋策略
從以上簡(jiǎn)要介紹可看出,這幾種覆蓋策略的嚴格程序有如下趨勢:
其它一些覆蓋策略還包括:修改的條件/判斷覆蓋(通常簡(jiǎn)稱(chēng)為MCDC)、路徑覆蓋、函數覆蓋、調用覆蓋、線(xiàn)性代碼順序和跳轉覆蓋、數據流覆蓋、目標代碼分支覆蓋、循環(huán)覆蓋、關(guān)系操作符覆蓋等。隨著(zhù)軟件規模的增長(cháng),實(shí)現全面的覆蓋所需的測試案例的數目也越來(lái)越龐大,因此根據被測軟件對象的特點(diǎn)選擇適當的覆蓋策略是非常重要的;同時(shí),要確定合理測試目標,達到100%的覆蓋往往要付出很大的代價(jià),應該同形式化評審等方法結合,以發(fā)現更多的軟件故障。
3 覆蓋測試工具
要取得較好的覆蓋測試效果,需要借助一定的工具軟件。這些工具軟件一般具備如下的功能特點(diǎn),可彌補人為測試的缺陷:
①分析軟件內部結構,幫助制定覆蓋策略及設計測試案例;
②與適當的編譯器結合,對被測軟件實(shí)施自動(dòng)插裝,以便在其運行過(guò)程中生成覆蓋信息并收集這些信息;
③根據搜集的覆蓋信息計算覆蓋率,幫助測試人員找到未被覆蓋的軟件部位,以改進(jìn)測試案例提高覆蓋率。
在利用工具進(jìn)行動(dòng)態(tài)覆蓋測試時(shí),需要3個(gè)要素:測試用例、插裝過(guò)的被測代碼、搜集覆蓋信息并進(jìn)行分析的工具本身。代碼插裝由工具自動(dòng)完成,通過(guò)執行測試用例,再由工具搜集覆蓋信息并進(jìn)行分析,就可以看到覆蓋率指標了。圖1展示實(shí)現覆蓋測試的基本過(guò)程。
4 嵌入式軟件的覆蓋測試原理
嵌入式軟件的開(kāi)發(fā)與通用軟件很大的不同點(diǎn)在于,需要采用交叉開(kāi)發(fā)的方式:開(kāi)發(fā)工具運行在軟硬件配置豐富的宿主機上,而嵌入式應用程序運行在軟硬件資源相對缺乏的目標機上。對于這類(lèi)軟件的測試也存在著(zhù)同樣的問(wèn)題:測試工具運行在宿主機上,測試所需要的信息在目標機上產(chǎn)生,并通過(guò)一定的物理/邏輯連接傳輸到縮主機上,由測試工具接收。因此,嵌入式軟件測試的一個(gè)重要問(wèn)題是建立宿主機與目標機之間的物理/邏輯連接,解決數據信息的傳輸問(wèn)題。
嵌入式軟件覆蓋測試的基本原理如圖2所示。
在目標機方,插裝過(guò)的被測應用程序將覆蓋信息發(fā)送到消息隊列中,一個(gè)專(zhuān)門(mén)的任務(wù)負責在適當的時(shí)候將這些信息發(fā)送到宿主機方?s主機方有專(zhuān)門(mén)的模塊負責接收覆蓋信息。并交給分析工具分析和在線(xiàn)動(dòng)態(tài)顯示覆蓋率的增長(cháng)情況。
支持嵌入式軟件覆蓋測試的工具應解決如下2方面的關(guān)鍵問(wèn)題:
*與嵌入式操作系統的結合
【嵌入式軟件的覆蓋測試】相關(guān)文章:
基于模塊化設計的嵌入式軟件測試方法03-20
軟件性能測試研究03-28
基于SIP的嵌入式終端軟件系統03-07
軟件測試實(shí)驗報告05-17
面向網(wǎng)絡(luò )測試的嵌入式系統設計與實(shí)現03-07
談軟件測試的幾個(gè)問(wèn)題03-19
基于復雜度的嵌入式軟件功耗模型03-18
ADS軟件對倍頻器的嵌入式電特性仿真03-19