Проблема масштабирования
По мере роста тестовых наборов время выполнения становится узким местом. 2-часовой набор — 2 часа ожидания. Оркестрация решает это интеллектуальным распределением тестов.
Test Sharding
Разделение набора на равные части и запуск каждой на отдельной машине.
Стратегии шардирования
| Стратегия | Как работает | Лучше всего для |
|---|---|---|
| Round-robin | Равномерное распределение по количеству | Однородная длительность |
| По длительности | Распределение по времени выполнения | Разная длительность |
| По файлам | Каждый шард получает полные файлы | Файлы с общим setup |
| По тегам | Шарды по категориям | Смешанные типы тестов |
Механизмы умного Retry
Правила Retry
- Ограничивайте retry до 1-2 — больше указывает на реальную проблему
- Логируйте все перезапуски — отслеживайте процент нестабильности
- Различайте причины — сетевой таймаут vs. сбой assertion
- Карантин хронически нестабильных — >5% сбоев требуют исправления
Приоритизация тестов
- Тесты, покрывающие недавно изменённый код
- Тесты, недавно упавшие
- Тесты критических бизнес-путей
- Новые тесты
- Стабильные тесты без недавних сбоев
Анализ влияния
Сопоставление изменений кода с затронутыми тестами, запуск только релевантных.
Упражнение: Оптимизируйте медленный набор
E2E-набор: 200 тестов, 90 минут на одной машине. Цель: менее 15 минут.
Решение
Шаг 1: Анализ текущего состояния
Категоризация по длительности, определение нестабильных, маппинг к фичам.
Шаг 2: Шардирование по длительности
8 шардов с балансировкой, ~11 минут на шард.
Шаг 3: Умные retry
1 retry в CI, карантин при >5% нестабильности.
Шаг 4: Отбор для PR
Только затронутые тесты + smoke (топ-20 критических путей).
Ожидаемые результаты
- Пайплайн PR: ~8 минут
- Полный набор: ~12 минут (8 шардов)
- Ночной: 90 минут (полное покрытие)
Ключевые выводы
- Sharding — самый быстрый способ сократить время
- Умные retry снижают нестабильность, но маскируют проблемы при злоупотреблении
- Анализ влияния даёт самый быстрый feedback на PR
- Отслеживайте метрики — длительность, процент нестабильности, баланс шардов
- Инвестируйте в инфраструктуру — быстрые машины и параллельные runners окупаются