无论你是编写复杂的分布式系统或者小型程序,测试都是开发过程中不可或缺的一部分。随着软件规模的不断增大,传统的测试方法变得越来越难以胜任。在这种情况下,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/