<del id="dhfrq"></del>

    1. <tr id="dhfrq"></tr>
      成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
      現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>嵌入式軟件的覆蓋測試

      嵌入式軟件的覆蓋測試

      時(shí)間:2023-02-21 00:14:17 電子通信論文 我要投稿
      • 相關(guān)推薦

      嵌入式軟件的覆蓋測試

        摘要:覆蓋測試是驗(yàn)證軟件功能結(jié)構(gòu)正確性以及查找問題的非常重要的方法和手段,它要借助一定的工具才能取得較好的效果,滿足軟件在質(zhì)量和時(shí)間上的雙重要求(純粹的人工測試工作量大、不方便、周期長)。如何利用好這方面比較成熟的工具,對(duì)其機(jī)理的研究及適應(yīng)性改造是很重要。本文著重描述這類工具的工作機(jī)理,以及對(duì)嵌入式軟件測試的特殊要求,并以對(duì)自主知識(shí)產(chǎn)權(quán)嵌入式操作系統(tǒng)的測試為例進(jìn)行說明。
        關(guān)鍵詞:嵌入式操作系統(tǒng)覆蓋測試軟件測試工具
        
        1概述
        
        軟件測試是很廣的概念。從其貫穿軟件生命周期全過程來看,測試可分為模塊測試、集成測試、系統(tǒng)測試等階段。測試還可分為靜態(tài)檢查和動(dòng)態(tài)運(yùn)行測試兩大類。在動(dòng)態(tài)運(yùn)行測試中,又可有基于程序結(jié)構(gòu)的白盒測試(或稱為覆蓋測試)和基于功能的黑盒測試。測試不僅關(guān)注程序的功能,還有性有測試、強(qiáng)度測試等等。
        
        要達(dá)到比較好的測試效果,除了要有周全的測試計(jì)劃、可控的測試過程、測試人員豐富的經(jīng)驗(yàn)外,還需要借助一些行之有效的輔助工具,尤其在當(dāng)今軟件規(guī)模日益龐大、測試工作量成倍增加的情況下。對(duì)應(yīng)上述的測試分類情況,測試工具可劃分為:支持對(duì)程序源代碼進(jìn)行靜態(tài)規(guī)則檢查和質(zhì)量評(píng)估的靜態(tài)分析工具、支持對(duì)程序單元進(jìn)行動(dòng)態(tài)覆蓋測試的工具、對(duì)軟件系統(tǒng)的整體運(yùn)行性能進(jìn)行測試的工具。另外,還有一些特殊用途的或?qū)S霉ぞ撸鐓f(xié)議測試儀、內(nèi)存檢測工具等。這些工具都有較為成熟的商業(yè)化產(chǎn)品,也可通過自行開發(fā)的方式獲得。
        
        本文具體討論了對(duì)一類特殊的系統(tǒng)軟件——嵌入式實(shí)時(shí)操作系統(tǒng)——進(jìn)行覆蓋測試的情況。內(nèi)容涉及對(duì)這類軟件特性的研究、測試的難點(diǎn)和特點(diǎn)、對(duì)現(xiàn)有測試工具的適應(yīng)性改造和測試實(shí)例說明。
        
        2軟件覆蓋測試
        
        覆蓋是一種白盒測試方法,測試人員必須擁有程序的規(guī)格說明和程序清單,以程序的內(nèi)部結(jié)構(gòu)為基礎(chǔ),來設(shè)計(jì)測試案例。其基本準(zhǔn)則是則測試案例來盡可能多地覆蓋程序的內(nèi)部邏輯結(jié)構(gòu),發(fā)現(xiàn)其中的錯(cuò)誤和問題。所以,覆蓋測試一般應(yīng)用在軟件測試的早期,即單元測試階段。
        
        覆蓋的幾種方法或策略如表1所列。
        
        表1幾種典型的覆蓋策略
        
        覆蓋策略定義語句覆蓋在制定測試案例時(shí),使程序中的每個(gè)語句都至少執(zhí)行1次。其缺點(diǎn)是不能發(fā)現(xiàn)某些邏輯錯(cuò)誤判定覆蓋執(zhí)行足夠的測試案例,使得程序中每個(gè)判定都獲得一次“真”值和“假”值,或者說使每一個(gè)分支都至少通過1次條件覆蓋執(zhí)行足夠的測試案例,使得判定中的每個(gè)條件獲得各種可能的結(jié)果判定/條件覆蓋執(zhí)行足夠的測試案例,使得判定中的每個(gè)條件取得各種可能的值,并使得每個(gè)判定取得各種可能的結(jié)果條件組合覆蓋執(zhí)行足夠的測試案例,使得每個(gè)判定中的條件的各種組合都至少出現(xiàn)1次。其特點(diǎn)是覆蓋較充分,滿足條件組合覆蓋的測試案例也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋。
        從以上簡要介紹可看出,這幾種覆蓋策略的嚴(yán)格程序有如下趨勢:
        
        其它一些覆蓋策略還包括:修改的條件/判斷覆蓋(通常簡稱為MCDC)、路徑覆蓋、函數(shù)覆蓋、調(diào)用覆蓋、線性代碼順序和跳轉(zhuǎn)覆蓋、數(shù)據(jù)流覆蓋、目標(biāo)代碼分支覆蓋、循環(huán)覆蓋、關(guān)系操作符覆蓋等。隨著軟件規(guī)模的增長,實(shí)現(xiàn)全面的覆蓋所需的測試案例的數(shù)目也越來越龐大,因此根據(jù)被測軟件對(duì)象的特點(diǎn)選擇適當(dāng)?shù)母采w策略是非常重要的;同時(shí),要確定合理測試目標(biāo),達(dá)到100%的覆蓋往往要付出很大的代價(jià),應(yīng)該同形式化評(píng)審等方法結(jié)合,以發(fā)現(xiàn)更多的軟件故障。
        
        3覆蓋測試工具
        
        要取得較好的覆蓋測試效果,需要借助一定的工具軟件。這些工具軟件一般具備如下的功能特點(diǎn),可彌補(bǔ)人為測試的缺陷:
        
        ①分析軟件內(nèi)部結(jié)構(gòu),幫助制定覆蓋策略及設(shè)計(jì)測試案例;
        
        ②與適當(dāng)?shù)木幾g器結(jié)合,對(duì)被測軟件實(shí)施自動(dòng)插裝,以便在其運(yùn)行過程中生成覆蓋信息并收集這些信息;
        
        ③根據(jù)搜集的覆蓋信息計(jì)算覆蓋率,幫助測試人員找到未被覆蓋的軟件部位,以改進(jìn)測試案例提高覆蓋率。
        
        在利用工具進(jìn)行動(dòng)態(tài)覆蓋測試時(shí),需要3個(gè)要素:測試用例、插裝過的被測代碼、搜集覆蓋信息并進(jìn)行分析的工具本身。代碼插裝由工具自動(dòng)完成,通過執(zhí)行測試用例,再由工具搜集覆蓋信息并進(jìn)行分析,就可以看到覆蓋率指標(biāo)了。圖1展示實(shí)現(xiàn)覆蓋測試的基本過程。
        
        4嵌入式軟件的覆蓋測試原理
        
        嵌入式軟件的開發(fā)與通用軟件很大的不同點(diǎn)在于,需要采用交叉開發(fā)的方式:開發(fā)工具運(yùn)行在軟硬件配置豐富的宿主機(jī)上,而嵌入式應(yīng)用程序運(yùn)行在軟硬件資源相對(duì)缺乏的目標(biāo)機(jī)上。對(duì)于這類軟件的測試也存在著同樣的問題:測試工具運(yùn)行在宿主機(jī)上,測試所需要的信息在目標(biāo)機(jī)上產(chǎn)生,并通過一定的物理/邏輯連接傳輸?shù)娇s主機(jī)上,由測試工具接收。因此,嵌入式軟件測試的一個(gè)重要問題是建立宿主機(jī)與目標(biāo)機(jī)之間的物理/邏輯連接,解決數(shù)據(jù)信息的傳輸問題。
        
        嵌入式軟件覆蓋測試的基本原理如圖2所示。
        
        在目標(biāo)機(jī)方,插裝過的被測應(yīng)用程序?qū)⒏采w信息發(fā)送到消息隊(duì)列中,一個(gè)專門的任務(wù)負(fù)責(zé)在適當(dāng)?shù)臅r(shí)候?qū)⑦@些信息發(fā)送到宿主機(jī)方。縮主機(jī)方有專門的模塊負(fù)責(zé)接收覆蓋信息。并交給分析工具分析和在線動(dòng)態(tài)顯示覆蓋率的增長情況。
        
        支持嵌入式軟件覆蓋測試的工具應(yīng)解決如下2方面的關(guān)鍵問題:
        
        *與嵌入式操作系統(tǒng)的結(jié)合
        
        覆蓋測試工具與嵌入式操作系統(tǒng)的結(jié)合體現(xiàn)在3方面。首先,在目標(biāo)機(jī)方,應(yīng)用任務(wù)與專門負(fù)責(zé)收集/上傳覆蓋信息的任務(wù)是通過消息隊(duì)列來傳遞數(shù)據(jù)的,該消息隊(duì)列可使用嵌入式操作系統(tǒng)的相應(yīng)機(jī)制實(shí)現(xiàn)。其次,這個(gè)專門任務(wù)也可以被看作一個(gè)特殊的應(yīng)用任務(wù),也必須有嵌入式操作系統(tǒng)的支持,因?yàn)槿蝿?wù)管理是后者的基本功能之一。最后,目標(biāo)機(jī)與宿主機(jī)之間的通信可以采用串口或以太網(wǎng)方式,對(duì)串口的驅(qū)動(dòng)或網(wǎng)絡(luò)協(xié)議均可使用嵌入式操作系統(tǒng)的相應(yīng)程序組件。
        
        *與其它嵌入式交叉開發(fā)工具的關(guān)系
        
        嵌入式應(yīng)用程序的開發(fā)通常采用交叉開發(fā)方式,幾乎所有的開發(fā)工具均要解決3部分的問題:宿主機(jī)部分的功能、目標(biāo)機(jī)部分的功能、宿主機(jī)與目標(biāo)機(jī)的連接問題。其中,宿主機(jī)與目標(biāo)機(jī)的連接是個(gè)瓶頸,如果不同的工具要使用同一物理線路實(shí)現(xiàn)數(shù)據(jù)傳輸,則要解決對(duì)該物理線路(或者說硬件端口)的正確共享。比如在圖3所示的環(huán)境中,宿主機(jī)方的各種工具通過統(tǒng)一的接口——目標(biāo)服務(wù)器(targetserver)實(shí)現(xiàn)對(duì)通信線路的訪問,目標(biāo)機(jī)方的調(diào)試代理(debugagent)則是各種信息(調(diào)試信息、覆蓋信息、時(shí)間信息、對(duì)象信息等)的收集與傳遞的核心。
        
        5Logiscope在嵌入式操作系統(tǒng)DeltaCORE測試中的應(yīng)用
        
        Logiscope是Verilog公司的CASE產(chǎn)品,對(duì)軟件的編碼、測試、維護(hù)提供多方面的服務(wù),并且支持嵌入式軟件的覆蓋測試。
        
        5.1測試前的準(zhǔn)備
        
        測試前的準(zhǔn)備即為支持對(duì)DeltaCORE的測試所做的移植工作。
        
        目前,Logiscope已經(jīng)為一些成熟的商用嵌入式操作系統(tǒng)提供了支持,比如pSOS。DeltaCORE是我國自主開發(fā)的嵌入式強(qiáng)實(shí)時(shí)操作系統(tǒng)內(nèi)核,為了利用Logiscope實(shí)現(xiàn)對(duì)DeltaCORE的應(yīng)用程序乃至DeltaCORE本身的測試,我們主要解決了第4節(jié)中描述的第1個(gè)關(guān)鍵問題。
        
        為了支持嵌入式程序的測試,Logiscope提供了運(yùn)行在目標(biāo)機(jī)方的程序代碼(或稱為目標(biāo)機(jī)端的支持庫),里面包含了:
        
        *1個(gè)用來收集和發(fā)送覆蓋信息的主循環(huán)線程,該線程即是嵌入式應(yīng)用中的特殊任務(wù);
        
        *實(shí)現(xiàn)具體數(shù)據(jù)傳輸?shù)暮瘮?shù),包括對(duì)串口或網(wǎng)絡(luò)的驅(qū)動(dòng),它們將被上述線程調(diào)用;
        
        *插裝函數(shù)的實(shí)現(xiàn),這些函數(shù)被被測代碼調(diào)用,向緩沖中放入覆蓋消息塊;
        
        *對(duì)緩沖信息隊(duì)列的管理;
        
        *初始化代碼。
        
        例如,當(dāng)被測程序運(yùn)行進(jìn)入到一條if(……)語句時(shí),整個(gè)過程如圖4所示。
        
        為了支持對(duì)DeltaCORE的測試,將與這些機(jī)制相關(guān)的代碼進(jìn)行移植,包括以下幾方面:
        
        *將收集和發(fā)送覆蓋信息的主循環(huán)線程作為在目標(biāo)機(jī)端運(yùn)行的應(yīng)用程序中的特殊任務(wù);
        
        *對(duì)串口的驅(qū)動(dòng)采用LambdaTOOLBSP(板級(jí)支持包)中的串口驅(qū)動(dòng)代替,對(duì)網(wǎng)絡(luò)的驅(qū)動(dòng),用DeltaCORE的配套組件DeltaNET中的驅(qū)動(dòng)程序?qū)崿F(xiàn);
        
        *利用DeltaCORE的信箱機(jī)制實(shí)現(xiàn)消息隊(duì)列的創(chuàng)建和管理,插裝代碼向這些信箱發(fā)送覆蓋消息塊;
        
        *在DetaCORE應(yīng)用程序的根任務(wù)中調(diào)用Logiscope的初始化函數(shù),達(dá)到創(chuàng)建特殊任務(wù)信箱的目的。
        
        開發(fā)DeltaCORE應(yīng)用程序時(shí),我們使用了其配套開發(fā)工具LambdaTOOL。由于所使用的工具版本沒有實(shí)現(xiàn)目標(biāo)服務(wù)器(targetserver)的調(diào)試方式,因此對(duì)物理端口的使用采用的獨(dú)占方式,即調(diào)試工具不能與其它工具共享同一端口。我們可以用網(wǎng)絡(luò)試上載并啟動(dòng)目標(biāo)應(yīng)用程序,而通過串口傳送覆蓋信息。
        
        5.2對(duì)DeltaCORE的覆蓋測試過程及結(jié)果
        
        對(duì)于函數(shù)內(nèi)部,Logiscope支持的覆蓋策略有:
        
        *指令塊IBs(InstructionBlocks)
        
        *判斷到判斷的路徑DDPs(Decision-to-DecisionPaths)
        
        *MCDC(ModifiedCondition/Decision)
        
        在項(xiàng)目層次上支持的覆蓋策略是:
        
        *過程到過程路徑PPP(Procedure-to-ProcedurePath)
        
        在DeltaCORE的測試中,我們采用了較為常用的覆蓋策略——判斷到判斷的路徑,其含義是:DDP是一個(gè)指令序列,它的起點(diǎn)是函數(shù)或判斷(if,while,……)的入口點(diǎn),它的出口是下一個(gè)函數(shù)或判斷的退出點(diǎn),之間不能再有判斷,比如在圖5中包含了5個(gè)DDPs:
        
        測試的具體過程是:
        
        ①利用插裝分析器對(duì)DeltaCORE的源代碼進(jìn)行插裝,并生成插裝信息文件。
        
        ②將移植后的Logiscope目標(biāo)機(jī)端程序與插裝后的內(nèi)核源代碼一同編譯鏈接成庫,以替代原來的內(nèi)核庫,供應(yīng)用程序使用。
        
        ③編寫測試案例,從實(shí)現(xiàn)應(yīng)用的角度使用DeltaCORE的各種系統(tǒng)功能調(diào)用,力求遍歷內(nèi)核函數(shù)所有的判定分支,并將這些案例編譯成可執(zhí)行程序。
        
        ④在宿主機(jī)端啟動(dòng)覆蓋信息收集和分析程序,用LambdaTOOL的調(diào)試器下載并啟動(dòng)應(yīng)用程序。DeltaCORE的覆蓋信息被傳遞到宿主機(jī)上,分析程序動(dòng)態(tài)顯示覆蓋率的增長情況,并將這些信息記錄在一個(gè)文件中。
        
        ⑤應(yīng)用程序執(zhí)行完畢后,啟動(dòng)Logiscope的事后分析工具,將覆蓋信息記錄文件與插裝信息文件(在源代碼插裝在生成的附屬文件)進(jìn)行比較,幫助測試人員清晰地了解每個(gè)被測函數(shù)內(nèi)部的路徑覆蓋情況,借此可為測試案例的改進(jìn)提供幫助。
        
        ⑥測試人員修改測試案例,并重新進(jìn)行整個(gè)測試過程;各項(xiàng)測試的結(jié)果可以疊加,覆蓋率將得到增長。
        
        經(jīng)過2個(gè)多月的時(shí)間,我們對(duì)DeltaCORE1.1版本79個(gè)文件共計(jì)115個(gè)函數(shù)進(jìn)行了覆蓋測試,覆蓋率已經(jīng)達(dá)到了70.55%。編寫測試用例89個(gè),主要的60個(gè)API函數(shù)均已獲得較高的覆蓋,覆蓋率達(dá)100%的約占51.3%。
        
        6小結(jié)
        
        我們借助Logiscope工具對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)DeltaCORE進(jìn)行了覆蓋測試,達(dá)到了較好的覆蓋率;發(fā)現(xiàn)并處理了一些缺陷,提高了軟件的質(zhì)量和可靠性,但同時(shí)也存在不足之處:
        
        ①測試應(yīng)好好規(guī)劃,包括測試順序的選擇、測試案例的設(shè)計(jì)、測試文檔的管理等等。
        
        ②由于該測試手段依賴于操作系統(tǒng)的有關(guān)機(jī)制,而被測對(duì)象又是操作系統(tǒng)本身,因此與這些機(jī)制有關(guān)的部分代碼未被插裝和測試,否則就會(huì)出錯(cuò)。比如,操作系統(tǒng)的初始化函數(shù)os_init,在這個(gè)函數(shù)運(yùn)行完畢之前,操作系統(tǒng)的相應(yīng)機(jī)制尚未建立起來,因此對(duì)它進(jìn)行插裝就會(huì)造成問題,不能正確地得到覆蓋信息。又比如,出于效率方面的考慮,與系統(tǒng)時(shí)鐘相關(guān)的部分函數(shù)未被插裝,因?yàn)樵诔绦蜻\(yùn)行過程中,時(shí)鐘是最頻繁產(chǎn)生的一種外部事件,如果插裝,就會(huì)產(chǎn)生大量的覆蓋信息,會(huì)對(duì)信息緩存、傳遞、收集和處理造成壓力。另外,所用的工具不支持對(duì)匯編函數(shù)的插裝和測試。綜合上述各種原因,DeltaCORE1.1的總體覆蓋率還顯得比較低,需要采用其它的方法來提高它。對(duì)于非操作系統(tǒng)組件及應(yīng)用的測試,由于不存在操作系統(tǒng)本身的問題,因此可望達(dá)到較高的覆蓋率。
        
        ③該方法不能用于時(shí)間性能測試。因此它屬于純軟件的測試方式,大量數(shù)據(jù)信息的產(chǎn)生、傳遞與收集對(duì)被測程序的干擾大,只能做白盒性的功能結(jié)構(gòu)驗(yàn)證。如果做性能測試,應(yīng)采用某些軟硬結(jié)合方式的工具,比如CodeTEST。
        
        對(duì)嵌入式軟件產(chǎn)品的測試是多方面的,除覆蓋測試外,還有時(shí)間性能測試、內(nèi)存使用測試與分析等,也是我們研究的重要課題。
        
        
        
        

      【嵌入式軟件的覆蓋測試】相關(guān)文章:

      實(shí)時(shí)嵌入式軟件測試工具的研究08-06

      基于模塊化設(shè)計(jì)的嵌入式軟件測試方法08-06

      軟件測試培訓(xùn)心得06-03

      軟件測試個(gè)人總結(jié)01-16

      軟件測試實(shí)習(xí)報(bào)告11-25

      軟件測試實(shí)習(xí)日記08-17

      軟件測試就業(yè)前景08-20

      軟件測試的個(gè)人總結(jié)01-10

      軟件測試實(shí)習(xí)心得04-20

      主站蜘蛛池模板: 丰满人妻被黑人猛烈进入| 中文字幕在线视频不卡一区二区 | 成人精品区| 亚洲精品有码在线观看| 国精品午夜福利视频| 国产精品不卡区一区二| 人妻丝袜AV中文系列先锋影音| 日韩中文字幕在线不卡一区| 亚洲精品色国语对白在线| 亚洲A综合一区二区三区| 人妻少妇久久久久久97人妻| 体态丰腴的微胖熟女的特征| 又湿又紧又大又爽A视频男| 久久久久久亚洲精品成人| 亚洲精品一区二区天堂| 少妇又爽又刺激视频| 干老熟女干老穴干老女人| 激情综合网激情综合网激情 | 亚洲精品中文字幕一二三| 亚洲国产精品一区二区第一页| 国产旡码高清一区二区三区 | 九九热在线精品视频首页| 日韩中文字幕有码av| 国产一区二区三区怡红院| 国产午夜福利大片免费看| 99精品国产中文字幕| 国产太嫩了在线观看| 国产一区精品在线免费看| 欧美拍拍视频免费大全| 国产精品一区二区传媒蜜臀| 久久婷婷国产精品香蕉| 老色批国产在线观看精品| 中文字幕日本一区二区在线观看| 九九热精品在线视频免费| 亚洲人亚洲人成电影网站色| 亚洲人成人伊人成综合网无码| 亚洲高清WWW色好看美女| 亚洲综合一区二区三区| 亚洲综合网一区中文字幕| 久久经精品久久精品免费观看 | 精品亚洲男人一区二区三区 |