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