Что такое fuzzing?

Middle+
568 просмотров
AFK Offer AI

Fuzzing — автоматическое тестирование, при котором Go сам генерирует случайные входные данные и ищет краши или паники. Появился в Go 1.18. Ты пишешь fuzz-тест, а Go подбрасывает мусор на вход и смотрит, что сломается.

func FuzzParseJSON(f *testing.F) {
    f.Add([]byte({"name":"test"}))
    f.Fuzz(func(t *testing.T, data []byte) {
        var result map[string]any
        json.Unmarshal(data, &result)
    })
}

Запускается через go test -fuzz=FuzzParseJSON. Найденные краши сохраняются в testdata/fuzz как корпус для регрессии. Особенно полезен для парсеров, валидаторов и любого кода, работающего с внешним вводом.

Следующий вопрос

Как работает proxy_pass в nginx?