Главная · Статьи · Как оформить баг-репорт

Как оформить баг-репорт, чтобы его починили с первого раза

Вячеслав Степанов Вячеслав Степанов — проджект-менеджер, ментор ·

Задача «Не работает экран долгов» через два дня непонятна даже её автору. Разработчик не может повторить проблему и возвращает задачу со статусом «не воспроизводится»: время потеряли оба, ошибка осталась в продукте. Хороший баг-репорт написан так, чтобы другой человек повторил проблему у себя, ничего не спрашивая. Как этого добиться, показываю на полях, примере и типичных ошибках.

Как тестируют в IT — пишем тест-кейсы в Zephyr и находим реальные баги | Урок 25

Если видео не открывается — смотри на YouTube (может понадобиться VPN).

Содержание
  1. Что такое баг-репорт
  2. Когда заводят баг
  3. Поля баг-репорта
  4. Пример баг-репорта
  5. Серьёзность и приоритет
  6. Что происходит после исправления
  7. Роль проджект-менеджера
  8. Типичные ошибки
  9. Частые вопросы

Что такое баг-репорт

Баг (bug, дефект) — расхождение между тем, как продукт должен работать по требованиям, и тем, как он работает фактически. Баг-репорт — описание этого расхождения в трекере задач, например в Jira.

У слова есть известная история. 9 сентября 1947 года команда Грейс Хоппер нашла в реле компьютера Harvard Mark II мотылька и вклеила его в журнал с подписью «первый настоящий случай обнаружения бага». Само слово «баг» инженеры использовали для неисправностей и раньше, но этот журнал сохранился и стал легендой.

Хороший баг-репорт отвечает на три вопроса: как повторить, что должно было произойти и что произошло вместо этого. Если по нему разработчик без единого вопроса видит ошибку у себя, репорт хороший.

Когда заводят баг

Три итога проверки: Pass — как ожидали, Fail — продукт ошибается, заводится баг-репорт; Blocked — проверить не вышло, заводится задача команде
Баг заводят только на Fail.

Баги чаще всего находят на прогоне тест-кейсов. Два «красных» итога легко перепутать. Fail означает, что продукт ведёт себя не так, как написано в требованиях. Blocked означает, что проверка не состоялась: лежит тестовый стенд, нет нужных данных, соседняя фича не пускает дальше. Если смешать их, команда начнёт чинить продукт там, где сломано окружение, и наоборот.

Поля баг-репорта

ПолеЧто писать
ЗаголовокЧто сломано и где. Одна строка, понятная без чтения остального текста
Шаги воспроизведенияПронумерованные действия от входа в систему до ошибки
Ожидаемый результатКак должно быть по требованиям
Фактический результатЧто произошло при проверке
ОкружениеГде воспроизвели: стенд, браузер или устройство, учётная запись
СерьёзностьНасколько велик вред продукту
ПриоритетКак скоро чинить
ВложенияСкриншот с видимой ошибкой, запись экрана, а если нужно, код ответа сервера
СвязиСсылка на тест-кейс, который нашёл ошибку, и на задачу с требованиями

Перед тем как нажать «Создать», пройди свои шаги заново с чистого листа. Если у тебя самого ошибка не повторилась, у разработчика не повторится тем более.

Пример баг-репорта

Заголовок: Кнопка «Напомнить» остаётся активной после отправки напоминания

Шаги воспроизведения:
  1. Войти в сервис под аккаунтом репетитора
  2. Открыть «Оплаты» → «Долги учеников»
  3. Нажать «Напомнить» в строке должника и отправить напоминание
  4. Нажать «Напомнить» в той же строке ещё раз

Ожидаемый результат: кнопка погашена, рядом отметка об отправке
Фактический результат: кнопка активна, окно открывается, и только
  после нажатия «Отправить» приходит ошибка «Напоминание уже
  отправлено сегодня»

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

Фактический результат в примере расписан подробно, хотя можно было отделаться словом «ошибка». Как раз детали подсказывают разработчику, где искать: проверка есть на сервере, но интерфейс её не учитывает.

Хочешь научиться находить и оформлять баги на живом продукте?
На менторстве ты проводишь прогон тест-кейсов в тренажёре IT-компании, находишь ошибки и оформляешь баг-репорты в Jira с обратной связью по каждому. Начни с бесплатной консультации.

Записаться на бесплатную консультацию

Серьёзность и приоритет

Матрица: опечатка на главной — низкая серьёзность и высокий приоритет; не проходит оплата — высокая серьёзность и высокий приоритет; кривой отступ в настройках — оба низкие; сломан редкий отчёт — высокая серьёзность и низкий приоритет
Две шкалы не зависят друг от друга.

Эти поля постоянно смешивают, хотя решения по ним принимают разные люди. Серьёзность (severity) оценивает тот, кто нашёл ошибку: у потери данных она высокая, у кривой надписи низкая. Приоритет (priority) определяет проджект вместе с продакт-оунером, глядя на планы и пользователей.

Шкалы в командах разные, но похожи друг на друга. Серьёзность часто делят на уровни от блокирующей (продуктом невозможно пользоваться) до незначительной, вроде опечатки. Приоритет в Jira по умолчанию задают уровнями от Highest до Lowest. Команде нужно договориться, что значит каждый уровень, и записать это в правилах работы.

Что происходит после исправления

Жизненный цикл бага: новый, в работе, исправлен, ретест, закрыт; если ретест не прошёл, баг переоткрывают и возвращают в работу
Названия статусов в разных командах отличаются, цикл одинаковый.

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

Рядом с ретестом проводят регресс: проверяют, что исправление не сломало соседние функции. Ошибки часто возвращаются после исправления или появляются рядом, поэтому кейсы хранят и прогоняют повторно.

Роль проджект-менеджера

Типичные ошибки

Частые вопросы

Что такое баг-репорт простыми словами?

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

Какие поля должны быть в баг-репорте?

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

Чем серьёзность отличается от приоритета?

Серьёзность показывает, сколько вреда наносит ошибка, её оценивает тот, кто нашёл. Приоритет показывает, как скоро её чинить, его определяют проджект и продакт-оунер.

Что такое ретест?

Повторная проверка той же ошибки после исправления. Если ошибка осталась, баг переоткрывают и возвращают в работу.

Чем Fail отличается от Blocked?

Fail значит, что продукт работает не по требованиям, и на него заводят баг. Blocked значит, что проверить не получилось из-за стенда или данных, и тогда заводят задачу команде.

Читайте также
  1. Как написать тест-кейс
  2. HTTP-коды ошибок: шпаргалка
  3. Что такое бэклог и кто его ведёт

Хочешь разбираться в процессах на уровне работающего проджекта?
В моём Telegram-канале разбираю собеседования, выкладываю вопросы с интервью и истории выпускников с цифрами офферов.

Подписаться на Telegram-канал