无论你是编写复杂的分布式系统或者小型程序,测试都是开发过程中不可或缺的一部分。随着软件规模的不断增大,传统的测试方法变得越来越难以胜任。在这种情况下,fuzz testing (模糊测试)应运而生。通过自动化生成随机输入,fuzz testing 可以揭示程序的隐藏漏洞和 bug,大大提高代码质量。

Go 语言以其高效、简单、现代的特性,越来越受到开发者的青睐。作为一种强类型语言,Go 也提供了一种易于使用的 fuzzer 库 —— Go Fuzz。本文将介绍如何编写自己的 Go Fuzz 目标。

首先,安装 Go Fuzz:

“`

go get -u github.com/dvyukov/go-fuzz/go-fuzz

go get -u github.com/dvyukov/go-fuzz/go-fuzz-build

“`

接下来,选择你要测试的函数并在文件头部添加以下注释:

“`

// +build gofuzz

package yourpackage

func Fuzz(data []byte) int {

// Do something with the data and return score

return 0

}

“`

然后,使用以下命令对目标进行编译:

“`

go-fuzz-build

“`

这将生成一个名为 yourpackage-fuzz.zip 的文件。

最后,运行以下命令来启动 fuzz 测试:

“`

go-fuzz -bin=./yourpackage-fuzz.zip -workdir=yourworkdir

“`

现在,Go Fuzz 已经在你的代码中生成随机输入并运行测试。你可以在控制台中观察测试运行的结果。

珍爱生命,远离丑陋和 bug。使用 Go Fuzz,让你的代码更健壮、更可靠。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/