Шаблон баг-репорта
Скопируйте шаблон, замените значения — и репорт можно отдавать в разработку. Ниже разобрано, что писать в каждое поле и какие пять проверок сделать до того, как нажать «Создать задачу».
Шаблон
Заголовок: [Где] что происходит [при каком условии]
Окружение:
Стенд: 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.
Пять проверок перед отправкой
- Воспроизводится повторно? Хотя бы дважды.
- Воспроизводится в другом браузере или в инкогнито? Это отделяет дефект от кэша и расширений.
- Нет ли уже такого репорта? Поиск по трекеру — 30 секунд.
- Это точно расхождение с требованием, а не ваше ожидание?
- Актуальна ли ваша сборка? Возможно, уже починили.
Что приложить
- Скриншот целиком, а не вырезанный фрагмент: часто важны адрес страницы и время.
- Видео для плавающих и многошаговых дефектов — 20 секунд убеждают лучше трёх абзацев.
- Запрос и ответ из вкладки Network: метод, URL, тело, код. Удобно кнопкой «Copy as cURL» — только уберите токены перед вставкой в задачу.
- Ошибку консоли целиком, со стеком.
- Идентификаторы: id заказа, e-mail, точное время, traceId — по ним разработчик найдёт запись в логах сервера.
- Двух дефектов в одной задаче: один починят, второй потеряется.
- Диагноза вместо симптома: «не работает валидация на бекенде» — это гипотеза, ей место в комментарии.
- Эмоций и восклицательных знаков.
- Скриншота вместо текста ошибки: по картинке нельзя искать и копировать.
Потренироваться на живом примере можно здесь: тренажёр «напишите баг-репорт» — он проверит текст по семи критериям и покажет эталон. Полный разбор с типовыми ошибками — в открытом уроке как писать баг-репорт.
Это выжимка. Полный разбор — в курсе
В «Ручном тестировщике» 47 уроков и 36 тренажёров с проверкой результата. Часть уроков и четыре тренажёра открыты бесплатно.