軟件測試中測試數據的自動生成方法淺析

發表于:2010-10-19來源:作者:點擊數: 標簽:軟件測試自動淺析數據
一、引言 軟件 質量 是制約計算機應用領域進一步發展的關鍵要素之一,保證軟件質量、提高軟件 可靠性 的重要手段是 軟件 測試 。軟件測試中最關鍵的問題是測試數據的設計,它主要涉及兩個方面,一是測試 數據生成,是測試數據覆蓋全面。對于前者,早期程序評
一、引言

  軟件質量是制約計算機應用領域進一步發展的關鍵要素之一,保證軟件質量、提高軟件可靠性的重要手段是軟件測試。軟件測試中最關鍵的問題是測試數據的設計,它主要涉及兩個方面,一是測試 數據生成,是測試數據覆蓋全面。對于前者,早期程序評價系統都是通過人工方法設計測試數據的,近年來,有更多研究者為實現更高程度的自動化而采用相關技術來實現測試數據的自動牛成。下面簡述測試數據生成技術的分類及其中一些典型的方法。

  二、測試數據自動生成法分類

  相關文獻對測試數據自動生成存在不同的分類。Ferguson等1將這些方法所使用的技術劃分為隨機法、面向目標法和面向路徑法三類。這是最恰當的一種分類,但每一類都涉及路徑選擇問題,且會對測試數據生成全過程產生極大影響,而每一類技術又有多種具體實現方法。近年來出現更多面向日標和面向路徑類技術不斷發展演變的相關研究,還產生了基于搜索的測試數據自動生成方法。

  1.隨機法

  該法是指在輸入空間中隨機選擇輸入來生成測試數據,可完全自動化,優點是生成測試數據的開銷小且簡便。但其生成盲目且缺乏典型性,理論上可根據預先定義的輸入隨機分布牛成測試數據,但卻難以先驗的獲知該分布函數,缺乏實用性。

  2.面向目標法

  該法是針對程序中~條選定分支求取輸入數據,該數據要使該分支被執行。初始時,使用任意的輸入來執行程序,再將檢測程序的執行流程,而搜索過程將決定程序是否按當前的分支執行還是另選一條分支。若觀察到當前分支有不期望的流程,則使用函數最小化搜索算法來自動產牛能夠改變分支執行流程的輸入。其主要思想是僅關注那些影響到目標節點執行的分支。

  3.面向路徑法

  該法是給定一程序和其中一路徑,求某一輸入數據,使得程序以該數據為輸入時將執行該路徑。其中用于尋找該執行路徑輸入數據的方法有,一是對程序進行靜態分析轉換,不涉及程序的實際運行,包括符號執行和區間算術法等。二是面向程序實際執行的方法,因其整個過程完全基于程序實際執行,數組索引和指針取值在執行時可知,可以克服符號執行的限制。

  4.基于搜索法

  近期研究者對應用超啟發式搜索技術于測試數據自動生成的關注目益升溫。前期測試數據自動生成的嘗試受到軟件規模和復雜度的限制,而測試數據生成是個不確定問題。該技術為此帶來了希望。

  它屬高層次框架,利用其在合理的計算成本前提尋求解決組合犁問題的解。該方法需運行程序,但其生成測試數據的過程不確定,它采用概率論思想,例如遺傳和模擬退火算法。

  三、兩類方法比較

  1.面向目標法

  其優勢是能預先偵測到不可行路徑以精簡由到達給定分支所有路徑構成的搜索空間。對只含指針變暈的程序,該法比面向路徑法易擴展。其局限性是處理動態分配能力弱。隨著近年來的不斷發展,面向路徑法有關文獻提出一些處理指針數據的措施,文獻中提出一種基于約束的方法,它探索了節點內程序式指向分析的研究成果,提供了兩種約束連接符用于測試數據生成。

  2.面向路徑法

  其優勢是基于程序執行的方法可以有效的處理數組和引用指針,因為數組索引和指針地址在執行的每一步是已知的。其中指針關系以有關輸入值的約束形式來處理,且指針混淆問題僅僅出現在輸入數據結構中。其主要挑戰之一是在選擇路徑時,無法確認是否是可行路徑。因此比較適合于只有幾條路徑的簡單程序。另有文獻對以上的問題有了進一一步的研究。有Gupta等提出一種迭代張弛法。它基于函數求根等式近似求解數值分析中的張弛技術,在給定值域中任意選擇一個輸入數據,通過一或多次迭代提取歷經給定路徑的輸入數據。且后期相關文獻研究對其進行了有效改進。

  四、結語

  在自動測試系統的實際研發中需要根據實際需求和特點決定方法的選擇,還可將各類方法進行有效整合與優勢互補。相關研究近年來雖已取得可喜進展,但離全面有效的自動生成測試數據還有一定差距。但我們相信,隨著研究的不斷深入,真正實用的方法及工具必將出現。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97