Что такое жизненный цикл дефекта (бага) в тестировании ПО?

Ответ

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

Основные этапы (статусы):

  1. New — дефект зарегистрирован.
  2. Assigned — баг назначен разработчику для исправления.
  3. Open / In Progress — разработчик приступил к анализу и исправлению.
  4. Fixed / Resolved — разработчик сообщил об исправлении.
  5. Retest / Pending Verification — тестировщик проверяет исправление.
  6. Verified — исправление подтверждено.
  7. Closed — дефект закрыт.

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

  • Rejected — дефект отклонен (например, как не воспроизводимый или не являющийся багом).
  • Deferred / Postponed — исправление отложено на будущие версии.
  • Duplicate — обнаружен дубликат существующего бага.
  • Reopened — баг воспроизводится после фикса, цикл начинается заново.

Пример workflow в JIRA:

New → In Progress → Resolved → Verified → Closed
          ↑                           ↑
       Reopened ←─────── Pending Verification (если FAIL)

Почему это важно: Четкий процесс обеспечивает отслеживаемость, контроль качества и позволяет анализировать метрики (например, время жизни бага).

Ответ 18+ 🔞

А, ну это классика, блядь! Жизненный цикл дефекта, ёпта! Это как история болезни у пациента, только пациент — твой код, а врачи — это мы, распиздяи.

Смотри, как это обычно происходит, на примере самого обычного, ебаного бага.

Этап первый: New (Новый). Ты сидишь, тестируешь, и тут — охуеть! — кнопка «Отправить» вместо того чтобы отправлять, нахуй, форму, просто мило тебе подмигивает. Ты такой: «Нихуя себе сюрприз!». И создаёшь баг. Он теперь как новорождённый пиздёныш в системе — только зарегистрирован и орет на весь мир о своём существовании.

Этап второй: Assigned (Назначен). Потом приходит тимлид или менеджер, смотрит на эту хуйню и говорит: «Вася, это твой косяк, блядь. Разбирайся». И швыряет баг тебе в очередь. Ты получаешь уведомление, и волнение ебать — терпения ноль.

Этап третий: Open / In Progress (В работе). Ты открываешь баг, начинаешь копаться в коде. Сидишь, думаешь: «Э, бошка, думай! Где я, сука, накосячил?». Это состояние «In Progress» — священное состояние поиска своей же прошлой мудацкой ошибки.

Этап четвёртый: Fixed / Resolved (Исправлен). Ага! Нашёл! Оказывается, вместо && написал ||, пидарас шерстяной! Поправил, запушил, коммитнул. Ставишь статус «Resolved». И чувствуешь себя богом, на пять минут. «Всё, пофиксил, идите нахуй».

Этап пятый: Retest / Pending Verification (На проверке). А вот тут, сука, самое интересное начинается! Баг летит обратно тестировщику. А тестировщик — он хитрая жопа. Он берёт, и начинает проверять не только то, что ты пофиксил, а ВСЁ, что рядом стоит. «А давайте-ка, — говорит, — ещё вот это покликаем». И если всё ок — красота. А если нет...

Этап шестой: Verified (Подтверждён) или Reopened (Переоткрыт). Если тестировщик доволен, он ставит «Verified». Это как печать «годен» на справке. А если он такой: «Ну блядь, Вася, ты же одну хуйню починил, а рядом другая вылезла!» — то баг летит обратно, в статус Reopened. И весь этот цирк, блядь, начинается по-новой! В рот меня чих-пых!

Этап седьмой: Closed (Закрыт). Это финал, мечта! Баг окончательно приказал долго жить, исправление подтверждено, все довольны. Его можно с почестями похоронить в архиве.

А ещё есть, блядь, побочные пути, как в квесте:

  • Rejected (Отклонён). Это когда разработчик смотрит на баг и говорит: «Это не баг, это фича, иди нахуй». Или: «У меня на трёх разных браузерах не воспроизводится, ты, дружок, гонишь».
  • Deferred (Отложен). Классика! «О, это, конечно, хуйня, но мы её починим в следующем квартале. Или в следующем году. Или никогда». Баг уходит в долгий ящик, все про него забывают.
  • Duplicate (Дубликат). А это когда ты, такой весь из себя, нашёл баг, а оказывается, его уже неделю назад нашла Светка из соседнего отдела. И тебе тихо, по-пацански, ставят «Duplicate». Обидно, сука!

Вот как это выглядит в той же JIRA, например:

New → In Progress → Resolved → Verified → Closed
          ↑                           ↑
       Reopened ←─────── Pending Verification (если FAIL)

А зачем этот весь пиздец нужен? Да чтобы не было бардака, блядь! Чтобы понимать, на каком этапе какая хуйня находится, кто за неё отвечает, и сколько времени она уже всем мозги выносит. Без этого — пидары налетят, проект накроется медным тазом, и все будут кивать на тебя, говоря: «А кто, сука, последний баг фиксил?».

Короче, жизненный цикл дефекта — это наша суровая реальность. Принимай, как есть.