Перейти к содержимому

Найти баг и его причину

Два близких случая. Либо вы подозреваете, что в фиче есть баги, и хотите их найти и доказать. Либо баг уже есть, и нужна причина.

Ставлю бандл bug-lifecycle (не привязан к языку)
Запускаю /dex-bug-finder:find-bugs - искать баги; /dex-debugger:root-cause - искать причину
Окно терминала
./install-bundle/install-bundle.sh bug-lifecycle
/dex-bug-finder:find-bugs "оформление заказа со скидкой"

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

  • Команда строит модель рисков и чартеры по зонам, затем идёт на «охоту»: пытается сломать неявные предположения.
  • Каждую находку она сверяет с оракулом корректности: «не упало» не означает «правильно». Поведение по спецификации не баг, а вопрос к требованиям.
  • Результат - минимальное воспроизведение (красный тест) с severity и карточки багов, готовые для передачи в расследование и в трекер.
  • Цель - найти и доказать баг, не чинить его.
/dex-debugger:root-cause "после деплоя 500 на POST /orders, в логах NullReferenceException в OrderMapper"

Аргумент - симптом: stack trace, лог или шаги воспроизведения; полезно добавить ожидаемое поведение. Если симптома нет, работа не начинается: команда скажет, чего не хватает.

  • Продуктовый код команда не правит. Она ищет источник по коду и уликам: изолирует, проверяет гипотезу и пытается её опровергнуть.
  • Результат: воспроизводящий тест (остаётся незакоммиченным в дереве) и список проблем с местом (файл и строка), механизмом и severity. Первой идёт причина симптома.
  • У причины записано «если X, то Y, потому что Z», попытки опровержения и итоговая уверенность.
  • Первой строкой ответа идёт статус: complete, blocked или partial. Если для причины нужен рантайм (профайлер, дамп, стенд), команда предложит /dex-incident-investigator:investigate.

Исправление назначаете вы отдельным вызовом: кодер вашего стека либо dex-bug-fixer, когда багов целая пачка.

  • Поведение по спецификации - не баг. Если код делает то, что написано в требованиях, находка превращается в вопрос к требованиям, а не в карточку бага.
  • Ничего не чинится. Обе команды ищут и доказывают, но продуктовый код не правят. Воспроизводящий тест root-cause оставляет незакоммиченным в рабочем дереве: не удивляйтесь лишнему файлу.
  • Без симптома работа не начинается. Для /dex-debugger:root-cause нужен stack trace, лог или шаги воспроизведения.
  • Нужен рантайм. Если причину по коду не найти (профайлер, дамп, стенд), команда предложит /dex-incident-investigator:investigate.