Fuzzing是软件测试技术,模糊测试 (fuzz testing, fuzzing)。核心的思想是自动化或者半自动的生成随机数据输入到一个程序中,并且见识程序异常。如崩溃、断言失败,以发现可能的程序错误。比如内存泄露等;模式测试尝尝被用于检测软件或者计算系统的安全漏洞。
在Go中,开发人员可以自荐模糊测试,或者是用go-fuzz和fzgo来解决部分模糊测试需求。官方以为过去的模糊测试的解决方案,增加额外的测试成本,包括开发者需要自定义命令列工具,且缺乏模块支持,也没有标准函数库的测试和自定义支持。
下面内容是D Draft Design 的部分内容:
支持使用-race和-msan进行模糊测试
支持使用-keepfuzzing进行模糊测试
对由不同 mutator 引起的类似崩溃进行重复数据删除,这将是实现-keepfuzzing(降低噪音)的先决条件
在模糊处理时允许特殊选项(例如最大输入大小)
支持字典
模糊测试时可自定义覆盖范围检测(例如,仅检测某些软件包或文件)
为 mutator 定制生成器
支持结构化和非基本类型的结构化
[1.17的扩展目标]对除[]byte(例如字符串,int,float64)之外的其他原始类型的结构化支持