🤖 Академия QA-автоматизации
← Основы QA-автоматизации: курс для начинающих
Этап 3. Составление тест-кейсов и баг-репортов

Как правильно описать баг: структура баг-репорта и уровни критичности ошибок


Почему это важно?

Представьте: вы проверяете приложение и находите ошибку. Кнопка «Оформить заказ» не работает — при нажатии ничего не происходит. Вы сообщаете разработчику: «Эй, тут что-то сломалось с кнопкой». Разработчик открывает приложение, нажимает кнопку — и у него всё работает. Он закрывает задачу. Ошибка остаётся.

Знакомо? Именно поэтому в тестировании существует особый документ — баг-репорт (от английского bug report, то есть «отчёт об ошибке»). Это не просто жалоба на то, что что-то пошло не так. Это точная, структурированная запись, которая позволяет другому человеку воспроизвести ошибку — то есть повторить те же шаги и увидеть ту же проблему.

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


Теория

Что такое баг?

Баг (от английского bug — «жучок») — это ошибка в программе, из-за которой она работает не так, как должна. Программа «ожидает» одно поведение, а на деле происходит другое.

Примеры багов:

  • Кнопка не реагирует на нажатие.
  • После ввода неправильного пароля приложение вылетает (закрывается само по себе) вместо того, чтобы показать сообщение об ошибке.
  • Цена товара в корзине отображается как «0 рублей».
  • На экране появляется текст «Error 500» вместо страницы с товарами.

Аналогия из жизни. Представьте кофемашину. Вы нажимаете кнопку «Эспрессо», а она наливает горячую воду без кофе. Это «баг» кофемашины: ожидаемый результат — эспрессо, фактический результат — просто вода.


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

Баг-репорт — это документ (карточка, запись), в котором тестировщик подробно описывает найденную ошибку. Он должен быть написан так, чтобы любой другой человек — разработчик, менеджер, другой тестировщик — мог:

  1. Понять, что именно не работает.
  2. Самостоятельно воспроизвести (повторить) ошибку.
  3. Оценить, насколько эта ошибка серьёзна.

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

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


1. Заголовок (Title / Summary)

Это краткое, но ёмкое описание ошибки — одна фраза, из которой сразу понятно, в чём проблема.

Плохой заголовок:

«Кнопка не работает»

Хороший заголовок:

«Кнопка "Оформить заказ" не реагирует на нажатие на странице корзины в мобильном браузере Chrome»

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


2. Окружение (Environment)

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

Сюда входит:

  • Устройство — телефон, компьютер, планшет. Модель, если важно (например, iPhone 13).
  • Операционная система — Windows 11, macOS, Android 12, iOS 16 и т. д.
  • Браузер и его версия — Chrome 124, Firefox 115, Safari и т. д. (если тестируется веб-сайт).
  • Версия приложения — например, «версия 2.4.1».

Аналогия. Если вы звоните в сервисный центр и говорите «мой телевизор не включается», первое, что они спросят: «Какая модель? Сколько лет? Что делали перед этим?» Это и есть «окружение».


3. Шаги воспроизведения (Steps to Reproduce)

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

Правила хороших шагов:

  • Каждый шаг — отдельное действие.
  • Шаги нумеруются.
  • Описание конкретное: не «войти в приложение», а «открыть приложение, ввести логин [email protected] и пароль Test1234, нажать кнопку "Войти"».
  • Шаги должны быть воспроизводимы — любой человек, следуя им, должен увидеть ту же ошибку.

4. Ожидаемый результат (Expected Result)

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

Пример: «После нажатия кнопки "Оформить заказ" пользователь должен перейти на страницу подтверждения заказа».


5. Фактический результат (Actual Result)

Фактический результат — это то, что реально произошло. Именно это и есть баг.

Пример: «После нажатия кнопки "Оформить заказ" ничего не происходит — страница не обновляется, никаких сообщений не появляется».


6. Серьёзность (Severity) — уровень критичности

Серьёзность (Severity) — это оценка того, насколько сильно ошибка влияет на работу программы. Это техническая характеристика.

Аналогия. Представьте ресторан. Если на кухне пожар — это катастрофа, ресторан не может работать. Если у официанта пятно на рубашке — это неприятно, но ресторан продолжает работать. Серьёзность — это как раз оценка масштаба проблемы.

Обычно используют следующие уровни:

Уровень Название Что означает Пример
S1 Blocker (Блокирующий) Приложение полностью не работает, тестирование невозможно Приложение вылетает при запуске
S2 Critical (Критический) Основная функция сломана, обходного пути нет Нельзя оплатить заказ
S3 Major (Серьёзный) Важная функция работает неправильно, но есть обходной путь Фильтр товаров не работает, но можно искать вручную
S4 Minor (Незначительный) Небольшая проблема, не мешает основной работе Опечатка в тексте кнопки
S5 Trivial (Тривиальный) Косметический дефект, почти незаметен Отступ между элементами на 2 пикселя больше, чем в макете

7. Приоритет (Priority)

Приоритет (Priority) — это оценка того, насколько быстро нужно исправить ошибку. Это бизнес-характеристика, которую обычно устанавливает менеджер или тимлид.

Важно для начинающих: Серьёзность и приоритет — разные вещи! Путаница здесь очень распространена.

Пример разницы:

  • На сайте интернет-магазина опечатка в имени генерального директора в разделе «О компании». Серьёзность — Trivial (технически почти не влияет). Приоритет — High (директор требует исправить немедленно).
  • Кнопка «Экспорт в PDF» не работает. Серьёзность — Major. Приоритет — Low (этой функцией пользуется 2% пользователей, можно починить в следующем релизе).

Уровни приоритета:

  • High (Высокий) — исправить как можно скорее.
  • Medium (Средний) — исправить в ближайшем обновлении.
  • Low (Низкий) — исправить когда будет время.

8. Вложения (Attachments)

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

  • Скриншот — снимок экрана с ошибкой.
  • Видеозапись — особенно полезна для ошибок, которые сложно описать словами.
  • Логи — технические записи о работе программы (актуально для более продвинутого уровня).

Скриншот стоит тысячи слов. Если есть возможность — прикладывайте всегда.


Сводная таблица: из чего состоит баг-репорт

Поле Обязательно? Назначение
Заголовок ✅ Да Быстро понять суть проблемы
Окружение ✅ Да Воспроизвести в нужных условиях
Шаги воспроизведения ✅ Да Повторить ошибку
Ожидаемый результат ✅ Да Понять, как должно быть
Фактический результат ✅ Да Понять, что сломалось
Серьёзность ✅ Да Оценить масштаб проблемы
Приоритет ✅ Да Решить, когда чинить
Вложения Желательно Наглядно показать ошибку

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

Давайте посмотрим на реальный пример. Представим, что мы тестируем простой интернет-магазин.

БАГ-РЕПОРТ #042

Заголовок:
  При добавлении 10 и более единиц товара в корзину
  итоговая сумма отображается как «0 ₽»

Окружение:
  - Устройство: Ноутбук ASUS VivoBook
  - ОС: Windows 11 Home
  - Браузер: Google Chrome 124.0.6367.82
  - Версия приложения: 3.1.0 (тестовая среда)

Шаги воспроизведения:
  1. Открыть сайт: https://shop-test.example.com
  2. Перейти в каталог → раздел «Электроника».
  3. Открыть карточку товара «Наушники беспроводные», цена 2 990 ₽.
  4. В поле «Количество» ввести значение «10».
  5. Нажать кнопку «Добавить в корзину».
  6. Перейти в раздел «Корзина» (значок в верхнем правом углу).
  7. Посмотреть на строку «Итого».

Ожидаемый результат:
  В строке «Итого» отображается сумма 29 900 ₽
  (2 990 ₽ × 10 = 29 900 ₽).

Фактический результат:
  В строке «Итого» отображается «0 ₽».
  При этом количество товара (10 шт.) показано корректно.

Серьёзность: S2 — Critical
  (Основная функция — расчёт суммы заказа — работает некорректно.
  Пользователь не может узнать реальную стоимость своего заказа.)

Приоритет: High
  (Ошибка напрямую влияет на оформление покупок — ключевой
  бизнес-процесс сайта.)

Вложения:
  - screenshot_cart_zero_sum.png (скриншот корзины с суммой «0 ₽»)

Разбор примера

Обратите внимание на несколько вещей:

  1. Заголовок сразу говорит нам, что именно сломалось («итоговая сумма = 0 ₽»), при каком условии («10 и более единиц»).

  2. Шаги написаны так конкретно, что их может повторить человек, который никогда не видел этот сайт. Указан точный URL, конкретный товар и точное значение в поле.

  3. Ожидаемый и фактический результат чётко разведены. Мы не просто пишем «не работает» — мы показываем разрыв между ожиданием (29 900 ₽) и реальностью (0 ₽).

  4. Серьёзность обоснована: объяснено, почему это Critical, а не просто поставлена галочка.


Частые ошибки начинающих

Вот что чаще всего делают не так при написании первых баг-репортов:

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

Смешивание ожидаемого и фактического результата: «Должно показывать сумму, но показывает 0» — это лучше разделить на два чётких пункта.

Отсутствие окружения: Ошибка может воспроизводиться только в Safari на iPhone — без этой информации разработчик будет искать проблему часами.

Эмоциональные оценки: «Ужасная ошибка! Всё сломалось!!!» — в баг-репорте нет места эмоциям. Только факты.

Один баг-репорт на несколько ошибок: Если вы нашли три разные проблемы — пишите три отдельных репорта.


Практика

Упражнение 1. Найдите ошибки в баг-репорте

Прочитайте следующий баг-репорт и найдите в нём как минимум 3 проблемы. Запишите их.

Заголовок: Не работает

Шаги: Открыть приложение и попробовать войти.

Ожидаемый результат: Должно работать нормально.

Фактический результат: Приложение ругается и показывает
ошибку при входе с неправильным паролем.
Также кнопка "Забыл пароль" не работает.
Ещё иконки на главном экране мелкие.

Серьёзность: очень страшная ошибка

Подсказка: Посмотрите на заголовок, шаги воспроизведения, структуру фактического результата и поле «Серьёзность».


Упражнение 2. Напишите свой баг-репорт

Откройте любой сайт или приложение, которым вы пользуетесь каждый день (интернет-магазин, новостной сайт, мобильное приложение банка). Найдите любую мелкую проблему — опечатку, неудобное расположение кнопки, что-то, что работает не так, как вы ожидаете.

Напишите баг-репорт по полной структуре:

  • Заголовок
  • Окружение
  • Шаги воспроизведения
  • Ожидаемый результат
  • Фактический результат
  • Серьёзность (с обоснованием)
  • Приоритет

Даже если вы не найдёте настоящий баг — попробуйте придумать реалистичный сценарий и описать его.


Упражнение 3. Определите уровень серьёзности

Для каждой из описанных ситуаций определите уровень серьёзности (S1–S5) и объясните свой выбор одним предложением.

  1. При попытке запустить мобильное приложение банка оно мгновенно закрывается. Войти невозможно.
  2. На странице «Контакты» написано «8-800-XXXXXX» вместо реального номера телефона.
  3. Кнопка «Перевести деньги» работает, но надпись на ней отображается жирным шрифтом вместо обычного.
  4. При оплате картой после ввода CVC-кода страница зависает и транзакция не завершается, хотя деньги со счёта списываются.
  5. В разделе «Помощь» одна из статей открывается на 3 секунды дольше, чем остальные.

Упражнение 4. Серьёзность vs. Приоритет

Прочитайте две ситуации. Для каждой определите и серьёзность, и приоритет, а затем объясните, почему они могут не совпадать.

Ситуация А. В корпоративной системе документооборота сломалась функция автоматического архивирования документов старше 5 лет. Этой функцией пользуются раз в год, и документы можно архивировать вручную.

Ситуация Б. На главной странице сайта компании, которая завтра проводит крупную презентацию для инвесторов, в заголовке написано название конкурента вместо собственного названия компании.


Главные выводы урока

  • Баг-репорт — это структурированный документ, который позволяет разработчику воспроизвести и исправить ошибку.
  • Обязательные части баг-репорта: заголовок, окружение, шаги воспроизведения, ожидаемый результат, фактический результат, серьёзность, приоритет.
  • Шаги воспроизведения — самая важная часть: они должны быть конкретными, пронумерованными и воспроизводимыми.
  • Серьёзность (Severity) — техническая оценка того, насколько сильно баг влияет на программу (S1 Blocker → S5 Trivial).
  • Приоритет (Priority) — бизнес-оценка того, как быстро нужно исправить баг (High / Medium / Low).
  • Серьёзность и приоритет — разные вещи и могут не совпадать.
  • Один баг-репорт = одна ошибка. Никаких эмоций — только факты.
  • Скриншот или видео значительно упрощают работу разработчика — прикладывайте их всегда, когда можете.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.