Golang 模糊测试:语料库条目中的类型不匹配

问题描述 投票:0回答:2

当使用 Go 中引入的原生模糊测试功能时

1.18
,重构我的测试后,我现在遇到以下错误:

--- FAIL: FuzzTrie_InsertAndRead (0.03s)
    trie_test.go:340: "testdata/fuzz/FuzzTrie_InsertAndRead/84ed65595ad05a58e293dbf423c1a816b697e2763a29d7c37aa476d6eef6fd60":
    mismatched types in corpus entry: [[]uint8 []uint8], want [uint64 []uint8]

我认为这是由于我的测试参数从

byte
切片更改为
uint64
byte
切片,但是我如何摆脱这个语料库数据?它位于哪里?

go testing fuzzing
2个回答
3
投票

使用 native Go fuzzing 运行测试时,会生成测试数据并将其存储在以下路径中,相对于正在运行的测试:

testdata/fuzz/<FuzzTestName>

如果模糊测试更改名称,则之前的测试数据实际上不会被使用,而如果其使用的类型发生更改,则其包含的语料库数据不再属于相关类型,可以通过完全删除文件夹来丢弃。


0
投票

https://go.dev/doc/security/fuzz/#glossary说有2种身体类型:

生成的语料库:

位于

$GOCACHE/fuzz/<ProjectModuleName>/<PathToFileInProject>/<FuzzTestName>
,可以通过终端找到
$GOCACHE
go env GOCACHE
,并列出所有标记为新有趣的测试用例。

种子语料库: 这些是您在函数中生成的自己的种子以及

./testdata/fuzz/<FuzzTestName>/

中失败的测试
© www.soinside.com 2019 - 2024. All rights reserved.