在本节中,您将单元测试转换为模糊测试,这样您就可以用更少的工作生成更多的输入!
请注意,您可以将单元测试、基准测试和模糊测试保存在同一个 *_test.go 文件中 , 但对于本示例,您将单元测试转换为模糊测试 。
在您的文本编辑器中 , 将 reverse_test.go 中的单元测试替换为以下模糊测试 。
Fuzzing 也有一些限制 。在您的单元测试中,您可以预测Reverse函数的预期输出,并验证实际输出是否满足这些预期 。
例如,在测试用例Reverse("Hello, world")中,单元测试将返回指定为"dlrow ,olleH".
模糊测试时 , 您无法预测预期输出,因为您无法控制输入 。
但是 , Reverse您可以在模糊测试中验证函数的一些属性 。在这个模糊测试中检查的两个属性是:
(1)将字符串反转两次保留原始值
(2)反转的字符串将其状态保留为有效的 UTF-8 。
注意单元测试和模糊测试之间的语法差异:
(3)确保新包unicode/utf8已导入 。
随着单元测试转换为模糊测试,是时候再次运行测试了 。
a.在不进行模糊测试的情况下运行模糊测试 , 以确保种子输入通过 。
如果您在该文件中有其他测试,您也可以运行go test -run=FuzzReverse,并且您只想运行模糊测试 。
b.运行FuzzReverse模糊测试,查看是否有任何随机生成的字符串输入会导致失败 。这是使用go test新标志-fuzz执行的 。
模糊测试时发生故障,导致问题的输入被写入将在下次运行的种子语料库文件中go test , 即使没有-fuzz标志也是如此 。要查看导致失败的输入,请在文本编辑器中打开写入 testdata/fuzz/FuzzReverse 目录的语料库文件 。您的种子语料库文件可能包含不同的字符串 , 但格式相同 。
语料库文件的第一行表示编码版本 。以下每一行代表构成语料库条目的每种类型的值 。由于 fuzz target 只需要 1 个输入,因此版本之后只有 1 个值 。
c.运行没有-fuzz标志的go test; 新的失败种子语料库条目将被使用:
由于我们的测试失败 , 是时候调试了 。
【go语言编码入门 go语言编写】go语言编码入门的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言编写、go语言编码入门的信息别忘了在本站进行查找喔 。
推荐阅读
- 薇诺娜补水直播话术,薇诺娜补水面膜怎么样
- 长白山万达小程序商城电话,长白山万达度假区电话
- 联机飞行类游戏,可以联机的飞行模拟游戏
- 电脑设置代理ip后无法上网,代理ip如何设置
- vb.net窗体自动更新 vb自动适应窗体
- 如何快速学习新媒体,如何学好新媒体营销课程
- sqlserver的字符串连接,sqlserver 字符串连接
- jquery求元素边框粗,jquery设置边框颜色
- go语言视频谁有 go语言软件下载