• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于路徑覆蓋的嵌入式軟件動態測試研究

    基于路徑覆蓋的嵌入式軟件動態測試研究

    作者: 時間:2013-06-14 來源:網絡 收藏

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

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

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

    2 嵌入式軟件動態測試框架
    嵌入式軟件動態測試框架如圖1所示。它包含宿主機程序插樁及數據處理分析和目標機數據處理兩部分。

    本文引用地址:http://www.czjhyjcfj.com/article/148015.htm

    a.JPG


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


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 昌图县| 东方市| 杭锦后旗| 咸丰县| 崇义县| 渑池县| 汾阳市| 汽车| 北安市| 内乡县| 枣庄市| 阿拉善右旗| 古丈县| 兴义市| 监利县| 宁波市| 宜兰市| 东台市| 南开区| 锦屏县| 闻喜县| 石家庄市| 舒兰市| 岢岚县| 玉龙| 靖西县| 贡嘎县| 昭平县| 烟台市| 铁岭市| 托克逊县| 资源县| 澳门| 南岸区| 泽普县| 偃师市| 敦煌市| 惠安县| 上蔡县| 达尔| 镇赉县|