跳至內容

霧嗄嗄試

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

霧嗄嗄試(fuzz testing , fuzzing)是一種軟體測試技術。其核心思想是將自動或者是半自動生造成的亂數據輸入到一个程式中,而且監視程式異常,如幫敗,斷言(assertion)失敗,以發現可能的程式錯誤,譬如講記持體流失。霧嗄嗄試定定用佇檢測軟體抑是電腦系統的安全漏洞。

霧嗄測試上早是由威斯康星大學的 Barton Miller 佇一九八八年提出。𪜶的工課毋但使用隨機無結構的測試資料,猶閣系統的利用一系列的工具去分析無仝平台頂的各種軟體,閣對測試發現的錯誤進行了系統的分析。此外,𪜶閣公開原始咧碼,測試流程佮原始結果資料。

嘛無咧試工具主要就分兩類,變異測試(mutation-based)猶閣有生成測試(generation-based)。 霧嗄嗄試會當用著白盒,觳仔抑是烏箱仔測試。檔案格式佮網路協定是上捷看著的測試目標,但任何程式輸入攏會當做試物件。捷看的輸入有環境變數,滑鼠佮鍵盤事件佮 API 呼叫序列。甚至一寡通常毋是去考慮著輸入的物件嘛會當予人測試,比如資料庫內底的資料抑是共享記持體。

對安全相關的測試,遐的迒過可信邊界的資料是上予人感興趣的。比如講,霧霧測試遐的處理任意使用者上傳的檔案的代碼比測試解析侍服器設定檔的代碼閣較重要。因為侍服器設定檔往往予人有一定權限的使用者修改。

歷史

一九八八年,威斯康星大學的 Barton Miller 教授率先佇伊的課程試驗提出無糊測試。實驗內容是開發一个基本的命令列模糊器以測試 Unix 程式。這个霧器會當用亂數據來「轟炸」遮的測試程式一直到崩盤。類似的實驗佇一九九五年被重複,而且包括著圖形介面程式(比如講 X Window System), 網路協定佮系統 API 庫。一寡後續的工課會當試看覓 Mac 和 Windows 系統上的命令列程式佮圖形介面程式。

關於模糊測試閣較早的想法會當追溯到一九八三年前。Steve Capps 所以彼當陣開發一个叫做 The Monkey 的 Macintosh 程式來測試 Mac 程式,並捌予人用過發現 MacPaint 的程式錯誤。

另外一个較早的模仿測試工具是 crashme,佇咧一九九一年發布。其主要的功能是予 Unix 以及類 Unix 系統去執行隨機器指令以測試遮的系統的健壯性。

用途

霧測試通常被用佇烏箱測試。這其回報率通常會較懸。當然喔,霧嗄測試只是比止仔對系統行為做一个隨機採樣,所以佇咧真濟情形下通過矣霧嗄嗄測試只是說明軟體會當處理異常以避免崩潰,而袂當說明該軟體的行為完全正確。這表明模糊測試閣較濟是一種對整體品質的保證,並無法度替代全面的測試或者是形式化方法。做一種粗略的可靠性量方法,霧測試嘛會使提示程式佗一寡部件需要特殊的注意。對遮的部件會當進一步來用代碼審計,靜態分析猶閣有代碼重寫。

技術

霧測試工具通常會當予人分做兩類。變異測試通過改變已經有的資料樣本去生成測試資料。生成測試則通過對程式輸入的建模來生做新的測試資料。

上簡單的霧測試是通過命令列,網路包或者事件向一个程式輸入一段隨機位元流。這款技術目前猶原是有效的發現程式錯誤的方法。另外一个捷看實現技術是通過隨機反轉一寡位元或者是整體徙動一寡資料角來變異已經有的輸入資料。猶毋過,上有效的霧測試需要會當理解被測試物件的格式或者是協定。這會當通過閱讀設計規格來實現。是因為設計規格的霧工具包含完整的規格,閣通過因為模型的測試生成方法去遍歷規格,閣佇咧資料的內容,結構,訊息,序列內底引入一寡仔異常。這種「巧巧」嘛予人號做健壯性測試,句法測試,語法測試猶閣有錯誤注入。這種協定感知的特性也會當啟發式的對例中生成。相關的工具有 Sequitur。

霧嗄嗄試也會當佮其他的技術結合。白盒霧測試結合了符號執行技術佮約束求解技術。演化無糊測試原在是利用一个啟發的回饋來有效的實現自動的探索性測試。

參考文獻