Блог

Перезапуск упавших автотестов — ТестОпс

Выборочный перезапуск результатов автотестов внутри одного открытого запуска внутри ТестОПс

Регрессионный запуск почти завершён: большая часть проверок успешна, но несколько автотестов получили статусы «Неуспешный» (failed) или «Сломанный» (broken). Команде нужно проверить эти падения, а не весь набор. Полный прогон повторит уже успешные тесты, а локальная проверка может пройти в другом окружении и остаться вне общего отчёта.
Выборочный rerun — перезапуск выбранных результатов после их анализа — решает именно эту задачу. ТестОпс передаёт тесты связанным джобам, а новые попытки возвращаются в исходный запуск. Общая модель системы управления тестированием (TMS) разобрана в статье «Тестовые запуски в TMS ТестОпс: CI/CD, статусы и результаты». Здесь — только повторное выполнение выбранных автотестов.

Почему полный перезапуск не всегда нужен для проверки нескольких падений

Если проверить нужно несколько результатов, полный запуск всего набора снова расходует ресурсы CI на уже успешные тесты и создаёт отдельный отчёт для сопоставления. Масштаб действия не соответствует задаче.
Локальная проверка быстрее, но может использовать другую версию приложения, данные или окружение, а её результат не обязательно вернётся в исходный запуск. Отдельная джоба CI тоже способна выполнить выборку, если это поддерживает пайплайн, но связь с первоначальным результатом зависит от интеграции.
Полный прогон нужен, когда требуется заново подтвердить весь объём покрытия. Эффект точечного перезапуска можно оценить на данных команды:
Выигрыш по времени ≈ длительность полного повторного прогона − длительность выбранных тестов − накладные расходы запуска джоб
Это зависит от старта пайплайна, зависимостей и параллелизма. Механизм не обещает одинаковую экономию каждому проекту, но убирает заведомо лишнее выполнение.

Что именно перезапускает ТестОпс и какой контекст сохраняет

Тестовый запуск хранит контекст проверки и результаты. Результат теста фиксирует отдельную попытку. Джоба связывает проект ТестОпс с CI-пайплайном: передаёт параметры, запускает автотесты и принимает результаты обратно.
Интерфейс системы управления тестированием: поверх списка тест-кейсов открыто модальное окно «Новый запуск» с вкладками «Детали», «Окружения», «Джобы», полями «Название», «Релиз», «Теги» и кнопками «Отменить» и «Создать»; окно выделено красной рамкой.
Создание нового запуска в TMS: в диалоге «Новый запуск» заполняются название, релиз и теги, задаются параметры джобы, после чего тест-кейс отправляется на выполнение кнопкой «Создать».
Когда инженер выбирает автотесты и запускает действие «Перезапустить», ТестОпс не создаёт для них новый тестовый запуск. Система создаёт новые запуски связанных джоб, инициирует соответствующие пайплайны и добавляет полученные результаты в текущий запуск. Если ID и окружение совпадают, новая попытка продолжает историю прежнего результата.
Селективный запуск заранее формирует набор для новой проверки. Сравнение отдельных тестовых запусков ищет изменения между прогонами. Выборочный перезапуск решает более узкую задачу: перепроверяет готовые результаты внутри одного открытого запуска.

Что настроить до выборочного перезапуска автотестов

Для передачи выбранных результатов между TMS и CI/CD необходимо соблюдение пяти условий:
  1. Запуск в ТестОпс имеет статус «Открыт» и содержит результаты автоматизированных тестов.
  2. Интеграция с CI-системой настроена.
  3. CI-пайплайн передаёт результаты выполнения тестов в ТестОпс.
  4. Для связанных джоб доступен запуск из интерфейса ТестОпс.
  5. В запуске доступны поиск и выбор результатов, которые требуется перепроверить.
При ручном создании джобы для неё должен быть активирован параметр «Может запускать тесты». Совместимость CI-интеграции, тестового фреймворка и адаптера определяется документацией используемого стека.
Окно создания джобы в ТестОпс с выделенной настройкой «Может запускать тесты».
Настройка разрешения на запуск тестов при создании джобы в ТестОпс.
Закрытый запуск можно перевести в статус «Открыт» — при этом меняется состояние существующего запуска, а новый не создаётся. После повторных попыток снова закройте запуск: ТестОпс обрабатывает результаты и пересчитывает проектную статистику после закрытия.

Как перезапустить один упавший автотест в текущем запуске

Для повторного выполнения одного автоматизированного теста через CI-систему используется следующий путь:
  1. В проекте ТестОпс открывается раздел «Запуски».
  2. В списке выбирается нужный запуск.
  3. Внутри запуска открывается вкладка «Результаты тестов».
  4. Для нужного результата вызывается меню .
  5. В меню последовательно выбираются пункты «Перезапустить» → «Перезапустить».
Интерфейс ТестОпс с открытым разделом «Запуски»: список тестовых запусков со статусами «Закрыт», количеством результатов и кнопками запуска и дополнительных действий.
Раздел «Запуски» в ТестОпс со списком тестовых запусков и их статусами.
Если включить переключатель «Пройти вручную», автоматизированный тест станет ручным прохождением и не будет запущен в CI-системе.

Как перезапустить несколько упавших автотестов

Если нужно перепроверить несколько результатов, они находятся с помощью поиска и фильтров на вкладке «Результаты тестов», затем отмечаются галочками и выбираются на панели массовых операций «⋯ → Перезапустить».
Для автоматического перезапуска переключатель «Пройти вручную» остаётся выключенным. Само действие же завершается подтверждением с кнопки.
ТестОпс создаёт новые запуски связанных джоб, CI-система выполняет выбранные автотесты и отправляет результаты в текущий тестовый запуск. Полный маршрут приведён в официальной инструкции по выборочному перезапуску.

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

Новый результат заменяет предыдущий в статистике запуска, но не удаляет его. Исходная попытка сохраняется как перезапуск, поэтому команда видит не только актуальный статус, но и путь к нему.
Сущность
Что происходит после выборочного перезапуска
Тестовый запуск
Остаётся тем же
Запуск связанной джобы
Создаётся заново
Результат в статистике запуска
Обновляется новой попыткой
Предыдущая попытка
Сохраняется в истории перезапусков
Окружение
Должно совпадать, чтобы попытки образовали одну цепочку
Виджет Перезапуски тестов на вкладке Обзор сопоставляет прошлый и текущий статусы. Вкладка Перезапуски в карточке результата показывает попытки конкретного теста.
Перезапуски тестов» в обзоре запуска ТестОпс без выполненных перезапусков
История перезапусков тестов отображается в обзоре запуска ТестОпс.
ТестОпс связывает попытки по одинаковым ID и окружению. Результаты из разных окружений не объединяются: при смене браузера, ОС, стенда или другой учитываемой переменной система создаст отдельный результат. Так проверки в разных условиях не смешиваются.

Как интерпретировать повторную попытку и не принять её за диагноз

Перезапуск показывает, повторился ли результат, но не определяет причину. Цепочку попыток нужно читать вместе с ошибкой, шагом падения, артефактами и окружением.
  • failed → failed: отклонение воспроизвелось, но причина всё ещё может находиться в продукте, тесте, данных или инфраструктуре.
  • failed → passed: симптом не воспроизвёлся. Это сигнал проверить нестабильность, но не доказательство flaky-теста.
  • Ошибка, шаг или статус изменились: попытки показывают разные симптомы, а не простой переход «красный → зелёный».
Статусы результатов в ТестОпс задают первую гипотезу. failed означает неожиданное поведение системы при корректном выполнении теста. broken указывает, что тест не выполнил задуманную проверку из-за дефекта теста; это не доказательство ошибки продукта.
Дальше команда проверяет инфраструктуру, исправляет автотест, регистрирует дефект или временно изолирует нестабильный тест. Перезапуск добавляет наблюдение. Решение принимает команда.

Чем выборочный rerun отличается от retry, карантина и сравнения запусков

Механизмы отвечают на разные вопросы и могут применяться последовательно.
Механизм
Когда он нужен
Выборочный rerun
Перепроверить конкретные результаты через CI/CD и сохранить попытки в исходном открытом запуске
Retry во фреймворке
Автоматически повторить тест во время выполнения по заданной политике
Карантин
Временно исключить тест-кейс и связанные результаты из статистики с указанием причины
Сравнение запусков
Найти изменения состава и статусов между отдельными тестовыми запусками
Полный повторный прогон
Заново подтвердить весь набор тестов и условия его выполнения
Если успешные повторы становятся регулярными, нужны лимит попыток, артефакты, владелец проблемы и критерии карантина. Подробнее — в статье о retry policy и карантине flaky-тестов. В ТестОпс карантин применяется к тест-кейсу, а не к отдельной попытке.

Коротко о главном

ТестОпс позволяет выбрать упавшие автотесты в открытом запуске и повторно выполнить их через CI/CD. Новая попытка обновляет статистику, предыдущая остаётся в истории, а совпадающее окружение сохраняет одну цепочку. Причину падения и следующее действие определяет команда.

ЧAстые ВОпросы о перезапуске упавших автотестов:

  • Можно ли перезапустить только тесты со статусом failed

Да. Для этого нужно отфильтровать результаты со статусом failed, выбрать нужные автотесты и кликнуть «Перезапустить». Механизм также работает с другими выбранными автоматизированными результатами.

  • Создаётся ли новый тестовый запуск ТестОпс

Нет. Создаются новые запуски связанных джоб, а результаты возвращаются в текущий тестовый запуск.

  • Сохраняется ли исходное падение после успешного перезапуска

Да. Новая попытка заменяет его в статистике, но исходный результат остаётся в истории.

  • Что произойдёт, если изменится окружение

ТестОпс создаст отдельный результат. Попытки объединяются только при одинаковых ID и окружении.

  • Доказывает ли переход failed → passed, что тест нестабилен

Нет. Симптом не воспроизвёлся, но для вывода нужны история и сопоставимые условия.

  • Что делать, если запуск уже закрыт

Следует открыть существующий запуск заново, выполнить rerun и после получения результатов снова закрыть его.