Урок 5 из 8 · 20 мин · обновлено

Баг-репорт: как описать ошибку, чтобы её исправили

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

Плохой и хороший баг-репорт

Найти ошибку — половина дела. Вторая половина — описать её так, чтобы разработчик понял, повторил и исправил. Сравните два описания одной и той же ошибки.

Плохо:

Не работает промокод!!! Срочно исправьте!

Какой промокод? Где? Что значит «не работает»? Разработчику придётся идти к тестировщику с вопросами — а это время обоих.

Хорошо:

Заголовок: Оформление заказа: итог не учитывает скидку по промокоду

Шаги:

  1. Войти под тестовым пользователем test@example.com.
  2. Добавить в корзину пиццу «Маргарита» за 450 ₽.
  3. Перейти к оформлению заказа.
  4. Ввести промокод ВКУСНО (скидка 10%) и нажать «Применить».

Фактический результат: появляется сообщение «Промокод применён», но в поле «Итого» остаётся 450 ₽.

Ожидаемый результат: «Итого: 405 ₽» — сумма со скидкой 10%.

Окружение: тестовый стенд, браузер Chrome, Windows 11.

Серьёзность: критическая — пользователь заплатит больше, чем должен.

Вложения: скриншот экрана оформления.

Из чего состоит баг-репорт

  • Заголовок. Коротко отвечает на вопросы «где?» и «что не так?». Хорошая схема — «Место: что происходит».
  • Шаги воспроизведения. Конкретные действия по порядку, начиная с понятного исходного состояния. Никаких «ну там зайти в корзину» — только точные шаги.
  • Фактический результат. Что произошло на самом деле.
  • Ожидаемый результат. Что должно было произойти — со ссылкой на требование, если оно есть.
  • Окружение. Где воспроизводится: стенд, браузер, устройство, версия приложения. Бывает, что баг есть только в одном браузере, — без этой строчки его не найдут. Что такое стенды и окружения — в уроке 2.
  • Серьёзность и приоритет. Насколько вредит и как срочно чинить (вспомните урок 3).
  • Вложения. Скриншот, видео экрана, текст ошибки. Одна картинка часто экономит десять строк объяснений.

Правила хорошего тона

  1. Один баг — один репорт. Три ошибки на странице — три репорта.
  2. Воспроизведите ещё раз перед отправкой. Если ошибка случается не всегда, так и напишите: «воспроизводится примерно в 3 случаях из 5».
  3. Поищите дубли. Возможно, этот баг уже завели — тогда лучше дополнить существующий репорт.
  4. Только факты. Не «разработчик опять всё сломал», а «после обновления кнопка не реагирует».
  5. Пишите для того, кто видит задачу впервые. Через месяц репорт может открыть человек, который ничего не знает о контексте.

Что происходит с багом дальше

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

  1. Новыйбаг заведён
  2. В работеразработчик взял исправлять
  3. Исправленразработчик считает, что починил
  4. Проверкатестировщик проверяет исправление
  5. Закрытвсё работает

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

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

Баги заводят в специальных системах — баг-трекерах. О них — в уроке 7.

Попробуйте сами. Перепишите этот баг-репорт так, чтобы его можно было исправить:

Сайт глючит, ничего не грузится, когда нажимаешь на кнопку. Исправьте!!!

Что в нём не так и как лучше

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

Заголовок: Каталог: кнопка «Показать ещё» не загружает следующие товары

Шаги: 1. Открыть каталог «Наушники». 2. Прокрутить до конца списка. 3. Нажать «Показать ещё».

Фактический результат: кнопка темнеет на секунду, новые товары не появляются.

Ожидаемый результат: под списком появляются следующие 20 товаров.

Окружение: продакшен, Firefox, Windows 10; в Chrome воспроизводится так же.

Вложения: видео экрана, скриншот ошибки из консоли браузера.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Какой заголовок баг-репорта лучше?

  2. Что обязательно должно быть в шагах воспроизведения?

  3. На одной странице нашлись три разные ошибки. Как их оформить?

  4. Разработчик исправил баг. Что делает тестировщик?