《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于路徑覆蓋的嵌入式軟件動(dòng)態(tài)測(cè)試研究
基于路徑覆蓋的嵌入式軟件動(dòng)態(tài)測(cè)試研究
來(lái)源:電子設(shè)計(jì)工程
作者:朱 麗,李汪彪,蘇偉達(dá),吳允平
摘要: 針對(duì)嵌入式軟件動(dòng)態(tài)測(cè)試時(shí)的覆蓋率分析問(wèn)題,提出了一種嵌入式軟件動(dòng)態(tài)測(cè)試系統(tǒng)框架。該框架基于嵌入式軟件測(cè)試的特點(diǎn)及路徑覆蓋的相關(guān)理論,包括被測(cè)試程序的靜態(tài)分析、插樁技術(shù)和數(shù)據(jù)處理分析等部分。以靜態(tài)分析指導(dǎo)插樁庫(kù)的建立,通過(guò)插樁技術(shù)在程序分支或重要位置點(diǎn)植入探針,執(zhí)行已插樁程序,獲得動(dòng)態(tài)測(cè)試跟蹤數(shù)據(jù),最后對(duì)數(shù)據(jù)進(jìn)行處理分析并制作初步測(cè)試報(bào)告。結(jié)合該框架,模擬測(cè)試實(shí)驗(yàn)室現(xiàn)行項(xiàng)目208型海區(qū)終端的航標(biāo)數(shù)據(jù)采集模塊,得出路徑覆蓋率,證明該系統(tǒng)框架的可行性。
Abstract:
Key words :

 0 引言

    目前,嵌入式軟件已廣泛的應(yīng)用在各個(gè)領(lǐng)域:如工業(yè)控制、通信設(shè)備、信息家電以及航空航天等領(lǐng)域,應(yīng)用越來(lái)越廣泛,復(fù)雜性也日益增加。但由于嵌入式軟件實(shí)時(shí)性強(qiáng)、I/O通道少、內(nèi)存資源受限、與硬件及硬件驅(qū)動(dòng)緊密關(guān)聯(lián)、CPU種類(lèi)繁多等特點(diǎn),決定了嵌入式軟件的開(kāi)發(fā)和測(cè)試必須在交叉編譯環(huán)境下進(jìn)行,即開(kāi)發(fā)及測(cè)試工具運(yùn)行在宿主機(jī)上,而被測(cè)程序運(yùn)行在軟硬件資源緊張的目標(biāo)機(jī)上。僅僅在開(kāi)發(fā)環(huán)境下進(jìn)行嵌入式軟件測(cè)試,難以保障其測(cè)試結(jié)果的有效性;而僅在目標(biāo)機(jī)上進(jìn)行測(cè)試,由于軟件運(yùn)行的不可視性,又使得測(cè)試者難以知曉程序當(dāng)前運(yùn)行狀態(tài),以及代碼的覆蓋情況。因此對(duì)嵌入式軟件覆蓋測(cè)試技術(shù)的要求也更高。
    軟件測(cè)試是一種有效地保證軟件質(zhì)量的重要手段。常用的軟件測(cè)試方法有黑盒測(cè)試、白盒測(cè)試和灰盒測(cè)試。白盒測(cè)試中最成熟、最常用的方法是覆蓋測(cè)試,它是一種動(dòng)態(tài)軟件測(cè)試方法。覆蓋測(cè)試是驗(yàn)證軟件功能結(jié)構(gòu)正確性以及查找問(wèn)題的一種重要方法和手段。為了獲取覆蓋率信息,必須在獲得被測(cè)程序結(jié)構(gòu)信息、靜態(tài)數(shù)據(jù)流信息、控制流信息等基礎(chǔ)上,加入一些探針,通過(guò)探針收集的信息來(lái)獲得程序的執(zhí)行路徑、狀態(tài)等控制流。
    路徑覆蓋測(cè)試是覆蓋測(cè)試中的關(guān)鍵測(cè)試技術(shù)之一,目前已應(yīng)用于程序覆蓋率分析、測(cè)試用例設(shè)計(jì)、程序調(diào)試、性能優(yōu)化等多個(gè)方面,是覆蓋程度最高的測(cè)試。其基本原理是用最少的測(cè)試用例,覆蓋程序中的所有路徑,發(fā)現(xiàn)程序中最多的錯(cuò)誤,安排測(cè)試計(jì)劃、分配測(cè)試資源,并對(duì)實(shí)際測(cè)試所達(dá)到的覆蓋率做出評(píng)估。本文給出了路徑覆蓋相關(guān)理論,并在理論研究的基礎(chǔ)上設(shè)計(jì)出了一種嵌入式軟件動(dòng)態(tài)測(cè)試系統(tǒng)框架,完成對(duì)被測(cè)程序的路徑覆蓋率分析,進(jìn)而判斷測(cè)試的充分性及弱點(diǎn),從而進(jìn)一步改進(jìn)測(cè)試過(guò)程。

1 路徑覆蓋相關(guān)理論
    
路徑覆蓋使程序中每一條可能的路徑至少執(zhí)行一次。但在實(shí)際工作中,即使一個(gè)不太復(fù)雜的程序,路徑數(shù)量往往也是較多的。要在測(cè)試中覆蓋所有的路徑是不現(xiàn)實(shí)的,而基本路徑測(cè)試就是一種簡(jiǎn)化路徑數(shù)的測(cè)試方法。
    基本路徑測(cè)試是在控制流圖的基礎(chǔ)上,通過(guò)分析控制結(jié)構(gòu)的環(huán)形復(fù)雜度,導(dǎo)出執(zhí)行路徑的基本集,再?gòu)脑摶炯O(shè)計(jì)測(cè)試用例。為了清晰描述基本路徑測(cè)試方法,需要對(duì)本文中用到的幾個(gè)基本概念進(jìn)行說(shuō)明。
    (1)程序控制流圖:是對(duì)程序流程圖簡(jiǎn)化后得到的,它是一種有向圖G=(N,E,Entry,Exit),其中N是流圖的節(jié)點(diǎn)數(shù),E是流圖的邊數(shù)。
    (2)Z路徑優(yōu)化:是指限制循環(huán)的次數(shù),無(wú)論循環(huán)的形式和循環(huán)體實(shí)際執(zhí)行的次數(shù),簡(jiǎn)化后的循環(huán)測(cè)試只考慮執(zhí)行循環(huán)體一次和零次(不執(zhí)行)兩種情況。
    (3)環(huán)形復(fù)雜度:提供程序基本路徑集的獨(dú)立路徑數(shù)量以及確保所有語(yǔ)句至少執(zhí)行一次的測(cè)試數(shù)量的上界。可以通過(guò)下列兩種方法來(lái)計(jì)算:對(duì)流圖G,環(huán)形復(fù)雜度V(G)=E-N+2;或V(G)=P+1,其中P為包含在流圖G中的判定節(jié)點(diǎn)數(shù)。
    (4)基本路徑集BP:指軟件可達(dá)路徑的最小集合,等于環(huán)形復(fù)雜度V(G)。
    (5)路徑覆蓋率計(jì)算:由基本路徑集BP設(shè)計(jì)測(cè)試用例集T,使T理論上按BP執(zhí)行。然后分析動(dòng)態(tài)跟蹤數(shù)據(jù),構(gòu)造實(shí)測(cè)路徑集Pn。計(jì)算測(cè)試覆蓋率PCP=(Pn/BP)×100%其中Pn=P(T1)P(T2)…P(Tn)。

2 嵌入式軟件動(dòng)態(tài)測(cè)試框架
    
嵌入式軟件動(dòng)態(tài)測(cè)試框架如圖1所示。它包含宿主機(jī)程序插樁及數(shù)據(jù)處理分析和目標(biāo)機(jī)數(shù)據(jù)處理兩部分。

a.JPG

 圖1 嵌入式軟件動(dòng)態(tài)測(cè)試框架


    在嵌入式軟件測(cè)試中,靜態(tài)測(cè)試是基礎(chǔ),對(duì)被測(cè)軟件進(jìn)行代碼規(guī)則檢查、靜態(tài)結(jié)構(gòu)分析和代碼質(zhì)量評(píng)估;動(dòng)態(tài)測(cè)試是必要補(bǔ)充,在目標(biāo)機(jī)真實(shí)環(huán)境下或仿真環(huán)境下運(yùn)行被測(cè)程序,采集動(dòng)態(tài)跟蹤數(shù)據(jù),分析其動(dòng)態(tài)行為。
    嵌入式軟件路徑覆蓋測(cè)試的特點(diǎn)就是必須在交叉編譯環(huán)境下,通過(guò)物理通道傳輸完整的動(dòng)態(tài)測(cè)試跟蹤數(shù)據(jù),分析數(shù)據(jù)后得到路徑覆蓋率。動(dòng)態(tài)執(zhí)行前先要檢查目標(biāo)機(jī)與宿主機(jī)的連接狀況,確保測(cè)試正常進(jìn)行。
2.1 被測(cè)試程序靜態(tài)分析
    
靜態(tài)分析并不真正執(zhí)行被測(cè)程序,也不需要對(duì)代碼進(jìn)行編譯鏈接,生成可執(zhí)行文件。首先,對(duì)源碼進(jìn)行詞法語(yǔ)法分析和變量分析,找出不符合編碼規(guī)范的地方,根據(jù)某種質(zhì)量模型評(píng)價(jià)代碼的質(zhì)量,生成模塊調(diào)用關(guān)系圖、模塊的程序流程圖等。其次,從程序中提取必要的數(shù)據(jù)并保存,提供給后續(xù)的動(dòng)態(tài)分析和測(cè)試報(bào)告使用。最后,根據(jù)模塊的程序流程圖繪制程序控制流圖G,得到程序控制流圖的邊數(shù)E和節(jié)點(diǎn)數(shù)N,指導(dǎo)插樁庫(kù)的建立,并根據(jù)Z路徑優(yōu)化法構(gòu)造程序的基本路徑集BP,構(gòu)建動(dòng)態(tài)路徑覆蓋測(cè)試的比較基礎(chǔ)。
2.2 插樁技術(shù)
    
一般來(lái)說(shuō),對(duì)程序進(jìn)行動(dòng)態(tài)測(cè)試的時(shí)候,基本上要使用程序插樁來(lái)進(jìn)行覆蓋測(cè)試。程序插樁技術(shù)是保持被測(cè)軟件邏輯完整性的基礎(chǔ)上,在源代碼中插入探針函數(shù),它是一個(gè)子過(guò)程調(diào)用,調(diào)用的子過(guò)程能在運(yùn)行到插樁點(diǎn)時(shí)記錄下有關(guān)的運(yùn)行情況,采集執(zhí)行程序在真實(shí)環(huán)境中運(yùn)行的控制流、數(shù)據(jù)流等測(cè)試數(shù)據(jù)。插樁時(shí)需確保探針函數(shù)對(duì)源程序執(zhí)行影響最小。
    基本路徑測(cè)試依賴(lài)探針插樁技術(shù)完成分支位置點(diǎn)標(biāo)志位的采集。插樁位置最好選擇在應(yīng)用程序?qū)樱攸c(diǎn)采集輸入輸出模塊中的上層函數(shù)運(yùn)行信息,底層模塊加強(qiáng)單元測(cè)試,而在嵌入式軟件模塊集成時(shí),默認(rèn)這些模塊是正確無(wú)誤的。根據(jù)程序按塊劃分的原則,可以在子函數(shù)出入點(diǎn)、程序塊控制流圖G的分支節(jié)點(diǎn)、功能測(cè)試的重點(diǎn)變量處植入探針。
    基本路徑測(cè)試的插樁過(guò)程是靜態(tài)的,數(shù)據(jù)收集過(guò)程是動(dòng)態(tài)的,結(jié)束時(shí)需恢復(fù)現(xiàn)場(chǎng)。動(dòng)態(tài)測(cè)試前,被測(cè)程序與插樁庫(kù)連接,完成插樁操作,獲取執(zhí)行程序。執(zhí)行程序交叉編譯后運(yùn)行于目標(biāo)實(shí)際環(huán)境或者仿真環(huán)境下,通過(guò)探針函數(shù)返回動(dòng)態(tài)測(cè)試跟蹤數(shù)據(jù)。

2.3 數(shù)據(jù)處理及分析
    
目標(biāo)機(jī)在真實(shí)環(huán)境中運(yùn)行可執(zhí)行程序,測(cè)試用例集T為運(yùn)行輸入?yún)⒘浚结槻杉瘮?shù)據(jù)為運(yùn)行的輸出參量。探針函數(shù)采集動(dòng)態(tài)跟蹤測(cè)試數(shù)據(jù),傳輸給宿主機(jī)測(cè)試平臺(tái)。宿主機(jī)測(cè)試平臺(tái)對(duì)接收到的動(dòng)態(tài)跟蹤數(shù)據(jù)進(jìn)行處理,計(jì)算出路徑測(cè)試覆蓋率,并結(jié)合數(shù)據(jù)處理過(guò)程中的測(cè)試日志分析出最后的測(cè)試報(bào)告。

3 測(cè)試實(shí)例分析
    
根據(jù)上述的嵌入式軟件動(dòng)態(tài)測(cè)試框架,模擬測(cè)試實(shí)驗(yàn)室現(xiàn)行項(xiàng)目208型海區(qū)終端的航標(biāo)數(shù)據(jù)采集模塊。
    在編譯器MPLAB IDE 8.63中編寫(xiě)源代碼,并對(duì)源代碼進(jìn)行規(guī)則檢查。圖2為航標(biāo)數(shù)據(jù)采集模塊的主控程序流程圖,可將其簡(jiǎn)化為程序控制流圖。


b.JPG

 圖2  航標(biāo)數(shù)據(jù)采集模塊的主控程序流程圖


    該航標(biāo)數(shù)據(jù)采集模塊由C語(yǔ)言開(kāi)發(fā),根據(jù)插樁策略可以計(jì)算出插樁探針的位置、個(gè)數(shù),構(gòu)造基本路徑和實(shí)際程序執(zhí)行路徑,計(jì)算路徑測(cè)試覆蓋率。部分測(cè)試結(jié)果分析如表1所示。

d.JPG


    基本路徑測(cè)試覆蓋率PCP:
    c.JPG
    基本路徑測(cè)試覆蓋率大小涉及到測(cè)試的各個(gè)階段,受到各方面因素的影響。比如,在該測(cè)試模塊中,Rx_Data_Svr()和AddataConvert()程序中出現(xiàn)了多個(gè)判斷語(yǔ)句和多個(gè)循環(huán)語(yǔ)句,可能的路徑數(shù)目增長(zhǎng),以致影響路徑覆蓋率。

4 結(jié)語(yǔ)
    
本文通過(guò)研究嵌入式軟件測(cè)試的特點(diǎn)和路徑覆蓋測(cè)試的相關(guān)理論,給出了嵌入式軟件動(dòng)態(tài)測(cè)試框架方案。并結(jié)合實(shí)驗(yàn)室目前的項(xiàng)目,分析基本路徑測(cè)試的各個(gè)步驟,得出路徑測(cè)試覆蓋率,進(jìn)而達(dá)到測(cè)試目的。但是路徑覆蓋測(cè)試受多方面因素的影響,尤其是當(dāng)程序中出現(xiàn)多個(gè)復(fù)合條件時(shí),會(huì)大大的增加可能的路徑數(shù)目,所以接下來(lái)的工作是進(jìn)一步探討插樁策略、測(cè)試用例生成等影響路徑覆蓋率的相關(guān)問(wèn)題。


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 韩国毛片在线观看| 一级成人理伦片| 欧美色欧美亚洲高清在线观看 | 欧美午夜理伦三级理论三级| 午夜两性色视频免费网站| 亚洲精品亚洲人成在线播放| 女人是男人的未来视频| 久久人妻少妇嫩草AV| 欧美日韩亚洲一区| 免费播放特黄特色毛片| 蜜芽国产尤物AV尤物在线看| 国产精品久久影院| AV天堂午夜精品一区| 成年美女黄网站色大免费视频| 亚洲1区1区3区4区产品乱码芒果| 波多野结衣和邻居老人公| 可爱男生被触手入侵下面| 风韵多水的老熟妇| 国产精品人人做人人爽人人添| a级毛片免费在线观看| 成人精品免费视频大全app| 久久精品国产99精品国产2021| 欧美成人性色xxxxx视频大| 俄罗斯激情女同互慰在线| 美妇又紧又嫩又多水好爽| 国产女人高潮视频在线观看| 18精品久久久无码午夜福利| 女人十八进入一及黄特别片| 中文字幕日韩精品有码视频| 日韩欧美卡一卡二卡新区| 亚洲国产精品一区二区三区在线观看| 男人边吃奶边爱边做视频国产 | 一级毛片试看三分钟| 日本动漫黄观看免费网站| 亚洲av第一页国产精品| 欧美精品九九99久久在免费线| 免费a级毛片在线播放| 绿巨人晚上彻底放飞自己| 国产乱子伦在线观看| 黄色大片在线播放| 国产欧美日韩综合精品一区二区|