Привет, Хабр! Сегодня с вами Анна Асабина, главный инженер по тестированию, и Ольга Султанова, руководитель  направления тестирования в Рунити.

Мы расскажем о нашем опыте внедрения метрик в тестировании: какие метрики для нас работают, зачем мы автоматизировали их сбор и что в итоге изменилось.

Навигация по тексту:

Как мы пришли к метрикам

Когда метрики нужны — обычно уже поздно. Данные требуются «ещё вчера», и команда начинает судорожно собирать их вручную. Так было и у нас: менеджеры просили показать загрузку тестировщиков или эффективность тестирования, а я вместо анализа багов часами ковырялась в Jira, выгружая данные.

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

Этот момент стал для нас переломным — стало понятно, что без метрик и автоматизации дальше двигаться нельзя.

Вопрос «зачем собирать метрики» быстро сменился другим:  «Как собирать их так, чтобы это не отнимало рабочее время». Сейчас метрики стали нашим важным инструментом: мы всегда знаем текущее качество продукта, контролируем процесс и заранее видим проблемные зоны.

Признаки «правильной» метрики

Мы много экспериментировали и в итоге оставили только те метрики, которые дают реальную пользу. У нас сформировались три критерия:

  1. Полезность. Метрика должна отвечать на конкретный вопрос бизнеса или продукта.

  2. Прозрачность. Процесс сбора понятен всем: от тестировщика до менеджера.

  3. Масштабируемость. Метрику можно адаптировать для других команд и продуктов.

Процессные метрики

«Светофор нагрузки»

Каждый месяц тестировщики в Rocket.Chat (наш внутренний корпоративный мессенджер) отмечают свою загруженность:

  • зелёный — всё в порядке;

  • жёлтый — есть сложности, но работа идёт;

  • красный — перегруз, нужен пересмотр процессов.

Если несколько месяцев подряд горит красный — это повод вмешаться до того, как человек выгорит.

Соотношение разработчиков и тестировщиков

Мы отслеживаем, сколько разработчиков приходится на одного тестировщика. В продуктовых командах рост этого показателя — сигнал, что нагрузка на тестирование может выйти из-под контроля.

Количество тикетов на тестировщика

Каждый вторник в Rocket.Chat приходит уведомление: фамилия, команда, количество назначенных задач. Источник — данные из Jira API. Метрика помогает планировать нагрузку и перераспределять ресурсы.

Метрики дефектов

Мы используем шесть метрик:

  1. Баги в старом коде — стабильность продукта. Отслеживаются по метке PROD в Jira и выводятся в Grafana.

  2. Баги до релиза — качество тестирования до выкатки. Считаются по внутренней метке «баг».

  3. Баги после релиза — указывают на недоработки, которые просочились в прод. В ближайшее время хотим доработать метрику: учитывать, кто нашёл баг (тестировщик, менеджер и т. д.).

  4. Баги, найденные автотестами — эффективность автоматизации.

  5. Критичные баги — дефекты в важном функционале (метка CRIT). В идеале — ноль.

  6. Доля отфильтрованных дефектов — насколько хорошо тестирование отсеяло баги до релиза.

По этой формуле мы рассчитываем баги.
По этой формуле мы рассчитываем баги.

Для наглядности все данные выводятся в Grafana. Это система мониторинга и визуализации, которая превращает цифры из баз данных и API в удобные графики и дашборды. Благодаря ей мы сразу видим динамику и можем анализировать тренды.

Метрики автотестов

Покрытие кейсов автотестами

В TestRail тестировщики помечают автоматизированные кейсы (automation type = automated). Через TestRail API данные попадают в БД, и Grafana показывает процент покрытия.

Покрытие автотестами в штуках

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

Процент может вводить в заблуждение: 90 % покрытия для небольшого модуля — это всего 9 тестов, а 50 % для крупного — уже 50. Поэтому важно смотреть на обе метрики вместе — процент и количество.

Запуск и сбор данных автоматизирован через GitLab CI: результаты сборок и прогонов тестов поступают в Rocket.Chat.

Хрупкость сборок

Метрика отслеживает нестабильные тесты. Если в сборке слишком много «флаки», команда рефакторит сценарии. Порог — не более 5%.

Средняя продолжительность сборок

Важно понимать, сколько времени занимает прогон. Это помогает планировать регрессионное тестирование перед релизом.

Автоматизация: как мы это сделали

Когда стало понятно, что без автоматизации дальше не продвинуться, мы начали с самого важного — требований. Нужно было понять, какие данные и метки добавить, чтобы сбор можно было полностью автоматизировать. Собирали рабочие группы, обсуждали, переписывали регламенты, внедряли флаги и поля, на которые можно было бы опираться.

Когда структура данных устоялась, реализация пошла быстро. Скрипты написали за пару недель. Весь процесс — от идеи до готового первого варианта — занял примерно 2–3 месяца и шел параллельно с основной работой.

Мы интегрировали сбор метрик в рабочие процессы:

  • Jira API — для багов и загрузки;

  • TestRail API — для покрытия кейсов;

  • логи автотестов — для данных о сборках;

  • GitLab CI — для управления запуском;

  • Grafana — для визуализации;

  • Rocket.Chat — для уведомлений и алертов.

Пример: если за месяц багов в новом коде больше пяти, система сама отправляет сообщение в Rocket.Chat с перечнем команд, причастных к функционалу.

Алерты в Rocket.Chat

После автоматизации метрики не только собираются автоматически, но и сразу обрабатываются через систему уведомлений.

Сейчас у нас несколько типов алертов:

Баги без меток. Сигнал тестировщикам пройтись по тикетам и добавить недостающие флаги.

Падение процента покрытия или рост хрупкости автотестов. Повод проверить сценарии и спланировать исправления.

Нагрузка по тикетам. Уведомление для менеджеров: показывает, сколько задач назначено на тестировщика, чтобы можно было сбалансировать распределение.

Слишком много багов на проекте. Сигнал для тимлидов, что стоит пересмотреть процессы или обратить внимание на конкретную фичу.

Человеческий фактор — главный источник ошибок

Главные сложности в автоматизации оказались не техническими, а человеческими. Метрики зависят от корректно проставленных флагов и меток в Jira и TestRail. Если тестировщик забывает указать тип теста или поставить метку autotesting, данные искажаются — процент покрытия оказывается ниже, чем есть на самом деле, а баг может не попасть в нужный отчёт. 

Сейчас команда готовит новую итерацию системы метрик, чтобы снизить зависимость от ручного ввода и исключить подобные ошибки.

Что изменилось после внедрения

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

За сбор и работоспособность метрик отвечает команда тестирования. Мы поддерживаем логику и корректность автоматизации, следим за актуальностью флагов и меток, по которым строятся отчёты.

Теперь в конце месяца никто не тратит день на отчётность: метрики собираются автоматически, а тестировщики занимаются своей основной работой. Для руководителей данные стали прозрачными — видны загрузка по людям, качество тестирования, динамика автотестов и общая картина по проектам.

Среди основных результатов:

  • Экономия времени. Автоматизация освободила около 100 человеко-часов в месяц.

  • Прозрачность. Все — от тестировщика до продакта — видят актуальные данные.

  • Быстрая реакция. Алерты в Rocket.Chat помогают вовремя заметить проблемы.

  • Качество. Количество багов, попадающих в прод, снизилось почти в три раза.

Итоги

Метрики — это инвестиция в процессы. Они не существуют сами по себе, но дают опору для решений, помогают держать под контролем нагрузку и качество, а главное — экономят время.

Наш совет: начинайте с малого, адаптируйте под свои задачи и не бойтесь экспериментировать. А ещё делитесь своим опытом: какие метрики вы собираете и какие инструменты вам помогают?

Комментарии (0)