Go 語言新提案:添加模糊測試支持
Go 語言增加了支持模糊測試 (Fuzz Test) 的新提案。
據介紹,此項提案會為 Go 添加新的testing.F類型,在_test.go文件中支持FuzzFoo函數,并增加新的go命令行為。該提案的 Draft Design 已發布,并根據 Go 社區的反饋進行了迭代。下一步要做的工作是將提案實現為語言特性。
此項特性在 Go 1.17 中會被視為實驗性功能,且其 API 也不一定會與 Go 1 兼容。當然,這項功能本身也會存在錯誤并缺少某些功能,但即便如此也會將其作為概念驗證,Go 開發者可以對其進行實驗并提供反饋。由于這將是一個實驗性的功能,Go 團隊也預計在未來的 Go 版本中 mutator 和模糊引擎 (fuzzing engine) 將會繼續完善和發展。
下面是提案 Draft Design 的部分內容,這些內容不會加入到 1.17。
- 支持使用-race和-msan進行模糊測試
- 支持使用-keepfuzzing進行模糊測試
- 對由不同 mutator 引起的類似崩潰進行重復數據刪除,這將是實現-keepfuzzing(降低噪音)的先決條件
- 在模糊處理時允許特殊選項(例如最大輸入大小)
- 支持字典
- 模糊測試時可自定義覆蓋范圍檢測(例如,僅檢測某些軟件包或文件)
- 為 mutator 定制生成器
- 支持結構化和非基本類型的結構化
- [1.17的擴展目標]對除[]byte(例如字符串,int,float64)之外的其他原始類型的結構化支持
本文轉自OSCHINA
本文標題:Go 語言新提案:添加模糊測試支持
本文地址:https://www.oschina.net/news/131058/go-support-fuzz-test-proposal