Go · Avançado · Inglês · Técnico
fuzzing
Teste que gera entradas automáticas e mutadas para descobrir falhas inesperadas. Em Go, desde a versão 1.18, é escrito como FuzzXxx(f *testing.F) e rodado com go test -fuzz.
Onde usar
Útil para parsers e funções que recebem dados externos, achando panics e invariantes violadas. Entradas que causam falha são salvas em testdata/fuzz e viram teste de regressão.
Em código
func FuzzRev(f *testing.F) {
f.Add("olá")
f.Fuzz(func(t *testing.T, s string) {
if Rev(Rev(s)) != s { t.Fail() }
})
}
// go test -fuzz=FuzzRevExemplos
Fuzzing found a panic in our parser with a weird input.
O fuzzing achou um panic no nosso parser com uma entrada estranha.
The failing input was saved under testdata/fuzz.
A entrada que falhou foi salva em testdata/fuzz.
Cuidado
Fuzzing não roda por padrão no go test comum; só os casos semente rodam, a menos que se passe -fuzz.
Sinônimos
fuzz test