模糊測試(Fuzz testing,簡稱fuzzing)是一種檢查計算機程序或系統如何響應各種(有時是隨機的)輸入和信息的方法。這個過程包括生成某種類型的數據,要么是完全隨機的,要么是在一定約束下隨機產生的,然后將這些數據輸入到程序中,...
模糊測試(Fuzz testing,簡稱fuzzing)是一種檢查計算機程序或系統如何響應各種(有時是隨機的)輸入和信息的方法。這個過程包括生成某種類型的數據,要么是完全隨機的,要么是在一定約束下隨機產生的,然后將這些數據輸入到程序中,以測試它如何處理意外信息。模糊測試最基本的形式是向程序發送一個隨機的按鍵或字符序列,并檢查程序是否正確處理它們。更復雜的模糊測試使用的是隨機的結構化數據操作并發送到程序中。數據可以作為系統事件、鍵盤輸入,模擬網絡信號,甚至是要加載的文件。

模糊測試是一種檢查計算機程序或系統如何響應各種(有時是隨機的)輸入和信息的方法計算機程序的各個部分都可以用模糊生成器進行測試。圖形用戶界面(GUI)可以通過創建一系列隨機鼠標和鍵盤事件并檢查GUI是否能夠處理在沒有崩潰、凍結或執行意外任務的情況下輸入。可以通過允許模糊生成器隨機更改有效數據包的一部分,然后確保協議在接收到錯誤數據后可以繼續工作來測試網絡協議幾乎任何程序的基本輸入元素都可以檢查其抗錯誤的能力,例如對于存儲類型來說太長的輸入、與預期不同的輸入以及不完整或不正確的輸入計算機安全行業可以使用模糊測試來確保某些系統中不存在明顯的安全漏洞。這可以通過使用一個專為測試計算機安全而設計的模糊生成器來實現。這些程序將嘗試使用系統關鍵字、已知的默認管理員密碼,程序使用的庫中的函數,以及對系統函數的隨機調用,以查看程序的反應。不同類型的模糊測試可以定制為在一定范圍內,甚至只測試特定類型的輸入。這意味著一個程序只能有有效的命令發送給它,但它們的順序可能是無意義的。存在著更復雜的模糊測試程序,可以獲取目標程序的元素并操縱它們來產生可能被惡意利用的情況。這可能包括更改生成進程的順序,權限的修改,或者對核心數據和庫文件進行修改。模糊測試的最終結果是看一個程序是否安全,當遇到意外情況時,它的行為是否正常。當與分析和分析軟件一起使用時,它還可以檢測程序中某些區域的內存泄漏,例如錯誤處理或性能瓶頸在計算機安全的情況下,通過正確的設置可以捕捉到諸如溢出等危害系統的問題。但是,模糊測試不能作為軟件測試的唯一方法,它需要成為更大的質量保證和軟件檢查過程的一部分。