Немного о автотестах (unit, e2e)
Очень часто автотесты воспринимают исключительно как инструмент предотвращения багов или попытку сделать копию вашего ручного тестировщика только на языке программирования. Это очень большое и вредное заблуждение. Каждый разработчик должен уметь владеть тестами в первую очередь для решения сразу множества проблем:
Дебаг кода — запуск конкретного участка кода в изолированной среде вместо прокликивания всего приложения
Автоматизация репродюса — превращение шагов воспроизведения бага в запускаемый скрипт, который можно гонять сколько угодно раз
Работа с mock-данными — быстрая генерация нужных состояний и данных без зависимости от внешних сервисов и БД
Безопасный рефакторинг — уверенность, что изменения внутренней структуры не ломают внешнее поведение
Исследование legacy-кода — способ понять, что делает незнакомый код, через эксперименты с вводом и выводом
Проверка граничных случаев — систематическая проверка null, пустых коллекций, переполнений и прочих крайних сценариев
Изоляция компонентов — возможность запустить один модуль отдельно от всего приложения и проверить именно его логику
Изучение сторонних библиотек — написание маленьких тестов для проверки гипотез о поведении чужого кода
Ускорение онбординга — новый разработчик читает тесты и быстро понимает сценарии использования системы
Уверенность при деплое — зелёный CI даёт объективное основание катить релиз, а не полагаться на интуицию
Фиксация требований — бизнес-правила, выраженные в тестах, становятся исполняемой спецификацией, а не абзацем в Confluence
Живая документация — тесты описывают реальное поведение системы и, в отличие от комментариев, не устаревают незаметно
Проектирование API — написание теста до реализации заставляет продумать интерфейс с точки зрения потребителя
Валидация архитектурных решений — если код тяжело тестировать, это сигнал о проблемах в архитектуре
Цитата из статьи Нет времени на тесты — через неделю релиз











