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