🟢 Лёгкий · 1 очк. Тестирование
Что такое fuzz-тестирование в Go 1.18+?
A Тестирование с фиксированными данными
B Автоматическая генерация случайных входных данных для поиска паник, ошибок и неожиданного поведения
C Тестирование производительности
D Тестирование с mock-объектами
Объяснение вопроса

Fuzz-тестирование (фаззинг) - метод автоматического тестирования, при котором инструмент генерирует случайные или мутированные входные данные и подает их в тестируемую функцию, отслеживая паники, ошибки и некорректное поведение.

В Go фаззинг встроен в стандартный testing пакет с версии 1.18:

func FuzzParseJSON(f *testing.F) {
    // Seed-корпус - начальные примеры для мутаций
    f.Add([]byte(`{"name":"test"}`))
    f.Add([]byte(`[]`))

    f.Fuzz(func(t *testing.T, data []byte) {
        var result map[string]any
        // Фаззер будет мутировать data
        // и искать входы, вызывающие панику
        _ = json.Unmarshal(data, &result)
    })
}

Фаззинг особенно полезен для парсеров, валидаторов, сериализации/десериализации - всего, что принимает произвольный ввод.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.