Баг-репорт: структура и доказательства

Тест-кейс и тестовый сценарий описывают, как продукт ДОЛЖЕН работать: шаги, входные данные, ожидаемый результат. Баг-репорт — про обратную ситуацию: вы прошли по шагам, и реальность разошлась с ожиданием. Задача этого урока — оформить это расхождение так, чтобы разработчик воспроизвёл баг сам, без единой уточняющей переписки с вами.

Чему научишься за этот урок:
— оформлять баг-репорт по стандартной структуре: заголовок, шаги, факт/ожидание, окружение, доказательства;
— писать заголовок конкретно, без эмоций и общих слов;
— прикладывать доказательства, которые ускоряют, а не замедляют исправление.

От сценария к баг-репорту

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

Структура баг-репорта

  1. Заголовок — коротко и конкретно называет объект и симптом. Не «не работает», а «Промокод SUMMER2026 не применяет скидку при оплате картой».
  2. Шаги воспроизведения — пронумерованный список, минимально достаточный, чтобы повторить баг.
  3. Фактический результат — что произошло на самом деле после выполнения шагов.
  4. Ожидаемый результат — что должно было произойти по логике продукта или требованию.
  5. Окружение — браузер, ОС, устройство, на котором обнаружен баг.
  6. Приложения/доказательства — скриншот, лог или видео, подтверждающие баг.

Фактический и ожидаемый результат легко перепутать местами. Проверочный вопрос: «что я увидел на экране?» — это факт. «Что должно было случиться по логике продукта?» — это ожидание.

Заголовок: конкретный объект и симптом, без эмоций

Хороший заголовок называет два элемента: конкретный объект (промокод, кнопка, поле, страница) и конкретный симптом (что именно с ним не так). В заголовке нет эмоций — «ужасный баг», «всё сломано», «не работает вообще» ничего не говорят разработчику и не пройдут через десяток похожих заголовков в трекере, не выделяясь среди них.

  Поле                       Пример заполнения
  --------------------------  ------------------------------------------
  Заголовок                   Промокод SUMMER2026 не применяет скидку
                               при оплате картой
  Шаги воспроизведения        1. Открыть оплату курса на полигоне
                               2. Ввести промокод SUMMER2026
                               3. Выбрать способ оплаты "Картой"
                               4. Нажать "Оплатить"
  Фактический результат       Сумма к оплате не изменилась
  Ожидаемый результат         Сумма должна уменьшиться на размер скидки
  Окружение                   Chrome 126, Windows 11, десктоп
  Приложения/доказательства   Скриншот оплаты картой без скидки +
                               скриншот оплаты по счёту со скидкой

Пример: баг с промокодом на полигоне

На полигоне при оплате картой промокод SUMMER2026 не уменьшает сумму, хотя при оплате по счёту та же скидка применяется корректно. Оформленный баг-репорт: заголовок «Промокод SUMMER2026 не применяет скидку при оплате картой»; шаги — открыть оплату курса, ввести промокод, выбрать оплату картой, нажать «Оплатить»; фактический результат — сумма не изменилась; ожидаемый результат — сумма должна уменьшиться на размер скидки; окружение — Chrome 126, Windows 11, десктоп; доказательства — скриншот оплаты картой без скидки и скриншот оплаты по счёту, где скидка применяется.

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

Итог:
— баг-репорт — это инструкция для разработчика, а не жалоба;
— заголовок называет конкретный объект и симптом, без эмоций;
— шесть полей (заголовок, шаги, факт, ожидание, окружение, доказательства) исключают уточняющие вопросы;
— хороший баг-репорт воспроизводится без единой переписки.

Контрольный вопрос. Какой из трёх заголовков бага сформулирован лучше?

АФорма оплаты не работает
БПромокод SUMMER2026 не применяет скидку при оплате картой
ВУжасный баг с промокодом, ничего не понятно!!!

Подсказка: Хороший заголовок называет конкретный объект и симптом, без эмоций.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. В баг-репорте поле «Ожидаемый результат» должно содержать:

АЧто произошло на самом деле при выполнении шагов
БКак должна была вести себя система по требованиям или логике продукта
ВМнение тестировщика о причине бага

Подсказка: Речь про то, что ДОЛЖНО было случиться, а не про то, что случилось на экране.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Как называется поле баг-репорта, где указывают браузер, ОС и устройство, на котором обнаружен баг? Ответь одним словом.

Подсказка: Это поле отвечает на вопрос «где именно обнаружено».

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Какие из перечисленных элементов обязательно входят в структуру баг-репорта (выбери все подходящие)?

Выберите все верные варианты.

АШаги воспроизведения
БЛичное мнение тестировщика о серьёзности бага
ВФактический результат
ГОкружение

Подсказка: Оценка серьёзности бага — это отдельная тема (следующие уроки), а не часть структуры воспроизведения.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Какими должны быть шаги воспроизведения в баг-репорте?

АПронумерованные и минимально достаточные для повторения бага
БМаксимально подробные, включая все клики без исключения, даже те, что не влияют на баг
ВНаписанные в свободной форме, как получится

Подсказка: Задача шагов — дать разработчику воспроизвести баг без лишних действий, не больше и не меньше.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Скриншот показывает баг в один момент времени. Какой тип доказательства нужен, чтобы показать баг, проявляющийся в процессе — например, элемент мигает или пропадает во время анимации? Ответь одним словом.

Подсказка: Тип доказательства, который показывает процесс во времени, а не статичный момент.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Критерий хорошего заголовка бага: он называет конкретный объект и конкретный ___. Впиши пропущенное слово — то, что описывает, как именно баг проявляется (а не его причину).

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

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. Заголовок бага в трекере: «Не работает». Оцени этот заголовок и ответь одним словом.

Подсказка: Сравни с критерием: заголовок должен называть конкретный объект и конкретный симптом.

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. В баг-репорте перепутаны местами две формулировки: А) «Сумма к оплате не изменилась после ввода промокода»; Б) «Сумма к оплате должна уменьшиться на размер скидки». Какая из них (ответь буквой) описывает фактический результат — то, что реально произошло на экране, а не то, что должно было произойти?

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

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. На полигоне при повторном быстром клике по кнопке «Записаться на курс» иногда создаются две записи на курс в личном кабинете вместо одной. Оформи баг-репорт по структуре: заголовок, шаги воспроизведения, фактический результат, ожидаемый результат, окружение, приложения/доказательства.

Критерий приёмки: заголовок конкретный (называет объект и симптом, без эмоций); минимум 3 пронумерованных шага воспроизведения; фактический и ожидаемый результат явно разделены и не совпадают по смыслу; указано окружение (браузер/ОС/устройство); указан хотя бы один тип доказательства (скриншот/лог/видео).

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

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

Онлайн-проверка ответа появится позже

Задание. Дан баг-репорт: «Заголовок: Промокод WINTER10 не применяет скидку при оплате в рассрочку. Шаги: 1) Открыть оплату. 2) Ввести промокод WINTER10. 3) Выбрать «Рассрочка». 4) Нажать «Оплатить». Фактический результат: сумма не изменилась. Окружение: Safari 17, macOS. Приложения: скриншот страницы оплаты после нажатия «Оплатить»». Какого обязательного поля структуры баг-репорта здесь не хватает? Ответь названием этого поля, как оно указано в структуре урока.

Подсказка: Проверь каждое из шести полей по очереди — какое из них отсутствует в этом тексте?

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Что дальше

Шаги воспроизведения в баг-репорте должны быть минимально достаточными — но как понять, какие из них действительно нужны, а какие просто попали в отчёт по пути? И проявляется ли этот баг только там, где вы его нашли, или ещё в похожих местах продукта? Это отдельная работа — локализация и генерализация дефекта. О ней — следующий урок.

Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева