<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          摘要:針對動態(tài)測試時的問題,提出了一種動態(tài)測試系統(tǒng)框架。該框架基于測試的特點(diǎn)及的相關(guān)理論,包括被測試程序的靜態(tài)分析、插樁技術(shù)和數(shù)據(jù)處理分析等部分。以靜態(tài)分析指導(dǎo)插樁庫的建立,通過插樁技術(shù)在程序分支或重要位置點(diǎn)植入探針,執(zhí)行已插樁程序,獲得動態(tài)測試跟蹤數(shù)據(jù),最后對數(shù)據(jù)進(jìn)行處理分析并制作初步測試報告。結(jié)合該框架,模擬測試實(shí)驗(yàn)室現(xiàn)行項(xiàng)目208型海區(qū)終端的航標(biāo)數(shù)據(jù)采集模塊,得出率,證明該系統(tǒng)框架的可行性。
          關(guān)鍵詞:嵌入式軟件;;;;

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/148015.htm

          a.JPG


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


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();