Что такое баг? Опишите жизненный цикл бага


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

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

🔁 Жизненный цикл бага (Bug Life Cycle)

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

1. Обнаружение (Discovery / Detection)

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

  • Название и описание бага.

  • Шаги для воспроизведения.

  • Ожидаемое и фактическое поведение.

  • Скриншоты или видео (если возможно).

  • Окружение (версия ПО, браузер, ОС).

  • Приоритет и серьёзность (severity).

2. Новый (New / Open)

Баг поступает в систему трекинга (например, Jira, Bugzilla, Redmine) и получает статус «Новый». На этом этапе он ожидает рассмотрения.

3. Подтверждение (Confirmed / Triage)

Команда (обычно тимлид, QA-лид или продукт-менеджер) рассматривает баг и решает:

  • Реален ли баг?

  • Нужно ли его чинить?

  • Каков его приоритет (P1–P5) и серьёзность (Critical, Major, Minor)?

  • В какую итерацию или спринт его поместить?

Если баг не воспроизводится, он может быть отклонён с пометкой Cannot Reproduce или Invalid.

4. Назначен (Assigned)

Баг назначается разработчику, ответственному за устранение. Назначение может происходить вручную или автоматически, в зависимости от правил в команде.

5. В процессе (In Progress / Work in Progress)

Разработчик начинает работу над багом. Он анализирует проблему, воссоздаёт её у себя локально, проверяет код, находит причину и вносит исправления.

6. Исправлен (Fixed)

Разработчик устраняет баг и коммитит правку в репозиторий. В системе багов баг переходит в статус Fixed или Ready for Testing, сопровождаясь ссылкой на коммит, pull request или номер задачи.

7. На проверке (Testing / Ready for QA)

QA-инженер или другой тестировщик проверяет исправление. Это может быть:

  • Ручная проверка.

  • Запуск автоматических тестов (если есть).

  • Регрессионное тестирование — проверка, что не сломались другие части системы.

8. Закрыт (Closed)

Если баг больше не воспроизводится, он получает статус Closed. Иногда он может быть переведён в Verified перед закрытием.

9. Переоткрыт (Reopened)

Если после проверки или в будущем баг снова проявляется, он может быть переоткрыт. Его жизненный цикл начинается заново.

📋 Дополнительные статусы

В зависимости от процессов и системы управления задачами, могут быть дополнительные статусы:

  • Duplicate — дубликат уже заведённого бага.

  • Postponed / Deferred — отложен на потом, не критичен.

  • Won’t Fix — не будет исправляться (например, слишком дорого, редкий кейс).

  • Invalid — ошибка не подтверждена или вызвана неправильным использованием.

🏷️ Классификация багов

По серьёзности (Severity):

  • Blocker — блокирует работу приложения.

  • Critical — серьёзная ошибка, может привести к потере данных.

  • Major — нарушает ключевой функционал.

  • Minor — ошибка UI, не критична для работы.

  • Trivial — орфография, незначительные недочёты.

По приоритету (Priority):

  • P1 — исправить немедленно.

  • P2 — высокоприоритетный, в следующем спринте.

  • P3–P5 — низкий приоритет, в будущем.

🛠 Инструменты баг-трекинга

  • Jira — одна из самых популярных систем.

  • Bugzilla — классика open source.

  • Redmine, YouTrack, Asana, Trello — часто используются в разных масштабах проектов.

  • GitHub Issues, GitLab Issues — встроены в экосистему разработки.

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