軟件測試中的模糊測試的定義

發表于:2010-01-22來源:作者:點擊數: 標簽:軟件測試定義
軟件測試中的模糊測試的定義 軟件測試 什么是模糊測試? 解釋模糊測試(模糊化)的最好方法就是使用示例。最近以來,模糊化的最常見用處是驗證兩種類型的數據分析程序:文件和網絡。 文件分析程序的一個例子是 Microsoft Word。對 Word 文件分析程序進行模糊測

  軟件測試中的模糊測試的定義  軟件測試  

     什么是模糊測試?

  解釋模糊測試(模糊化)的最好方法就是使用示例。最近以來,模糊化的最常見用處是驗證兩種類型的數據分析程序:文件和網絡。

  文件分析程序的一個例子是 Microsoft Word。對 Word 文件分析程序進行模糊測試需要什么?想象一下創建一百萬個長度和所包含數據均為隨機的 Word 文檔。假設這些文檔不是由 Word 自己創建,而實際上是通過將隨機的二進制數據源輸送到磁盤上的測試文件中創建的。在 Word 中打開其中任意一個文件,看看會發生什么。

  這樣做可能會出現三種結果。第一種,對于大多數測試文件,Word 會指出文件格式無法識別,或文件已破壞而無法打開等錯誤。第二種,一百萬個文件中的少數文件可能實際上包含了某些可識別控件和可打印字符的組合。那些文件將會正常打開,沒有任何問題。第三種,也是最有趣的情況是,可能有幾個文件包含了文件分析程序沒有預見到的數據。在這種情況下,程序可能會出故障。

  對于安全性測試人員,第三類測試文檔才是真正有意義的情況。如果文件分析程序出現故障,那意味著它存在 bug。如果有 bug,它可能是可利用的。例如,bug 可能會引起堆棧損壞或堆損壞,從而造成故障。一般情況下,此類 bug 在聯網環境下屬于嚴重問題,因為各種各樣的文件類型都可作為電子郵件附件分發。經驗表明,大多數用戶都會打開附件,而不管其性質。

  在網絡分析程序領域中也存在相似的問題??紤]一下典型的 PC、服務器嵌入式網絡設備所能理解的協議數量之多:DHCP(動態主機配置協議)、DNS、HTTP、SMB(服務器消息塊)和 SMTP 等等。每個協議實現都包括一個針對來源于網絡的數據包的分析程序,而每個分析程序都可能需要一些復雜的邏輯。此類代碼也往往會有許多邊界情況,從而使之難以驗證。

  測試網絡協議代碼的一個方法是通過模糊化。但是,在這種情況下,我建議使用一種“向其提供隨機數據即可”方法(在上面的 Word 分析程序上下文中說明)的變體。

  假設我需要測試一個 DHCP 客戶端。再進一步假設 DHCP 客戶端代碼的某一特定部分特別糟糕,但是該段代碼在某種程度上得到了分析程序另一部分(被認為較為可靠)的網絡保護。

  在這種情況下,用純隨機數據模糊化 DHCP 客戶端不可能有效地使用時間,因為我預見代碼的可靠部分會篩選出大多數不正確的數據。我改為采用一種更具針對性的方法。

  實際上,根據我的經驗,在采用這種方式時模糊化最有效。繼續該 DHCP 示例,我將模糊測試(模糊處理程序)配置成使用已知有效數據、故意錯誤數據和隨機數據的組合,而不是用大量純隨機數據來測試該客戶端。使用已知有效數據的目的是跳過我不感興趣的分析程序組件。使用故意錯誤數據的目的是利用已知或我懷疑將成為代碼中缺陷的情況。最后,使用隨機數據的目的就是看看會發生什么。

  在模糊化的過程中,我的方法會隨著我對可疑行為的進一步了解而得到完善。例如,我的測試 DHCP 包的某些部分最初包含了隨機數據,我隨后可能會在該處使用已知的有效數據來進一步深入了解該分析程序。如果發現了錯誤,我會發送故意錯誤數據以試圖利用它。這種啟發式方法是兩個領域的最佳方案:人類直覺和計算機自動化。

  模糊化確實是功能強大的工具,但是它在測試覆蓋率方面仍處于相對未知的領域。因此我發出以下行動呼吁(當然要在讀完本文其余部分之后實現):選擇您熟悉的技術,或至少您感興趣的技術,為之編寫一個模糊處理程序。您多半可能會發現 bug。

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

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