新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于路徑覆蓋的嵌入式軟件動(dòng)態(tài)測(cè)試研究

基于路徑覆蓋的嵌入式軟件動(dòng)態(tài)測(cè)試研究

作者: 時(shí)間:2013-06-14 來(lái)源:網(wǎng)絡(luò) 收藏

摘要:針對(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)框架的可行性。
關(guān)鍵詞:嵌入式軟件;;;

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種類繁多等特點(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è)試結(jié)果的有效性;而僅在目標(biāo)機(jī)上進(jìn)行測(cè)試,由于軟件運(yùn)行的不可視性,又使得測(cè)試者難以知曉程序當(dāng)前運(yùn)行狀態(tài),以及代碼的覆蓋情況。因此對(duì)嵌入式軟件覆蓋測(cè)試技術(shù)的要求也更高。
是一種有效地保證軟件質(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í)的,而就是一種簡(jiǎn)化路徑數(shù)的測(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ù)處理兩部分。

本文引用地址:http://m.butianyuan.cn/article/148015.htm

a.JPG


在嵌入式軟件測(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è)試依賴探針插樁技術(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ù)。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉