| Работа с нестабильными тестами в Allure 3 |
| 19.06.2026 00:00 |
|
Михаил Ланкин, автор статей команды ТестОпс
Нестабильные (flaky) тесты создают постоянные трудности для тестировщиков. Такие тесты не отражают состояния тестируемой системы и подрывают доверие к тестовому набору. Вооружившись лучшими практиками, нестабильность можно свести к минимуму, но полностью избавиться от неё крайне трудно. Чтобы лучше её контролировать, нужны инструменты, позволяющие выявлять нестабильные тесты — например, Allure Report. В этом руководстве мы посмотрим, как Allure работает с нестабильными тестами:
Эту функциональность мы рассмотрим на примере PyTest, но все те же принципы работают и с другими фреймворками. Заодно мы познакомимся с Allure 3. Многие из вас наверняка пользуются Allure 2 — в третьей версии (помимо прочих изменений) работа с нестабильными тестами стала гораздо удобнее, в особенности настройка истории тестов. 1. ПодготовкаКод демонстрацииhttps://github.com/rattus-aristarchus/guide-allure-reruns Список зависимостейУстановкаПеред началом работы нужно установить: Затем необходимо создать новый проект Python или открыть существующий. В файл зависимостей ( Установим зависимости: 2. Пробные тестыЧтобы было на чём продемонстрировать возможности Allure, нам понадобится один нестабильный тест — и, для контраста, один стабильный: Поместим их в файл 3. История тестов в Allure ReportДля обнаружения нестабильных тестов Allure нужна история прошлых запусков. Эта история хранится в специальном файле Если Allure запускается на CI-сервере (например, Jenkins или GitHub Actions), история генерируется автоматически с помощью соответствующих плагинов. В ТестОпс — централизованной платформе на основе Allure — для работы с историей дополнительная настройка не требуется. При локальном запуске Allure 2 история требовала много ручной работы; в Allure 3 она была автоматизирована, и теперь достаточно указать путь к файлу истории в настройках. Создадим файл настроек Архитектура Allure 3 построена на плагинах; базовая функциональность инструмента содержится в плагине awesome. Убедимся, что история заработала; для этого выполним тесты. Тесты и генерация отчёта (а также создание файла истории) в Allure 3 выполняются одной командой: В нашем случае команда выглядит так: В флаге Выполним команду несколько раз, чтобы появилась история. В файле
Чтобы посмотреть отчёт, выполним
Кликнем имя теста (например,
Как видим, история работает и прошлые запуски отображаются. 4. Определение нестабильных тестовAllure определяет, что тест нестабилен, одним из двух способов:
Во втором случае критерии нестабильного теста такие:
Тесты, подходящие под критерии, можно легко определить на вкладке Результаты по специальному значку:
При желании можно отфильтровать дерево тестов, чтобы оно отображало только нестабильные тесты:
К этой функциональности Allure можно добавить инструмент, запускающий тесты в случайном порядке — например, плагин для PyTest pytest-random-order. Результаты тестов не должны зависеть от выполнения других тестов, поэтому это хорошая проверка на стабильность. 5. Повторы (Retries)Итак, мы нашли «моргающий» тест; что с ним делать? В идеале нужно проанализировать причины нестабильности и исправить тест. Это требует времени и внимания. Сейчас в этом могут помочь нейросети — но поработать всё равно придётся. Тест можно вручную поместить в «карантин» — добавить в коде аннотацию Наконец, тест часто перезапускают, чтобы исключить ложные падения. Allure 3 позволяет делать это «из коробки». Для этого к команде запуска тестов достаточно добавить флаг Итоговый отчёт будет выглядеть так:
Как видите, наш
6. ЗаключениеНестабильные тесты — известная проблема, и индустрия разработала множество инструментов для борьбы с ней. Allure 3 позволяет:
Про Allure 3 можно писать много — благодаря модульной архитектуре у него огромное пространство для экспериментов, и у нас наверняка будут ещё поводы поговорить о нём. |