APP下载

Go原生模糊测试解决方案已可供开发者试用

消息来源:baojiabao.com 作者: 发布时间:2026-02-17

报价宝综合消息Go原生模糊测试解决方案已可供开发者试用

Go官方发布了原生模糊测试(Fuzzing)功能,想要尝鲜的开发者,可以在dev.fuzz分支中进行Beta测试,之后模糊测试程式码将会被并入主要分支,dev.fuzz分支建置的工具链便不会再使用。模糊测试是一种自动化测试方法,可以操纵程式输入来寻找容易被忽略的边缘错误情况。

官方提到,模糊测试可以助开发人员辨识并且找出需要修复的臭虫,提高程式码品质。过去没有一个标准的Go程式码模糊测试方法,也没有开箱即用的工具和支援,因此官方决定在Go测试档案中支援模糊测试功能,提供统一端到端的支援,使得开发人员可以简单地使用模糊测试,来确保程式码的安全性和可靠度。

模糊测试过去都是由安全工程师编写,而骇客也会透过类似的方法,恶意地探索程式的漏洞,官方表示,对所有程式码进行模糊测试有很大的价值,尤其是对那些可以处理任意用户输入的程式。现在有不少程式语言,也都开始鼓励并且支援模糊测试,像是libFuzzer和AFL等工具就被广泛地应用在C/C++中,而新兴语言Rust也提供好用的模糊测试工具。

在Go中,开发人员可以自建模糊测试,或是使用go-fuzz和fzgo来解决满足部分模糊测试需求,但是这些方法都比典型的Go测试,需要更多的步骤,并且缺少关键功能,官方认为,模糊测试不应该比基准测试或单元测试等其他类型的Go测试更复杂。过去的模糊测试解决方案,增加额外的测试成本,包括开发者需要自定义命令列工具,且缺乏模组支援,也没有标准函式库的测试和自定义支援。

模糊测试覆盖的Go程式码越多,在生态系中发现和修补的臭虫也就越多,这对于提升以Go语言开发的系统稳定性和安全性,有很大的帮助,官方提到,从长远来看,Go的最佳解决方案是提供功能丰富、完整支援和统一描述的模糊测试功能。让开发人员能够使用现有熟悉的工具,只要进行一些小改变,就能像编写单元测试一样简单。

而现在Go的模糊测试进入Beta测试阶段,只要从dev.fuzz分支下载并建置Go工具链,就可以开始使用测试指令执行模糊测试。透过不断地操纵程式的输入,发现程式的错误和安全性臭虫,这些半随机产生的资料,可以发现单元测试可能遗漏的情况,并且找出容易被忽略的边缘情况,官方表示,由于模糊测试可以找出这些极端案例,因此对于发现臭虫和安全漏洞非常有用

目前该模糊测试仍在测试阶段,可能会出现错误以及不完整的功能集,另外,模糊测试会消耗大量内存,因此可能会影响机器的效能。模糊测试功能不会在即将发布的Go 1.17上提供,但有合并到之后主要版本的计划。

2021-06-07 21:15:00

相关文章