Вопрос с собеседования · Frontend

Что делать с нестабильными (flaky) тестами?

MiddleВыкатка и эксплуатация
Ещё спрашивают так:
  • Почему тест то проходит, то падает?
Коротко

Нестабильный тест подрывает доверие ко всем тестам: команда привыкает перезапускать и пропускает настоящие ошибки. Частые причины: ожидание по времени (sleep) вместо условия, общие данные между тестами, порядок выполнения, зависимость от внешних сервисов и текущего времени, анимации, гонки в самом приложении. Лечение: найти причину по трассам и логам, ждать состояния, изолировать данные, подменить внешнее, заморозить время. Нестабильный тест помечают и чинят с владельцем и сроком, а не бесконечно перезапускают.

  • Автоматические повторы маскируют проблему — только как временная мера с учётом
  • Иногда тест нашёл настоящую гонку в продукте
  • Метрика: доля перезапусков в CI

Подробно

Пример: тест кликает «Сохранить» и сразу проверяет список, а запрос ещё не вернулся. Исправление — ждать появления элемента в списке, а не sleep(500).

Что хотят услышать

  • Почему вредны нестабильные тесты.
  • Типичные причины.
  • Поиск причины и карантин с владельцем.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Добавить sleep побольше, чтобы все асинхронные операции точно успели завершиться
  • ✓Найти причину (тайминги, общие данные, гонки) и ждать состояния; временно — карантин
  • ✗Удалить все тесты, которые хоть раз упали, и больше не тратить на них время на ревью и в CI
  • ✗Настроить бесконечные автоматические перезапуски

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования