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

Ответ

Типичный жизненный цикл дефекта (bug workflow) включает следующие ключевые статусы:

  1. New / Open — дефект заведен и ожидает назначения.
  2. Assigned — баг назначен конкретному разработчику на исправление.
  3. In Progress / Open — разработчик приступил к анализу и исправлению.
  4. Fixed / Resolved — разработчик сообщил об исправлении и отдал на проверку.
  5. Verified / Closed — тестировщик подтвердил исправление, баг закрыт.
  6. Reopened — дефект воспроизвелся после фикса; цикл повторяется.
  7. Rejected — баг не подтвердился, является дубликатом или работает как задумано.
  8. Deferred / Postponed — исправление отложено на будущие релизы.

Типичный workflow:

flowchart LR
    A[New] --> B[Assigned]
    B --> C[In Progress]
    C --> D[Fixed]
    D --> E{Verified?}
    E -- Yes --> F[Closed]
    E -- No --> G[Reopened]
    G --> B
    B -- Rejected --> H[Rejected]
    B -- Deferred --> I[Deferred]

Ответ 18+ 🔞

О, смотри-ка, классика жанра! Жизненный путь обыкновенного бага, или как он из милого пушистого котика превращается в маньяка с бензопилой, который тебе всю систему в щепки.

Вот смотри, как это обычно происходит, по шагам, блядь:

  1. New / Open — Тут всё начинается. Кто-то, обычно тестировщик с горящими глазами, нашёл какую-то дичь. Создаёт тикет, пишет «НЕ РАБОТАЕТ!!!», прикладывает скриншот, где курсор мыши закрывает половину экрана. Баг родился, сука. Лежит и ждёт своей участи.

  2. Assigned — Ведущий разработчик, глядя на эту очередь, ёбта, с чувством глубокого отвращения тыкает пальцем в небо и назначает баг тебе. «Вот, Вася, разберись с этим». Ты получаешь уведомление, и у тебя в душе поселяется маленькая, но противная тоска.

  3. In Progress / Open — Ты, скрипя зубами, открываешь этот тикет. Начинаешь ковыряться. «И какого хуя это должно работать? А, понятно, тут кривые руки у того, кто писал... О, бля, это же я полгода назад писал». Волнение ебать.

  4. Fixed / Resolved — После трёх часов проклятий, пяти чашек кофе и одного найденного волшебного символа точка с запятой вместо запятой, ты торжественно пишешь «FIXED» и плюёшь в комментарий «Исправлено. Не воспроизводится». Чувствуешь себя богом. На пять минут.

  5. Verified / Closed — Тот самый тестировщик возвращается, проверяет. Если повезло, и ты действительно не накосячил, он ставит статус «Closed». Баг отправляется в корзину истории. Ура! Но это в сказках, блядь.

  6. Reopened — А в реальности через полчаса приходит нотификация: «REOPENED. Фикс не работает. Воспроизводится на тестовом стенде, когда нажимаешь кнопку левой пяткой в полнолуние». И вот тут начинается пиздец. Всё по новой. Терпения ноль ебать.

  7. Rejected — Иногда случается чудо. Ты смотришь на баг и понимаешь: «Да это же не баг, это фича!» Или «Это дубликат того кошмара, что Петя фиксил в прошлом году». Ты пишешь гневное обоснование и отправляешь баг в утиль со статусом «Rejected». Чувство праведного триумфа.

  8. Deferred / Postponed — Самый хитрый статус. «Да, баг есть. Серьёзный? Возможно. Исправим? Обязательно. Когда? Ну, в одном из следующих релизов... Может, в следующем году... Или никогда». Баг уходит в долгий ящик, где пылится вместе с мечтами о нормальном коде.

А вот, смотри, как вся эта карусель выглядит, если нарисовать. Блоки кода не трогаю, как велели.

flowchart LR
    A[New] --> B[Assigned]
    B --> C[In Progress]
    C --> D[Fixed]
    D --> E{Verified?}
    E -- Yes --> F[Closed]
    E -- No --> G[Reopened]
    G --> B
    B -- Rejected --> H[Rejected]
    B -- Deferred --> I[Deferred]

Короче, жизненный цикл. От рождения через ад разработки до забвения или вечных мук в аду «Reopened». Стандартная история, ничего личного. Просто бизнес, ёпта.