Привет! Меня зовут Андрей Романюк, я руковожу группой качества WEB в онлайн-кинотеатре Okko. В этой статье я расскажу о процессе, с помощью которого мы снизили количество багов, которые мы выкатываем в прод, когда мы о них уже знаем.(Естественно, мы всё равно их выкатываем, но таких багов в релизах стало намного меньше :) 

О чём поговорим:

  • Истоки нашей проблемы,

  • Как решили взвешивать баги,

  • Какие результаты получили.

Поехали.

Истоки проблемы

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

А вы тестировали этот релиз и знаете, что в нём — штук десять багов минимум. Продакт тоже прекрасно об этом знает, всё видел в Jira, но релиз все равно очень нужен — давайте катить.

Было? Было.

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

Но письма забудутся, а баги — останутся.

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

Как решили взвешивать баги

Для взвешивания багов мы добавили поле Count в Jira. Цифра в нём позволяет сравнить два одинаковых бага по приоритету, показывая степень влияния бага на пользователя. Чем больше цифра, тем сильнее влияние, а значит — тем скорее нужно пофиксить проблему.

Для взвешивания багов используем два критерия:

  • Охват бага — в какой доле пользовательских сессий он появляется;

  • Барьерность бага — насколько серьёзные неудобства баг доставит пользователю.

Получается формула:

Итоговый count бага = Охват * Барьерность * 10 000

Коэффициент 10 000 нужен для того, чтобы итоговый результат был понятным и читаемым каждому участнику процесса.

Охват

Для оценки охвата используем таблицу, в которой собрали рассчитанные аналитиками частоты тех или иных событий. Для этого мы попросили CX-специалистов собрать все сценарии c которыми сталкиваются пользователи. Например:

  • авторизация,

  • открытие главной страницы, 

  • открытие меню,

  • просмотр фильма/сериала,

  • и т.д.

Собрав сценарии, пришли к аналитикам — они посчитали процент пользователей, столкнувшихся с этими сценариями. Например:

  • Авторизация — коэффициент 0,11, а значит 11% пользователей проходят этот сценарий. Как правило, пользователь авторизуется и больше не выходит из приложения;

  • Открытие главной страницы — коэффициент 0,9, а значит со сценарием взаимодействует 90% пользователей. Они попадают на главную каждый раз, когда заходят в приложение — кроме тех случаев, когда на вебе используют прямую ссылку, и попадают сразу на контент, потому и не 100%.

Барьерность

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

Если баг блокирует приложение, роняет сайт, не даёт авторизоваться или запустить плейбэк, пользователю нет смысла пользоваться сайтом — ставим барьерность 100.

Между двумя этими цифрами, конечно, есть градация.

Пример расчёта count

Баг: Пользователь после авторизации на ТВ (на любой модели) видит пустую pop-up подсказку, которая висит в течение трёх секунд, а потом исчезает. Пользователь при этом авторизован, а сайт работает нормально.

Рассчитываем по формуле:

0.11 (авторизация) * 0,55 (Любой ТВ) * 1 (не мешает пользователю) * 10 000 = 605

605 — наш count этого бага.

Максимально возможный count — 1 000 000, в этом случае все пользователи попадают на баг с барьерностью 100.

Какие баги взвешиваем?

Баги, которые уже есть на проде

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

Баги, которые потенциально уйдут в прод с фичей

Получаем оценку того, насколько увеличим количество багов в проде.

Приоритет на основе count

Задаём его, опираясь на конкретные значения count — это делает процесс более объективным.

Разбили приоритеты от lowest до blocker на конкретные цифры, где:

  • lowest = count <10

  • blocker = count ≥ 50 000

Оружие QA

Count багов позволяет нам доходчиво объяснять нашу позицию.

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

В письме указываем, что релиз готов и протестирован, в нём поедет фича вот с таким количеством багов и таким-то count. Еще — общий count всех багов релиза.

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

Результат

Объем багов с count выше 100 на проде резко сократился. Если count 90 или меньше, мы еще можем согласится на выпуск релиза. Если в релизе присутствуют баги с Count более 100, то по договоренности с PM такой релиз не едет в прод, а все баги с таким Count фиксятся. И только после фикса релиз отдаем пользователям.

Да, по сути мы переизобрели велосипед и заменили Count-ом критичность бага. Однако в случае с критичностью я как QA выставляю приоритет бага основываясь на более абстрактных принципах. И это не позволяет сравнить два бага с одинаковым приоритетом и понять, какой наиболее критичен. 

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

Автор статьи https://t.me/RAV_2549

Другие лайфхаки и хитрости основанные на опыте в работе с высоконагруженными системами на HighLoad++ 2025. Программа и другая полезная информация — на официальном сайте конференции.

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


  1. Oeaoo
    26.06.2025 00:37

    Представьте себе ситуацию: пятница, вечер, пять минут до конца рабочего дня.

    Представил. Увольняюсь, в общем. Я что вам, станок ЧПУ с реле-таймером?


    1. dyadyaSerezha
      26.06.2025 00:37

      То есть, заранее неизвестна дата релиза? Мда...

      А вообще, чем приоритет был плох? Не выпускать в прод с багами high и выше, напрмер. Не понятно. То есть, зачем два поля - count и его огрубленный вариант priority?

      Ну и count, это что-то, что не вычисляют, а считают "раз, два, три..". Лучше бы назвать score, impact или как-то так.


  1. Zulu0
    26.06.2025 00:37

    Работал я как-то на проекте, на котором положили пальто на бизнес процес, и к багам прикрутили кроме приоритета такойже параметр, потому что там все баги были критикал. А вот если бы ребята вникли в бизнес процесс, то и все стало бы проще. И релизы бы не собирались на коленке в пятницу, а планировались бы на несколько итераций.

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


  1. Paczuk
    26.06.2025 00:37

    Круто, поздравляю, вы изобрели велосипед! А можно было просто научиться использовать 2 стандартных показателя priority & severity.