ExpertiDict

Go · Avançado · Inglês · Técnico

fuzzing

/ˈfʌz.ɪŋ/substantivo

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=FuzzRev

Exemplos

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

Veja também

Todos os termos de Go