Flaky tests и стабильность
Flaky-тест иногда проходит, иногда падает без изменения продукта. Это разрушает доверие к автоматизации: команда перестаёт реагировать на красный pipeline. Flaky нужно не терпеть, а диагностировать как дефект тестовой системы.
Что важно понять
- Нестабильные ожидания, race conditions, async события, fixed sleeps.
- Данные, которые меняются между запусками или конфликтуют в параллели.
- Окружение: медленная сеть, нестабильный стенд, device farm, сторонние сервисы.
- Порядок тестов, shared state и недостаточный cleanup.
Рабочий порядок
- Соберите историю падений: частота, окружение, шаг, error signature.
- Воспроизведите тест несколько раз локально и в CI.
- Изолируйте причину: test bug, product bug, environment issue.
- Исправьте ожидания, данные или инфраструктуру; только затем добавляйте retry.
Что отдавать команде
- Flaky report с категорией причины.
- Список quarantined tests с владельцами.
- Метрика flaky rate по suite.
Частые провалы
- Считать retry полноценным исправлением.
- Оставлять flaky в release gate.
- Обвинять продукт без анализа тестовых данных и ожиданий.
Практика
Возьмите один нестабильный тест и классифицируйте падения за десять запусков: timing, data, environment, product. Только после этого меняйте код.