Тема
Результаты и разбор падений
Результаты автотестов живут в прогонах. Эта страница о том, как читать карточку результата, разбирать причины падений через кластеры ошибок, сравнивать прогоны и следить за стабильностью. Пошаговый разбор упавшего прогона — в сценарии Разбор упавших автотестов.
Карточка результата автотеста
Откройте прогон и выберите автотест в таблице — карточка результата откроется в панели справа. Эту же карточку в режиме чтения открывают история прогонов в карточке автотеста каталога и список тестов кластера ошибок; из неё кнопка «Открыть в прогоне» ведёт к оригиналу.
У автотестов исполнителем указана «Автоматизация» — их результаты не редактируются вручную. Пока результаты обрабатываются, вместо карточки показывается заглушка «Результаты автотестирования все еще обрабатываются. Это может занять несколько минут — пожалуйста, подождите.»
Состав карточки
Сверху вниз:
- конфигурация прогона и типизированные ссылки результата, если они переданы;
- сводка попыток — см. Попытки;
- таймлайн запуска — фазы от отправки команды в CI до получения отчёта, с длительностью каждой;
- карточка ошибки — см. ниже;
- дерево шагов и фикстур, если шаги были переданы: группы Setup → Test body → Teardown, упавшие узлы раскрыты сразу, у шагов видны длительность, параметры и вложения (шаги умеют отправлять адаптеры и Autotest API);
- «Output» — вывод теста; свёрнут и скрывается, если дословно дублирует стек-трейс;
- вложения: скриншоты открываются в полноэкранном просмотре, видео проигрываются в карточке, трейсы скачиваются файлом;
- параметры из отчёта;
- обсуждение: кнопки «Добавить баг» и «Добавить комментарий», добавленные баг-репорты и комментарии;
- свойства автотеста из отчёта.
Карточка ошибки
Для упавших, сломанных и заблокированных результатов секция называется «Ошибка». Для остальных — «Сообщение», и карточка оформляется нейтрально: у прошедшего теста текст из отчёта — информационное сообщение, а не падение. Ошибка показывается всегда, когда она есть в отчёте, независимо от статуса результата.
В карточке: тип исключения, сообщение с кнопкой копирования и свёрнутый стек-трейс (переключатель «Стектрейс») с подсветкой синтаксиса.
Если парсер не смог разобрать сам результат, DoQA показывает отдельную предупреждающую карточку «Ошибка обработки отчёта» — это проблема отчёта, а не теста.
Когда падение попало в кластер, над карточкой ошибки выводится блок кластера: заголовок, категория причины и ссылка «Similar failures (cluster)», открывающая этот кластер на вкладке «Кластеры ошибок».
Попытки
Один автотест в прогоне может пройти несколько раз: авто-ретрай, перезапуск из DoQA, ручное перепрохождение или ретрай самого тестового фреймворка. Все попытки сохраняются; итог теста и вся статистика считаются по последней.
В списке попыток: номер, источник попытки, статус, отметка нестабильности, время, исполнитель и ссылка на пайплайн. У любой не прошедшей попытки есть кнопка «Подробнее» — внутри её собственные таймлайн, шаги, лог и вложения.
Тест, прошедший только после перезапуска, получает отметку «Passed after retry» — такие результаты учитывает детекция нестабильных. Правила автоматических перезапусков — на странице Автоматика запусков, перепрохождение одного автотеста — на странице Запуск автотестов из DoQA.
Матрица окружений
У прогона с автотестами есть вкладка «Матрица окружений» — таблица «автотест × окружение»: статус в каждом окружении, число попыток и отметка «Passed after retry». Матрица заполняется, когда пайплайны передавали окружение; без таких данных вкладка показывает пустое состояние. Покрытие обязательных окружений может проверять и критерий приёмки прогона.
Кластеры ошибок
Вкладка «Кластеры ошибок» раздела «Автотесты» группирует падения автотестов пространства по сигнатуре ошибки: вместо сотен одинаковых красных тестов — короткий список причин. Группировка детерминированная — нормализация текста ошибки плюс настраиваемые правила, без машинного обучения.
Кластеризация выполняется после завершения CI-прогона, поэтому свежие падения появляются на вкладке не мгновенно; список обновляется при повторном открытии страницы.
Категории причин
Каждому кластеру назначается бакет — класс причины падения:
| Бакет | Смысл |
|---|---|
| «Продукт» | баг продукта |
| «Автоматизация» | сломанный тест |
| «Окружение» | проблема окружения или сервиса |
| «Без категории» | не совпало ни одно правило |
Правила категоризации настраиваются в настройках пространства, секция «Error categories»: регулярное выражение, к чему его применять (сообщение, стек-трейс или оба), бакет и приоритет — правила проверяются по возрастанию приоритета, побеждает первое совпавшее. Поле примера позволяет проверить паттерн на реальном сообщении прямо при вводе.
Работа со списком
- Тайлы-фильтры по бакетам: «Все кластеры», «Окружение», «Продукт», «Автоматизация», «Без категории». Отдельный тайл «Скрытые (known issues)» включает скрытые кластеры в список — то же, что тумблер «Показывать known issues».
- Сегмент оформленности: всего, не оформлены, оформлены (кластер оформлен как известная проблема — привязан баг-репорт или тикет трекера).
- Период (7, 30, 90 дней или всё время), поиск по типу и сообщению ошибки, сортировка по падениям за период или по свежести, тумблер «Показывать known issues».
- Строка кластера: тип исключения и сообщение, бейдж бакета, мини-тренд, падения за период и за всё время, последнее падение и состояние — бейдж связанного бага, метка «Reopened», метка «hidden» либо призыв «Оформить».
Клик по кластеру открывает панель: сигнатура с копированием, показатели (падения за период и всего, уникальных тестов, из них нестабильных, первое и последнее падение), крупный тренд по прогонам и список тестов кластера с фильтром «Только упавшие» — клик по тесту открывает карточку результата.
Кластер и баг-репорт
Баг кластера — это обычный баг-репорт раздела «Баги». Оформить его можно двумя способами:
- «Завести баг» — открывает форму баг-репорта, заполненную по представительскому падению кластера; созданный баг автоматически связывается с кластером;
- «Привязать баг» — связать кластер с существующим багом пространства или с тикетом трекера по ключу.
После оформления на кластере появляется плашка «Оформлен как дефект» с настройками связки:
- «Auto-hide in next runs» — падения кластера скрываются из списка (возвращаются тумблером «Показывать known issues») и исключаются из оценки критериев приёмки;
- «Reopen on regression» — если баг уже закрыт, а кластер упал снова, связка помечается «Reopened», и DoQA автоматически переоткрывает баг;
- «Отвязать кластер» — снимает связь; после отвязки последнего кластера связка удаляется, а баг остаётся обычным багом.
Внимание
Пока связка с включённым «Auto-hide in next runs» открыта, падения кластера не блокируют Quality Gate. Это удобно для известных проблем, но помните: гейт может оставаться зелёным при реально падающих тестах.
Связка видна и со стороны бага: в списке багов у багов из кластера есть отметка и фильтр «Источник», а в карточке бага — секция «Кластеры ошибок» с теми же настройками и отвязкой.
Стабильность и карантин
По каждому автотесту DoQA считает стабильность между прогонами: процент успешных прохождений, смены исхода и итоговое состояние. Смотреть их удобнее всего в каталоге автотестов: риск-полоса последних десяти прогонов, процент стабильности и бейдж нестабильности в таблице, а в карточке автотеста — статкарта, история прогонов и журнал переходов состояния.
Хронически нестабильный тест можно отправить в карантин из каталога или карточки автотеста. Карантинный автотест исключается из статистики стабильности и из оценки критериев приёмки, пока карантин не снят.
Сравнение прогонов
Чтобы понять, что изменилось между двумя прогонами, выберите ровно два прогона в списке и нажмите «Сравнить». Сравнивать можно только прогоны одного пространства, и в обоих должны быть результаты автотестов.
Тесты двух прогонов сопоставляются по автотесту каталога (внешнему ID); результаты без привязки к каталогу показываются отдельными счётчиками. Каждому тесту присваивается класс изменения:
| Класс | Смысл |
|---|---|
| «Regressed» | проходил в A, упал в B |
| «New» | появился только в B |
| «Still failing» | падает в обоих прогонах |
| «Fixed» | падал в A, прошёл в B |
| «Disappeared» | был в A, отсутствует в B |
| «Status changed» | прочие изменения статуса |
| «Unchanged» | без изменений; по умолчанию скрыты |
На странице: карточки прогонов A и B (ветка, коммит, окружение, статус пайплайна), сводка с кликабельными счётчиками по классам, суммарная разница длительности, тумблеры «Only changes» и «Flaky only», фильтр окружения и поиск. В таблице — статусы A → B (клик открывает результат в соответствующем прогоне), разница длительности и число попыток каждой стороны.
Незавершённый прогон сравнивается по текущему состоянию — DoQA предупреждает, что дифф может измениться. Всё состояние страницы хранится в адресе, поэтому ссылкой на сравнение можно поделиться.
Аналитика по автотестам
Вкладка «Автотесты» дашборда пространства собирает аналитику парка: доля автоматизации, доля нестабильных, полоса здоровья, покрытие по папкам, тренды прохождений и длительности, доля перезапусков и экономия времени CI, топ падающих тестов, топ кластеров ошибок, самые долгие тесты и лента CI-запусков.
Смотрите также
- Разбор упавших автотестов — пошаговый сценарий работы с упавшим прогоном
- Каталог автотестов — стабильность, карантин и карточка автотеста
- Автоматика запусков — авто-ретрай и критерии приёмки
- Прогоны — плеер прогонов и работа с автотестами в прогоне
- Баги — работа с баг-репортами