Какой жизненный цикл у бага в системе отслеживания?

Ответ

После создания (заведения) в системе управления задачами (Jira, YouTrack, Bugzilla) баг проходит через последовательность статусов — жизненный цикл дефекта (Bug Lifecycle).

Типичный workflow:

  1. New / Открыт: Дефект зарегистрирован и ожидает первоначальной проверки.
  2. Assigned / Назначен: Баг назначен конкретному разработчику или команде для исправления.
  3. In Progress / В работе: Разработчик приступил к анализу и исправлению.
  4. Fixed / Исправлен: Разработчик завершил работу и помечает баг как исправленный, указывая версию сборки.
  5. Ready for Test / На проверке: Баг передан в очередь для тестирования.
  6. Testing / Проверка: Тестировщик проверяет исправление в указанной сборке.
  7. Verified / Проверено: Исправление подтверждено, баг может быть закрыт.
  8. Closed / Закрыт: Дефект окончательно закрыт.

Альтернативные пути:

  • Reopened / Переоткрыт: Если при проверке баг воспроизводится снова, он возвращается в статус In Progress или Assigned.
  • Won't Fix / Не будет исправлен: Решение об отказе от исправления (например, низкий приоритет, нецелесообразность).
  • Duplicate / Дубликат: Баг уже заведен ранее.
  • Cannot Reproduce / Не воспроизводится: Тестировщик или разработчик не смогли воспроизвести проблему по описанию.

Пример диаграммы состояний в Mermaid:

stateDiagram-v2
    [*] --> New
    New --> Assigned : Триаж
    Assigned --> InProgress : Взят в работу
    InProgress --> Fixed : Исправлен
    Fixed --> Testing : Сборка готова
    Testing --> Closed : PASS
    Testing --> InProgress : FAIL → Reopened
    New --> Rejected : (Duplicate, Won't Fix, Not a Bug)
    Rejected --> [*]
    Closed --> [*]

Ответ 18+ 🔞

Да ты посмотри, какой у бага путь-то тернистый, как у какого-нибудь Герасима с Муму, блядь! Жизненный цикл, сука, целая эпопея.

Ну, появляется он на свет, этот баг, как пиздёныш несчастный — статус New / Открыт. Лежит, сопит, ждёт, пока на него кто посмотрит. А потом приходит менеджер или лид, такой, с умным лицом, и говорит: «А, ну это, блядь, понятно. Этому — в жопу, этому — на анал, а этот пусть Васька чинит». И баг становится Assigned / Назначен. Ваське, естественно, похуй, он две недели в Jira не заглядывал.

Но рано или поздно, сука, совесть или тимлид его дожимают. Васька хватается за голову, открывает IDE и статус меняется на In Progress / В работе. Тут начинается самое интересное: он два дня ковыряется, орет «Да как эта хуйня вообще работала?!», находит строчку, где вместо == стоит =, и, довольный как слон, ставит Fixed / Исправлен. «Всё, ебта, починил! Сборка 1.2.3.45, тестируйте, падлы».

Баг летит обратно к тестировщику, статус Ready for Test / На проверке. Тестировщик, чувак, который уже предвкушает, как сейчас всё сломает, берёт его в работу (Testing / Проверка). Он открывает сборку, делает ТОЧНО ТАК ЖЕ, как в описании, и… охуеть! Баг воспроизводится, как миленький! Васька, сука, даже не запускал! Статус летит обратно в In Progress, но уже с пометкой Reopened / Переоткрыт. История повторяется, блядь, как в дурном сне.

Альтернативные пути — это вообще песня, ёпта!

  • Won't Fix / Не будет исправлен — это когда начальство смотрит на баг и говорит: «Ну, это, конечно, пиздец, но клиенты и так схавают, похуй». И все делают вид, что его не существует.
  • Duplicate / Дубликат — классика! Ты неделю описываешь баг, прикрепляешь логи, скриншоты, видео, а тебе в ответ: «Дубль, см. ISSUE-1488». И там ссылка на тикет, закрытый в 2012 году. Чих-пых тебя в сраку!
  • Cannot Reproduce / Не воспроизводится — магическая мантра разработчика. Значит, либо тестировщик — мудак, который не умеет кликать, либо боги сборок сегодня не в духе. Баг отправляется в корзину истории, и все делают вид, что так и надо.

И вот, после трёх кругов ада, когда тестировщик наконец ставит Verified / Проверено, а менеджер, вздохнув, кликает Closed / Закрыт — наступает тишина. Баг упокоился. До следующего рефакторинга, блядь.

Ну а чтобы совсем, сука, мозг не взорвался от этих статусов, вот тебе диаграммка, чтоб глазами поводить:

stateDiagram-v2
    [*] --> New
    New --> Assigned : Триаж
    Assigned --> InProgress : Взят в работу
    InProgress --> Fixed : Исправлен
    Fixed --> Testing : Сборка готова
    Testing --> Closed : PASS
    Testing --> InProgress : FAIL → Reopened
    New --> Rejected : (Duplicate, Won't Fix, Not a Bug)
    Rejected --> [*]
    Closed --> [*]

Вот и вся недолгая, но полная ебли, жизнь обычного бага. Прям как в том анекдоте: «Родился, пострадал, умер, переоткрылся».