go语言代码覆盖率工具 go语言测试覆盖率( 二 )


下面是一个语料库文件go语言代码覆盖率工具的例子go语言代码覆盖率工具:
第一行用于通知模糊引擎文件的编码版本 。虽然目前没有计划未来版本的编码格式go语言代码覆盖率工具,但设计必须支持这种可能性 。
下面的每一行都是构成语料库条目的值,如果需要,可以直接复制到 Go 代码中 。
在上面的示例中,go语言代码覆盖率工具我们在 a []byte后跟一个int64 。这些类型必须按顺序与模糊测试参数完全匹配 。这些类型的模糊目标如下所示:
指定您自己的种子语料库值的最简单方法是使用该 (*testing.F).Add方法 。在上面的示例中,它看起来像这样:
但是,您可能有较大的二进制文件,您不希望将其作为代码复制到您的测试中,而是作为单独的种子语料库条目保留在 testdata/fuzz/{FuzzTestName} 目录中 。golang.org/x/tools/cmd/file2fuzz 上的file2fuzz工具可用于将这些二进制文件转换为为[]byte.
要使用此工具:
语料库条目:语料库中的一个输入,可以在模糊测试时使用 。这可以是特殊格式的文件 , 也可以是对 (*testing.F).Add 。
覆盖指导:一种模糊测试方法,它使用代码覆盖范围的扩展来确定哪些语料库条目值得保留以备将来使用 。
失败的输入:失败的输入是一个语料库条目,当针对模糊目标运行时会导致错误或恐慌 。
fuzz target:模糊测试的目标功能,在模糊测试时对语料库条目和生成的值执行 。它通过将函数传递给 (*testing.F).Fuzz实现 。
fuzz test:测试文件中的一个被命名为func FuzzXxx(*testing.F)的函数,可用于模糊测试 。
fuzzing:一种自动化测试,它不断地操纵程序的输入 , 以发现代码可能容易受到的错误或漏洞等问题 。
fuzzing arguments:将传递给 模糊测试目标的参数,并由mutator进行变异 。
fuzzing engine:一个管理fuzzing的工具,包括维护语料库、调用mutator、识别新的覆盖率和报告失败 。
生成的语料库:由模糊引擎随时间维护的语料库,同时模糊测试以跟踪进度 。它存储在$GOCACHE/fuzz 中 。这些条目仅在模糊测试时使用 。
mutator:一种在模糊测试时使用的工具 , 它在将语料库条目传递给模糊目标之前随机操作它们 。
package:同一目录下编译在一起的源文件的集合 。
种子语料库:用户提供的用于模糊测试的语料库,可用于指导模糊引擎 。它由 f.Add 在模糊测试中调用提供的语料库条目以及包内 testdata/fuzz/{FuzzTestName} 目录中的文件组成 。这些条目默认使用go test运行 , 无论是否进行模糊测试 。
测试文件:格式为 xxx_test.go 的文件,可能包含测试、基准、示例和模糊测试 。
漏洞:代码中的安全敏感漏洞 , 可以被攻击者利用 。
如何:获取代码覆盖率数据可以按逐行代码甚或逐个代码块的形式衡量测试的有效性 。可以通过配置测试运行以产生代码覆盖率数据来做到这一点 。得到的数据显示在“代码覆盖率结果”窗口和源代码文件中 。
当对项目(通常为二进制文件)进行go语言代码覆盖率工具了检测go语言代码覆盖率工具 , 并在测试运行期间将其加载到了内存中时 , 就会收集代码覆盖率数据 。获取代码覆盖率数据过程介绍了如何选择要检测的文件 。
注意默认情况下,在运行单元测试时测量代码覆盖率 。因此,在运行单元测试时,只有在已关闭代码覆盖率数据收集功能,或者当您希望对其他项目进行检测以收集它们的代码覆盖率数据时 , 才需要执行获取代码覆盖率数据中的步骤 。测试运行完成后,即可查看代码覆盖率数据go语言代码覆盖率工具;有关更多信息 , 请参见查看代码覆盖率数据 。

推荐阅读