Проблема масштабирования

По мере роста тестовых наборов время выполнения становится узким местом. 2-часовой набор — 2 часа ожидания. Оркестрация решает это интеллектуальным распределением тестов.

Test Sharding

Разделение набора на равные части и запуск каждой на отдельной машине.

Стратегии шардирования

СтратегияКак работаетЛучше всего для
Round-robinРавномерное распределение по количествуОднородная длительность
По длительностиРаспределение по времени выполненияРазная длительность
По файламКаждый шард получает полные файлыФайлы с общим setup
По тегамШарды по категориямСмешанные типы тестов

Механизмы умного Retry

Правила Retry

  1. Ограничивайте retry до 1-2 — больше указывает на реальную проблему
  2. Логируйте все перезапуски — отслеживайте процент нестабильности
  3. Различайте причины — сетевой таймаут vs. сбой assertion
  4. Карантин хронически нестабильных — >5% сбоев требуют исправления

Приоритизация тестов

  1. Тесты, покрывающие недавно изменённый код
  2. Тесты, недавно упавшие
  3. Тесты критических бизнес-путей
  4. Новые тесты
  5. Стабильные тесты без недавних сбоев

Анализ влияния

Сопоставление изменений кода с затронутыми тестами, запуск только релевантных.

Упражнение: Оптимизируйте медленный набор

E2E-набор: 200 тестов, 90 минут на одной машине. Цель: менее 15 минут.

Решение

Шаг 1: Анализ текущего состояния

Категоризация по длительности, определение нестабильных, маппинг к фичам.

Шаг 2: Шардирование по длительности

8 шардов с балансировкой, ~11 минут на шард.

Шаг 3: Умные retry

1 retry в CI, карантин при >5% нестабильности.

Шаг 4: Отбор для PR

Только затронутые тесты + smoke (топ-20 критических путей).

Ожидаемые результаты

  • Пайплайн PR: ~8 минут
  • Полный набор: ~12 минут (8 шардов)
  • Ночной: 90 минут (полное покрытие)

Ключевые выводы

  1. Sharding — самый быстрый способ сократить время
  2. Умные retry снижают нестабильность, но маскируют проблемы при злоупотреблении
  3. Анализ влияния даёт самый быстрый feedback на PR
  4. Отслеживайте метрики — длительность, процент нестабильности, баланс шардов
  5. Инвестируйте в инфраструктуру — быстрые машины и параллельные runners окупаются