Prog Academy
RU UA
Картка баг-репорту з полями, шкала серйозності дефекту і статуси виправлення
Кар'єра в IT

Баг-репорт: як правильно написати (шаблон + приклади)

Знайти дефект — половина роботи тестувальника. Друга половина — описати його так, щоб розробник відтворив проблему з першого разу і не прийшов з питанням «а як ти це отримав?». Погано написаний баг-репорт коштує команді годин переписки, а іноді дефект просто закривають як «не відтворюється».

У цьому гайді розберемо, з яких полів складається баг-репорт за програмою ISTQB, як сформулювати заголовок і кроки відтворення, чим severity відрізняється від priority, і покажемо три повні приклади «погано → добре». Наприкінці — чек-лист перед відправкою.

Головне за 30 секунд

  • Баг-репорт — документ про дефект: що сталося, де, за яких умов і як це повторити.
  • Обов'язкові поля: заголовок, середовище, кроки відтворення, очікуваний і фактичний результат, severity, priority, вкладення.
  • Формула заголовка: що зламалося + де + за якої умови.
  • Severity — наскільки шкодить дефект, priority — як терміново виправляти. Це різні речі.
QA

Баг-репорти, тест-кейси, Jira — на практиці

На курсі тестувальника в Prog Academy ви пишете баг-репорти й тест-кейси на реальних проєктах, працюєте з Jira і Postman, а викладач перевіряє кожну роботу. 4 місяці від нуля до готовності до співбесіди на Junior QA.

Програма курсу QA →

Що таке баг-репорт

Баг-репорт (звіт про дефект, bug report) — це документ, який описує знайдений дефект так, щоб його можна було відтворити, оцінити й виправити. У глосарії ISTQB звіт про дефект визначено як «документація щодо виникнення, характеру та статусу дефекту».

За програмою ISTQB Foundation Level (версія 4.0.1), у звіту про дефект три цілі: дати тим, хто його виправлятиме, достатньо інформації; відстежувати якість продукту; підказати, як покращити процес розробки й тестування. Тобто баг-репорт пишуть не «для галочки» і не для звіту керівнику, а для людини, яка виправлятиме дефект.

Баг-репорти ведуть у баг-трекері: Jira, YouTrack, Azure DevOps, GitHub Issues. Поля в різних системах звуться по-різному, але суть однакова.

Структура баг-репорту: поля за ISTQB

Програма ISTQB Foundation Level перелічує, що зазвичай містить звіт про дефект, знайдений під час тестування. У таблиці — ці поля з поясненням і прикладом.

ПолеЩо писатиПриклад
IDУнікальний номер. Зазвичай присвоює баг-трекер.SHOP-1423
ЗаголовокКоротко: що зламалося, де і колиКошик: кнопка «Оформити замовлення» неактивна після видалення промокоду
Автор і датаХто знайшов і колиО. Коваль, 12.11.2026
Об'єкт і середовищеЩо тестували, де: ОС, браузер чи пристрій, стенд, версія збіркиWindows 11, Chrome 131, staging, збірка 2.14.0
КонтекстТест-кейс чи активність, у межах якої знайдено дефект; тестові даніTC-87 «Застосування промокоду», користувач test_buyer_3
Кроки відтворенняНумерований список дій1. Відкрити /cart. 2. Натиснути «Видалити промокод». 3. Натиснути «Оформити замовлення»
Очікуваний результатЯк має бути за вимогамиВідкривається сторінка оформлення з ціною без знижки
Фактичний результатЩо сталося насправдіКнопка неактивна; у консолі TypeError
SeverityСерйозність: наскільки дефект шкодитьCritical
PriorityПріоритет: як терміново виправлятиHigh
СтатусСтан дефекту в життєвому цикліNew
Посилання й вкладенняСкриншоти, відео, логи, пов'язані задачі й тест-кейсиcheckout-bug.mp4, console.log

Перевірки, з яких виростає баг-репорт, зазвичай описані в тест-кейсах. Якщо ви ще плутаєте ці документи, почніть із нашого гайду «Як стати QA-тестувальником з нуля» — там розібрано всю тестову документацію.

Як написати заголовок

Заголовок — те, що розробник і менеджер бачать у списку дефектів. За ним вирішують, відкривати баг-репорт зараз чи потім, тому заголовок має бути самодостатнім. Робоча формула:

Що зламалося + де + за якої умови.

ПоганоДобре
Не працює кошикКошик: кнопка «Оформити замовлення» неактивна після видалення промокоду
Баг з реєстрацією!!!Реєстрація: лист підтвердження не надходить, якщо email містить «+»
Поїхала версткаГоловна, iPhone SE: кнопка «Купити» перекриває ціну в картці товару
API падаєPOST /api/orders повертає 500, якщо quantity = 0

Кілька правил: без емоцій і оцінок («жахливий баг»), без «не працює» без уточнення, до 80–100 символів. Один заголовок — один дефект.

Кроки відтворення, очікуваний і фактичний результат

Кроки відтворення

Кроки — серце баг-репорту. Їх читає людина, яка не бачила, що ви робили, тому:

  • Нумеруйте. Одна дія — один крок.
  • Починайте з передумов. Хто увійшов у систему, які дані вже є, яка мова інтерфейсу. «Користувач авторизований, у кошику 1 товар, застосовано промокод SALE10».
  • Пишіть конкретно. Не «введіть некоректні дані», а «у поле Email введіть test@example».
  • Перевірте кроки ще раз перед відправкою. Якщо дефект не відтворюється за вашими кроками — вони неповні.

Очікуваний результат

Як має бути відповідно до вимог, макета чи загальноприйнятої поведінки. Якщо є посилання на вимогу — додайте його. Без очікуваного результату розробник не знає, що саме вважати виправленням.

Фактичний результат

Що сталося насправді — точно й без інтерпретацій. Текст помилки копіюйте дослівно, а не переказуйте. «Сторінка не завантажилась» гірше, ніж «через 30 секунд з'являється сторінка 504 Gateway Time-out».

Severity і Priority: у чому різниця

Найчастіше питання на співбесідах Junior QA. Визначення з глосарію ISTQB:

  • Severity (серйозність) — «ступінь впливу, який дефект має на розробку або функціонування компонента чи системи».
  • Priority (пріоритет) — «рівень (бізнес-) важливості, присвоєний об'єкту, наприклад, дефекту».

Серйозність зазвичай оцінює тестувальник, бо бачить технічний вплив. Пріоритет остаточно встановлює менеджер продукту чи лід команди, бо зважує бізнес-контекст: дедлайни, кількість користувачів, ризики. Конкретні шкали в компаніях відрізняються; поширений варіант — такий:

SeverityЩо означаєПриклад
BlockerНеможливо продовжити роботу чи тестування, обхідного шляху немаєЗастосунок падає під час запуску
CriticalНе працює ключова функція або втрачаються дані чи грошіОплата списує гроші, а замовлення не створюється
MajorФункція працює неправильно, але є обхідний шляхФільтр за ціною ігнорує верхню межу
MinorНезначна функціональна чи візуальна вадаКнопка зміщується на 5 px на мобільному
TrivialКосметика, яка не впливає на роботуПомилка в слові в підвалі сайту

Чому це два різні поля, найкраще видно на крайніх випадках:

  • Висока серйозність, низький пріоритет: застосунок падає в старій версії браузера, якою майже ніхто не користується. Дефект серйозний, але виправлення можна відкласти.
  • Низька серйозність, високий пріоритет: помилка в назві компанії на головній сторінці за день до рекламної кампанії. Технічно дрібниця, але виправити треба негайно.

Три приклади: погано → добре

Приклад 1. Вебзастосунок

Погано: «Не можу оформити замовлення, кнопка не працює. Виправте терміново!»

Добре:

Заголовок: Кошик: кнопка «Оформити замовлення» неактивна після видалення промокоду

Середовище: Windows 11, Chrome 131, staging, збірка 2.14.0

Передумови: користувач авторизований; у кошику 1 товар; застосовано промокод SALE10

Кроки: 1) Відкрити /cart. 2) Натиснути «Видалити промокод». 3) Натиснути «Оформити замовлення».

Очікуваний результат: відкривається сторінка оформлення замовлення з ціною без знижки.

Фактичний результат: кнопка неактивна, клік нічого не робить; у консолі: TypeError: Cannot read properties of null (reading 'discount').

Severity / Priority: Critical / High — користувач не може купити товар.

Вкладення: відео 12 с, скриншот консолі.

Приклад 2. Мобільний застосунок

Погано: «На айфоні все з'їхало».

Добре:

Заголовок: Картка товару, iPhone SE (iOS 18): кнопка «Купити» перекриває ціну

Середовище: iPhone SE 3-го покоління, iOS 18.1, застосунок 5.2.0 (TestFlight)

Кроки: 1) Відкрити будь-який товар з назвою довше 40 символів. 2) Прокрутити до блоку ціни.

Очікуваний результат: ціна й кнопка «Купити» розташовані одна під одною, обидві видимі повністю.

Фактичний результат: кнопка накладається на ціну, видно лише першу цифру. На iPhone 15 і Pixel 8 дефект не відтворюється.

Severity / Priority: Major / Medium — ціну можна побачити в кошику, але клієнт може піти.

Вкладення: скриншоти з iPhone SE і iPhone 15 для порівняння.

Приклад 3. API

Погано: «Замовлення з нулем ламає бекенд».

Добре:

Заголовок: POST /api/orders повертає 500 замість 400, якщо quantity = 0

Середовище: staging API, збірка 2.14.0, Postman 11

Кроки: 1) Отримати токен тестового користувача. 2) Надіслати POST /api/orders з тілом {"productId": 15, "quantity": 0}.

Очікуваний результат: 400 Bad Request з повідомленням про некоректну кількість (за специфікацією API, розділ «Orders»).

Фактичний результат: 500 Internal Server Error, тіло відповіді порожнє; у таблиці orders з'являється запис зі статусом NULL.

Severity / Priority: Major / High — у базу потрапляють некоректні дані.

Вкладення: експорт запиту з Postman, SQL-запит, який показує запис.

Зверніть увагу: у третьому прикладі тестувальник перевірив не лише відповідь, а й базу даних. Саме тому SQL і тестування API — обов'язкова частина навичок junior QA.

Скриншоти, відео й логи

  • Скриншот — для візуальних дефектів. Виділіть проблемне місце рамкою чи стрілкою, обріжте зайве.
  • Відео — коли важлива послідовність дій або дефект «миготить». 10–30 секунд достатньо.
  • Консоль браузера — текст помилки з вкладки Console в DevTools.
  • Мережа — запит і відповідь з вкладки Network або HAR-файл, якщо проблема на межі фронтенду й бекенду.
  • Логи застосунку — для мобільних і серверних дефектів, якщо маєте до них доступ.

Перевірте, що у вкладеннях немає паролів, токенів і персональних даних реальних користувачів.

Життєвий цикл дефекту

Після відправки баг-репорт проходить через статуси. Програма ISTQB наводить як приклади: відкритий, відкладений, дублікат, очікує виправлення, очікує повторної перевірки, повторно відкритий, закритий, відхилений. У Jira типовий шлях виглядає так:

New → Open → In Progress → Fixed → Retest → Closed (або Reopened, якщо дефект не виправлено).

Завдання тестувальника не закінчується відправкою: після виправлення треба перевірити, що дефект справді зник і що поруч нічого не зламалося. Саме для цього існує регресійне тестування.

Чек-лист перед відправкою

  • Дефект відтворюється ще раз за моїми кроками.
  • Я перевірив, що такого баг-репорту ще немає (дублікат).
  • Заголовок відповідає на питання «що, де, коли».
  • Вказано середовище і версію збірки.
  • Кроки нумеровані, одна дія — один крок.
  • Є очікуваний і фактичний результат.
  • Severity і priority проставлені обґрунтовано, а не «все Critical».
  • Додано скриншот, відео або логи.
  • Один дефект — один баг-репорт.
  • Текст без емоцій і звинувачень.

Типові помилки новачків

  • Кілька дефектів в одному репорті. Один виправлять, другий загубиться.
  • «Не працює» без деталей. Розробник витратить час на те, щоб зрозуміти, що саме.
  • Пропущені передумови. Дефект відтворюється лише з промокодом, а про промокод ні слова.
  • Інтерпретація замість факту. «Сервер не витримує навантаження» замість «відповідь приходить через 30 секунд з кодом 504».
  • Завищена серйозність. Якщо все Critical, команда перестає довіряти оцінкам.
  • Тон звинувачення. Баг-репорт описує продукт, а не людину.

Чи можна писати баг-репорти з AI

Можна, як допомогу: асистент перетворить ваші нотатки на структурований текст, перекладе англійською, запропонує кращий заголовок. Але кроки треба відтворити самостійно, а результат перевірити: AI легко «додумує» деталі, яких не було. Не вставляйте в зовнішні чат-боти конфіденційні дані проєкту без дозволу компанії.

QA

Хочете, щоб ваші баг-репорти хтось перевірив?

На курсі QA викладач розбирає ваші баг-репорти й тест-кейси, а наприкінці ви готуєтеся до співбесіди на позицію Junior QA Engineer.

Записатися на курс QA →

Часті запитання

Що таке баг-репорт простими словами?

Баг-репорт — це документ, який описує знайдений дефект так, щоб розробник міг його відтворити й виправити без додаткових питань. У глосарії ISTQB звіт про дефект визначено як «документація щодо виникнення, характеру та статусу дефекту». Мінімум, який має бути в кожному баг-репорті: заголовок, середовище, кроки відтворення, очікуваний і фактичний результат, серйозність і вкладення.

Чим severity відрізняється від priority?

Severity (серйозність) показує, наскільки сильно дефект впливає на роботу системи, і її зазвичай визначає тестувальник. Priority (пріоритет) показує, наскільки терміново дефект треба виправити з погляду бізнесу, і остаточно його встановлює менеджер продукту або лід команди. Тому бувають критичні дефекти з низьким пріоритетом і дрібні — з високим.

Скільки кроків відтворення має бути в баг-репорті?

Стільки, скільки потрібно, щоб дефект відтворив інший член команди, і не більше. Зазвичай це 3–8 кроків. Одна дія — один крок. Якщо кроків виходить понад 10–12, спробуйте знайти коротший шлях до дефекту: це часто допомагає зрозуміти його причину.

Чи обов'язково додавати скриншот або відео?

Для візуальних дефектів скриншот обов'язковий, для дефектів у послідовності дій бажане коротке відео. Для помилок на рівні API чи бекенду корисніші логи консолі, вкладка Network або HAR-файл. Вкладення не замінюють кроків відтворення, а доповнюють їх.

Як писати баг-репорти: українською чи англійською?

Мовою, прийнятою в команді. У багатьох IT-компаніях, особливо з іноземними клієнтами, баг-трекер ведуть англійською, тому junior-тестувальнику варто вміти писати короткі й однозначні баг-репорти англійською. Головне — однакова мова в межах проєкту.

Що робити, якщо розробник каже, що це не баг, а фіча?

Поверніться до вимог: якщо поведінка суперечить специфікації, макету чи прийнятим домовленостям, послайтеся на конкретне місце. Якщо вимог немає, винесіть питання на продакт-менеджера чи аналітика, а не сперечайтеся в коментарях. Дефект зі статусом «Rejected» — нормальний результат, якщо рішення ухвалено свідомо.

Джерела

Стати QA-тестувальником →

Фото автора: Юлія Євгієнко

Про автора

Project Delivery Manager у STRUKTURA, раніше QA Engineer

Project Delivery Manager у STRUKTURA, до цього 4 роки працювала там само QA Engineer. Як зовнішня експертка брала участь у розробці курсів Prog Academy за підпискою з управління проєктами та QA; у блозі пише про тестування і професію QA.

Терміни зі статті

Короткі визначення понять, які згадуються вище.

Читайте також

Контакт

Записатися на консультацію

Вкажіть актуальний номер, ми зателефонуємо в будь яку країну :)