Can you summarize the following document?
        
  1988年,威斯康星大學的Barton Miller教授率先在他的課程實驗提出模糊測試。實驗內容是開發一個基本的命令列模糊器以測試Unix程式。這個模糊器可以用隨機資料來“轟炸”這些測試程式直至其崩潰。類似的實驗於1995年被重複,並且包括了圖形介面程式(例如X Window System),網路協議和系統API庫。一些後續工作可以測試Mac和Windows系統上的命令列程式與圖形介面程式。  關於模糊測試更早的想法可以追溯到1983年前。Steve Capps於當時開發了一個叫做The Monkey的Macintosh程式以測試Mac程式,並曾被用於發現MacPaint的程式錯誤。  另一個早期的模糊測試工具是crashme,於1991年釋出。其主要功能是讓Unix以及類Unix系統去執行隨機機器指令以測試這些系統的健壯性。

  模糊測試通常被用於黑盒測試。其回報率通常比較高。當然,模糊測試只是相當於對系統的行為做了一個隨機取樣,所以在許多情況下通過了模糊測試只是說明軟體可以處理異常以避免崩潰,而不能說明該軟體的行為完全正確。這表明模糊測試更多是一種對整體質量的保證,並不能替代全面的測試或者形式化方法。作為一種粗略的可靠性度量方法,模糊測試可以提示程式哪些部件需要特殊的注意。對於這些部件可以進一步使用程式碼審計,靜態分析以及程式碼重寫。

  模糊測試工具通常可以被分為兩類。變異測試通過改變已有的資料樣本去生成測試資料。生成測試則通過對程式輸入的建模來生成新的測試資料。  最簡單的模糊測試是通過命令列,網路包或者事件向一個程式輸入一段隨機位元流。這種技術目前依然是有效的發現程式錯誤的方法。另一個常見且易於實現的技術是通過隨機反轉一些位元或者整體移動一些資料塊來變異已有的輸入資料。但是,最有效的模糊測試需要能夠理解被測試物件的格式或者協議。這可以通過閱讀設計規格來實現。基於設計規格的模糊工具包含完整的規格,並通過基於模型的測試生成方法去遍歷規格,並在資料內容,結構,訊息,序列中引入一些異常。這種“聰明的”模糊測試也被稱作健壯性測試,句法測試,語法測試以及錯誤注入。這種協議感知的特性也可以啟發式的從例子中生成。相關的工具有Sequitur。  模糊測試也可以與其他技術結合。白盒模糊測試結合了符號執行技術與約束求解技術。演化模糊測試則利用了一個啟發的反饋來有效的實現自動的探索性測試。
模糊測試 (fuzz testing, fuzzing)是一種軟體測試技術。其核心思想是將自動或半自動生成的隨機資料輸入到一個程式中,並監視程式異常,如崩潰,斷言(assertion)失敗,以發現可能的程式錯誤,比如記憶體洩漏。模糊測試常常用於檢測軟體或計算機系統的安全漏洞。