Шаблон баг-репорта

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

Шаблон

Заголовок: [Где] что происходит [при каком условии]

Окружение:
  Стенд: test / stage / prod
  Сборка: 2.15.0
  Браузер: Chrome 126, Windows 11
  Пользователь: test@shop.ru, роль «клиент»

Предусловия:
  В корзине три товара, пользователь авторизован

Шаги:
  1. Открыть /cart
  2. Нажать F5

Ожидаемый результат:
  В корзине остаются все три товара, счётчик в шапке показывает 3
  (требование REQ-14 «Корзина сохраняется между сессиями»)

Фактический результат:
  Остаётся только последний добавленный товар, счётчик показывает 3 —
  данные расходятся

Воспроизводимость: всегда (5 из 5 попыток)
Обходной путь: нет
Серьёзность: Critical
Вложения: видео, HAR-файл, запрос GET /api/cart как cURL, traceId 8f1c-44a2

Что писать в каждое поле

Заголовок

По нему решают, брать ли задачу в спринт, поэтому он должен читаться в списке из ста строк без открытия. Формула: [где] что происходит [при каком условии], 25–120 символов.

ПлохоХорошо
Не работает корзинаКорзина: после перезагрузки страницы остаётся только последний товар
Ошибка 500Оформление заказа: POST /api/order отдаёт 500 при пустом поле «Комментарий»
Криво отображаетсяКаталог: описание выходит за границы карточки при названии длиннее 40 символов

Шаги

Пишите так, чтобы повторил человек, впервые открывший продукт: конкретные данные, одно действие на шаг, нумерация. Не «добавить товар», а «добавить товар “Наушники Aero 2”».

Ожидаемый и фактический результат

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

Серьёзность

УровеньКогда ставить
BlockerРабота с продуктом или тестирование невозможны
CriticalКлючевая функция не работает, обхода нет; потеря данных; утечка
MajorФункция работает частично, обходной путь есть
MinorМелкое несоответствие, на сценарий почти не влияет
TrivialКосметика: отступ, опечатка в редком месте

Серьёзность — это «насколько сломано», её ставит тестировщик. Приоритет — «когда чинить», его ставит продакт. Подробнее: Severity и Priority.

Пять проверок перед отправкой

  1. Воспроизводится повторно? Хотя бы дважды.
  2. Воспроизводится в другом браузере или в инкогнито? Это отделяет дефект от кэша и расширений.
  3. Нет ли уже такого репорта? Поиск по трекеру — 30 секунд.
  4. Это точно расхождение с требованием, а не ваше ожидание?
  5. Актуальна ли ваша сборка? Возможно, уже починили.

Что приложить

⚠️ Чего в репорте быть не должно
  • Двух дефектов в одной задаче: один починят, второй потеряется.
  • Диагноза вместо симптома: «не работает валидация на бекенде» — это гипотеза, ей место в комментарии.
  • Эмоций и восклицательных знаков.
  • Скриншота вместо текста ошибки: по картинке нельзя искать и копировать.

Потренироваться на живом примере можно здесь: тренажёр «напишите баг-репорт» — он проверит текст по семи критериям и покажет эталон. Полный разбор с типовыми ошибками — в открытом уроке как писать баг-репорт.

Это выжимка. Полный разбор — в курсе

В «Ручном тестировщике» 47 уроков и 36 тренажёров с проверкой результата. Часть уроков и четыре тренажёра открыты бесплатно.

Начать бесплатно Открытые уроки