语料库文件格式 语料库文件以特殊格式编码。这是种子语料库和生成语料库的相同格式。 下面是一个语料库文件的例子:gotestfuzzv1〔〕byte(helloxbdxb2xbc)int64(572293) 第一行用于通知模糊引擎文件的编码版本。虽然目前没有计划未来版本的编码格式,但设计必须支持这种可能性。 下面的每一行都是构成语料库条目的值,如果需要,可以直接复制到Go代码中。 在上面的示例中,我们在a〔〕byte后跟一个int64。这些类型必须按顺序与模糊测试参数完全匹配。这些类型的模糊目标如下所示:f。Fuzz(func(testing。T,〔〕byte,int64){}) 指定您自己的种子语料库值的最简单方法是使用该(testing。F)。Add方法。在上面的示例中,它看起来像这样:f。Add(〔〕byte(helloxbdxb2xbc),int64(572293)) 但是,您可能有较大的二进制文件,您不希望将其作为代码复制到您的测试中,而是作为单独的种子语料库条目保留在testdatafuzz{FuzzTestName}目录中。golang。orgxtoolscmdfile2fuzz上的file2fuzz工具可用于将这些二进制文件转换为为〔〕byte。 要使用此工具:goinstallgolang。orgxtoolscmdfile2fuzzlatestfile2fuzz 词汇表 语料库条目:语料库中的一个输入,可以在模糊测试时使用。这可以是特殊格式的文件,也可以是对(testing。F)。Add。 覆盖指导:一种模糊测试方法,它使用代码覆盖范围的扩展来确定哪些语料库条目值得保留以备将来使用。 失败的输入:失败的输入是一个语料库条目,当针对模糊目标运行时会导致错误或恐慌。 fuzztarget:模糊测试的目标功能,在模糊测试时对语料库条目和生成的值执行。它通过将函数传递给(testing。F)。Fuzz实现。 fuzztest:测试文件中的一个被命名为funcFuzzXxx(testing。F)的函数,可用于模糊测试。 fuzzing:一种自动化测试,它不断地操纵程序的输入,以发现代码可能容易受到的错误或漏洞等问题。 fuzzingarguments:将传递给模糊测试目标的参数,并由mutator进行变异。 fuzzingengine:一个管理fuzzing的工具,包括维护语料库、调用mutator、识别新的覆盖率和报告失败。 生成的语料库:由模糊引擎随时间维护的语料库,同时模糊测试以跟踪进度。它存储在GOCACHEfuzz中。这些条目仅在模糊测试时使用。 mutator:一种在模糊测试时使用的工具,它在将语料库条目传递给模糊目标之前随机操作它们。 package:同一目录下编译在一起的源文件的集合。 种子语料库:用户提供的用于模糊测试的语料库,可用于指导模糊引擎。它由f。Add在模糊测试中调用提供的语料库条目以及包内testdatafuzz{FuzzTestName}目录中的文件组成。这些条目默认使用gotest运行,无论是否进行模糊测试。 测试文件:格式为xxxtest。go的文件,可能包含测试、基准、示例和模糊测试。 漏洞:代码中的安全敏感漏洞,可以被攻击者利用。