Что означает статус бага ‘Cannot Reproduce’ и как с ним работать?

Ответ

Статус 'Cannot Reproduce' (CNR, «Не воспроизводится») присваивается баг-репорту, когда тестировщик или разработчик не может воссоздать описанную проблему, следуя указанным шагам в заданном окружении.

Основные причины возникновения статуса CNR:

  1. Неполный или неточный баг-репорт:
    • Пропущены ключевые шаги или предварительные условия.
    • Неточные данные для ввода.
    • Не указана конкретная версия приложения/браузера/ОС.
  2. Различия в окружении:
    • Версия ПО, операционной системы, браузера, библиотек.
    • Конфигурационные настройки (разрешение экрана, локаль, часовой пояс).
    • Состояние данных (конкретная запись в БД, кэш).
  3. Проблемы, зависящие от состояния или времени:
    • Гонки условий (race conditions).
    • Проблемы, проявляющиеся только под нагрузкой.
    • Ошибки, связанные с истекшими таймерами или сессиями.

Действия для разрешения ситуации 'Cannot Reproduce':

Действие Описание
Уточнение у автора Запросить у нашедшего баг дополнительные детали: скриншоты/видео, логи, точные версии, дампы данных.
Воспроизведение на идентичном окружении Использовать ту же ОС, версию браузера, набор данных, что и автор отчета.
Расширенное логирование Добавить в код детальное логирование или использовать инструменты отладки (Chrome DevTools, Fiddler) для анализа сетевых запросов и состояния приложения.
Проверка смежных областей Попробовать выполнить похожие, но не идентичные действия.
Использование инструментов записи Попросить автора использовать встроенные средства записи экрана (например, в Selenium IDE, браузере) при следующем возникновении.

Пример плохого и хорошего описания шагов:

**Плохо (вероятный CNR):**
Шаги: 1. Зайти в корзину. 2. Оформить заказ.
Ожидаемый: Заказ создан.
Фактический: Ошибка.

**Хорошо:**
Окружение: Chrome 121, Windows 11, v2.5.1 приложения.
Предусловие: В корзине 1 товар "Телефон X" (ID=555).
Шаги:
1.  Перейти на страницу /cart.
2.  Нажать кнопку "Checkout".
3.  В форме выбрать "Доставка курьером".
4.  Нажать "Оплатить картой".
Ожидаемый: Переход на страницу успешного оформления (/success).
Фактический: Появилась алерт-ошибка "Payment failed" (скриншот приложен).
Логи из консоли браузера: `Error 400: Invalid shipping method ID`. 

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

Ответ 18+ 🔞

Да ты посмотри, что творят-то! Присылают они мне, сука, баг-репорт, а я его воспроизвести не могу! Статус такой есть, «Cannot Reproduce», или по-нашему — «Не воспроизводится, блядь». Сидишь, ебёшь мозг, повторяешь шаги, а нихуя не падает! Чистая магия, ёпта!

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

Почему так бывает, ёбана?

  1. Отчёт — говно полное. Там шаги пропущены, данные левые, версия не указана. Написали: «Нажимаю кнопку — всё падает». А какую кнопку, в каком окне, после каких действий, под каким знаком зодиака, блядь? Хуй поймёшь!
  2. Окружение другое. У тебя Windows 11, а у него — Linux на дохлом ноуте. У тебя браузер свежий, а у него — Internet Explorer, который уже в аду варится. Или в его базе какая-то ебучка записана, а у тебя — чистая.
  3. Проблема-невидимка. Гонки какие-то, ёбушки-воробушки, когда два процесса друг другу мешают. Или только под нагрузкой вылазит, когда тысяча пользователей одновременно жмёт. А ты один сидишь — и нихуя.

Что делать, если тебе впендюрили такой баг?

Что делаем Зачем, нахуй?
Допрашиваем автора Пишем ему: «Чувак, бля, а скриншоты есть? А логи консоли? А какая у тебя версия сборки, не та, что вчерашняя?». Требуй всё, вплоть до дампа памяти, если надо.
Клонируем его конуру Ставим ту же операционку, тот же браузер, те же данные в базу. Воссоздаём его кривое окружение один в один.
Включаем режим параноика Добавляем в код тонну логов, включаем все инструменты разработчика, смотрим каждый сетевой запрос. Ищешь ту самую иголку в стоге сена.
Шаримся рядом Может, баг не на этих точных шагах, а если сделать почти так же? Пробуешь разные варианты, как маньяк.
Просим записать Если баг плавающий, говоришь: «Друг, в следующий раз, как увидишь, сразу жми «Запись экрана»!». Пусть видео пришлёт, а не словами пересказывает.

Смотри, вот тебе наглядный пиздец:

**Пиздец, а не описание (гарантированный CNR):**
Шаги: 1. Зайти в корзину. 2. Оформить заказ.
Ожидаемый: Заказ создан.
Фактический: Ошибка.
(И сиди потом, гадай, что за ошибка и на каком шаге, блядь)

**А вот как надо бы, по-человечески:**
Окружение: Chrome 121, Windows 11, версия приложения v2.5.1.
Предусловие: В корзине уже лежит один товар "Телефон X" (ID=555).
Шаги:
1.  Перейти на страницу /cart.
2.  Нажать кнопку "Checkout".
3.  В форме выбрать "Доставка курьером".
4.  Нажать "Оплатить картой".
Ожидаемый: Переход на страницу успешного оформления (/success).
Фактический: Вылезла алерт-ошибка "Payment failed" (скриншот приложен).
Логи из консоли браузера: `Error 400: Invalid shipping method ID`.

Вот когда всё так расписано — это другое дело! А если после всех танцев с бубном, после впиндюривания в логи и воссоздания его кривой среды, баг так и не проявился — тогда да, можно закрыть с этим CNR. Но! Если он потом снова вылезет с новыми доказательствами — сразу переоткрываем, блядь, и продолжаем копать. Волнение ебать, но терпения ноль!