模糊測試(fuzz testing)是一種自動化軟體測試技術,做法是把隨機或無效的資料丟進程式裡,觀察它的反應。GitHub 資源文章指出,這種方法特別適合用在會接收使用者輸入的軟體上,目的是找出傳統測試方法很難發現的錯誤與安全漏洞,例如當程式收到奇怪或超出預期的資料時是否會當機或出錯。
文章說明模糊測試的流程:先定義要測試的系統範圍,挑選合適的 fuzzer 工具,接著讓工具自動產生或變異出大量輸入資料丟給程式,同時監控程式是否當機、記憶體洩漏或緩衝區溢位,最後再分析問題並修復。測試方式又分成黑盒、白盒、灰盒,以及變異型、生成型、覆蓋率引導型等不同做法。
模糊測試能測到應用程式、作業系統、網路協定與網頁應用,用來抓出 SQL 注入、跨站腳本(XSS)等常見漏洞,是安全社群長期使用的方法。文章也提到它的限制:測試很花時間與運算資源,結果不一定穩定,可能出現誤報或漏報,所以通常會搭配其他測試方法一起使用,而不是單獨依賴它。
對正在學程式的孩子來說,模糊測試是一個很好的例子,說明「測試」不是只有照著正常流程試一次就好,還要故意輸入奇怪、錯誤甚至亂碼的資料,看看程式會不會崩潰,這種「刻意找碴」的思考方式,其實也能訓練孩子寫程式時多想一步、多考慮例外狀況。
資訊安全軟體測試開源