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