Go语言精进之路:从新手到高手的编程思想、方法和技巧(2)
上QQ阅读APP看书,第一时间看更新

45.1 模糊测试在挖掘Go代码的潜在bug中的作用

go-fuzz工具让Gopher具备了在Go语言中为被测代码建立模糊测试的条件。但模糊测试在挖掘Go代码中潜在bug中的作用究竟有多大呢?我们可以从Dmitry Vyukov提供的一组数据中看出来。

Dmitry Vyukov使用go-fuzz对当时(2015年)的Go标准库以及其他第三方开源库进行了模糊测试并取得了惊人的战果

// 60个测试
60 tests

// 在Go标准库中发现137个bug(70个已经修复)
137 bugs in std lib (70 fixed)

// 在其他项目中发现165个bug
165 elsewhere (47 in gccgo, 30 in golang.org/x, 42 in freetype-go, protobuf, http2,
    bson)

go-fuzz的战绩在持续扩大,截至本书写作时,列在go-fuzz官方站点上的、由广大Gopher分享出来的已发现bug已有近400个,未分享出来的通过go-fuzz发现的bug估计远远不止这个数量。