tgoop.com/go_interview_lib/427
Last Update:
💬 Как устроено фаззинг-тестирование в Go?
Фаззинг представляет собою технологию автоматизированного поиска ошибок с помощью случайных входных данных и анализа реакции программы на них. Она полезна, если нужно проверить граничные условия или корректность обработки потока ввода — то есть тогда, когда нужно найти значения, при которых «падает» программа. В Go 1.18 была введена встроенная поддержка фаззинг-тестирования.
📌 Основные правила для фаззинг-тестов в Go:
1. Название метода должно начинаться с FuzzXxx
, принимать только *testing.F
в качестве аргумента и не возвращать значение.
2. Название файла с фаззинг-тестами: *_test.go
.
3. Фаззинг target должна быть вызовом метода (*testing.F).Fuzz
, который принимает *testing.T
в качестве первого параметра, за которым следуют аргументы для фаззинга (не возвращает значение).
4. В одном фаззинг-тесте должна быть ровно одна фаззинг target.
5. Все элементы seed corpus должны иметь типы, идентичные аргументам для фаззинга, в том же порядке. Это касается вызовов (*testing.F).Add
и любых файлов corpus в директории testdata/fuzz
.
6. Аргументы для фаззинга могут быть только следующих типов:
- string
, []byte
- int
, int8
, int16
, int32/rune
, int64
- uint
, uint8/byte
, uint16
, uint32
, uint64
- float32
, float64
- bool
BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/427