Тестирование#
Как тестируют на Go: table-driven тесты, моки без магии, -race, бенчмарки, fuzzing и интеграционные тесты в Docker.
Оглавление#
Статьи идут в порядке чтения: от базы к деталям. Всего 7 статей.
- Table-driven тесты, subtests и параллельность — Table-driven тест — это список «вход → ожидаемый результат» и один цикл, который прогоняет через проверяемую функцию все строки списка.
- testify, assert/require и golden files — Во встроенном пакете тестирования Go нет ассертов: тест сам сравнивает значения и зовёт
t.Errorf, если не сошлось. - Моки, стабы и тестируемость — Мок — подставная реализация зависимости, которую тест подсовывает коду вместо настоящей базы данных или HTTP-клиента.
- Покрытие, -race и флаки-тесты — Покрытие показывает, какие строки кода исполнялись во время тестов.
- Бенчмарки в Go — Бенчмарк — функция, которая крутит измеряемый код
b.Nраз, причёмb.Nподбирает сам Go: увеличивает, пока замер не станет достаточно длинным, чтобы ему… - Нативный fuzzing в Go (1.18+) — Фаззинг — автоматическая генерация входных данных в попытке уронить твой код.
- Интеграционные тесты, testcontainers-go, TestMain — Интеграционный тест проверяет код против настоящей базы, а не против мока.