Go Fuzzing 進入 Beta 測試階段
Go 團隊宣布原生的 fuzzing(模糊測試)功能已準備好在其開發分支 dev.fuzz 上進行 Beta 測試。
Fuzzing 屬于自動化測試,它通過持續控制程序的輸入來暴露諸如 panic 或 bug 之類的錯誤。這些半隨機的數據突變可以發現現有單元測試可能遺漏的新代碼覆蓋范圍,以及很難被注意到的邊緣案例的錯誤。由于模糊測試可以觸達這些邊緣案例,所以模糊測試對于發現安全漏洞和缺陷特別有價值。
下面是提案 Draft Design 的部分內容:
- 支持使用-race和-msan進行模糊測試
- 支持使用-keepfuzzing進行模糊測試
- 對由不同 mutator 引起的類似崩潰進行重復數據刪除,這將是實現-keepfuzzing(降低噪音)的先決條件
- 在模糊處理時允許特殊選項(例如最大輸入大小)
- 支持字典
- 模糊測試時可自定義覆蓋范圍檢測(例如,僅檢測某些軟件包或文件)
- 為 mutator 定制生成器
- 支持結構化和非基本類型的結構化
- [1.17的擴展目標]對除[]byte(例如字符串,int,float64)之外的其他原始類型的結構化支持
- 更多細節查看 https://golang.org/s/draft-fuzzing-design
- 運行以下命令即可使用 go fuzzing
- $ go get golang.org/dl/gotip
- $ gotip download dev.fuzz
請注意,Go 團隊表示 Go fuzzing 會消耗大量內存,并且可能會影響機器運行時的性能,因此他們建議使用參數-parallel來減少進行模糊測試進行時使用的進程數。
最后,Go 1.17 不會引入 Go fuzzing,但有計劃在未來的版本中提供。
本文轉自OSCHINA
本文標題:Go Fuzzing 進入 Beta 測試階段
本文地址:https://www.oschina.net/news/145093/go-fuzz-beta