При триаже часто повторяется одна и та же история: разработчик открывает тест, читает, смотрит стак-трейс, через 5 минут понимает — «а, это та самая инфра-ошибка». Закрывает. Через час сюиту запускает тестировщик, открывает тест, читает, смотрит стак-трейс. Думает, вспоминает, закрывает.
Падения тестов от повторяющихся ошибок — постоянная нагрузка и постоянные издержки. Тест можно отправить в карантин, но тогда он перестаёт приносить полезную нагрузку, а проверять карантин — отдельные трудозатраты. Так или иначе, люди отвлекаются, приходится снова и снова менять контекст, и это съедает львиную долю рабочего дня.
ИИ не решил, а пока только умножил эти проблемы. Нейросети ускорили разработку — а вот разогнать тестирование оказалось гораздо сложнее. На горизонте маячат разные проекты по ИИ-анализу ошибок, и кто-то их уже внедряет, но даже таким системам нужна инфраструктура, которая хранила бы причины ошибок отдельно от самих падений.
Такая инфраструктура уже существует, хоть работает она пока на регулярных выражениях, а не на нейросетях. В самой простой форме это — категории в Allure Report (об этом подробнее здесь). По этому же принципу в платформе ТестОпс была создана фича дефектов, которая позволяет тестировщикам работать только с новыми падениями. В этом руководстве мы покажем, как выглядит триаж, при котором не приходится тратить время на старые ошибки.
ИИ не решил, а пока только умножил эти проблемы. Нейросети ускорили разработку — а вот разогнать тестирование оказалось гораздо сложнее. На горизонте маячат разные проекты по ИИ-анализу ошибок, и кто-то их уже внедряет, но даже таким системам нужна инфраструктура, которая хранила бы причины ошибок отдельно от самих падений.
Такая инфраструктура уже существует, хоть работает она пока на регулярных выражениях, а не на нейросетях. В самой простой форме это — категории в Allure Report (об этом подробнее здесь). По этому же принципу в платформе ТестОпс была создана фича дефектов, которая позволяет тестировщикам работать только с новыми падениями. В этом руководстве мы покажем, как выглядит триаж, при котором не приходится тратить время на старые ошибки.
Подготовка проекта
Чтобы начать работу, нужно создать проект в ТестОпс — а для него необходим репозиторий с тестами. Для этого руководства мы будем использовать демонстрационную сюиту с искусственно созданными ошибками. С готовым репозиторием сделайте следующее:
На этом подготовка завершена, и можно начинать разбор падений.
- cоздайте проект в ТестОпс
- cвяжите проект с репозиторием сюиты на GitHub (если ваши тесты в другой CI-системе, инструкции для них лежат в документации)
- запустите воркфлоу с тестами в GitHub Actions, чтобы сами тесты и их результаты появились в ТестОпс
На этом подготовка завершена, и можно начинать разбор падений.
Отображение неразобранных результатов
В ТестОпс вся работа по триажу идёт во вкладке «Запуски»:
Щелкните по запуску, чтобы открыть его обзор. Там все неразобранные падения коротко перечислены в отдельном виджете:
Чтобы начать работу с тестом, щёлкните по нему. Откроется вкладка с подробными результатами:
Здесь отфильтрованы падения, не связанные с какой-то причиной. Именно это значит фильтр «Без резолюции»:
Но что такое дефекты и как они помогают сортировать результаты тестов?
- упавшие тесты,
- которые не попали в карантин,
- и не привязаны к какому-либо дефекту.
Но что такое дефекты и как они помогают сортировать результаты тестов?
Создание дефекта
Дефекты в ТестОпс — это известные причины падений, к которым система автоматически привязывает новые падения, читая стак-трейсы и сообщения об ошибках.
При триаже от системы чаще всего нужны следующие действия:
Всё это есть на панели теста во вкладке «Результаты тестов», если запуск открыт (если нет, его нужно открыть снова). Щелкните по кнопке «Связать с дефектом»:
При триаже от системы чаще всего нужны следующие действия:
- перезапустить тест, чтобы убедиться, что это не флаки
- поместить тест в карантин, если сбой ложный и быстро тест не починить
- связать результат падения с известной проблемой
Всё это есть на панели теста во вкладке «Результаты тестов», если запуск открыт (если нет, его нужно открыть снова). Щелкните по кнопке «Связать с дефектом»:
По клику откроется панель поиска дефекта. Для создания нового дефекта нужно ввести имя в поисковой строке — появится кнопка «Создать»:
Щелкните по ней, чтобы открыть панель создания дефекта:
Здесь можно связать дефект с задачами из баг-трекеров и создать правило автоматизации: это регулярное выражение, с помощью которого система автоматически обнаруживает дефекты по сообщениям об ошибках и стак-трейсам.
Дефект также можно было создать в разделе «Дефекты» — но если делать это через результаты тестов, то при создании правила автоматизации система показывает нужное сообщение об ошибке.
Итак, дефект создан, и в новых запусках система будет искать его автоматически. Но как быть с тем прогоном, в котором сейчас идёт работа?
Чтобы применить дефект в нём, нужно открыть страницу с запуском и щёлкнуть по кнопке «...». Откроется выпадающее меню с кнопкой «Искать дефекты» (запуск для этого должен быть открыт):
Дефект также можно было создать в разделе «Дефекты» — но если делать это через результаты тестов, то при создании правила автоматизации система показывает нужное сообщение об ошибке.
Итак, дефект создан, и в новых запусках система будет искать его автоматически. Но как быть с тем прогоном, в котором сейчас идёт работа?
Чтобы применить дефект в нём, нужно открыть страницу с запуском и щёлкнуть по кнопке «...». Откроется выпадающее меню с кнопкой «Искать дефекты» (запуск для этого должен быть открыт):
Нажмите «Искать дефекты», и система заново проанализирует все падения запуска, чтобы связать их с новым дефектом. В карточке дефекта появятся связанные с ним падения:
Проверка работы дефекта
Как проверить, правильно ли система связала падения с дефектами? На вкладке «Обзор» в запуске видны все обнаруженные в нём дефекты:
Щелкните по дефекту, чтобы открыть вкладку «Результаты тестов» со всеми связанными падениями:
Здесь применён фильтр по дефекту. Теперь можно пройти по каждому падению и решить, правильно ли оно связано с дефектом.
Коротко о главном
Триаж в ТестОпс настроен для максимального удобства тестировщика:
- Система сама распределяет ошибки по известным причинам.
- Неразобранные ошибки видны в виджете «Неразобранные результаты» во вкладке «Обзор» или в результатах тестов с включённым фильтром «Без резолюции».
- На панели результатов тестов можно принять решение по каждой ошибке — перезапустить, отправить в карантин или связать с существующим дефектом.
- При необходимости там же можно создать дефект.
- Новый дефект применится автоматически в новых запусках или его можно одним кликом применить к уже существующим прогонам.
- Чтобы проверить, правильно ли ошибки связаны с дефектами, достаточно применить фильтр дефекта в результатах тестов.
В результате время, которое занимает триаж, становится пропорционально не количеству падений, а количеству причин падений.