Skip to content
PПромтбук
RUEN
04Дебаг

Минимизация repro-кейса

От «не работает на проде» до 10 строк кода которые точно воспроизводят баг.

Минимизируй repro для бага: {{bug}}.

Зачем

  • Маленький repro → быстрее дебаг
  • Помогает понять root cause (часто понимаешь по ходу минимизации)
  • Можно отправить в issue / поддержку
  • Превращается в regression-тест

1. Зафиксируй baseline

Что точно воспроизводит баг сейчас? Запиши шаги.

- Open /dashboard
- Click "New project"
- Type "abc"
- Click Save
→ 500 error

2. Изолируй слой

Найди в каком слое баг:

  • Frontend? Воспроизведи без бэка (mock API)
  • Backend? Воспроизведи без фронта (curl)
  • БД? Воспроизведи на test-DB
  • Сеть? Проверь без CDN/прокси

Каждый раз половину тестируемой системы убирай.

3. Минимизируй данные

Текущие данные сложные? Уменьшай:

  • Большой массив → 2 элемента, потом 1
  • Длинная строка → 1 символ
  • Сложный объект → только обязательные поля
  • 1000 записей в БД → 1
  • Длинный сценарий → один шаг

4. Минимизируй код

В коде иди по строкам и убирай:

  • Все try/catch
  • Все логи
  • Все условные ветки кроме идущей к багу
  • Все асинхронные обёртки если можно синхронно

Каждое удаление: запускай → баг ещё есть? Да — продолжай. Нет — верни.

5. Минимизируй окружение

  • Запусти на чистом node без проекта
  • Удали все зависимости кроме нужных
  • Свежий .env с минимальными переменными
  • Без cache, cookies, localStorage

6. Целевой репро

// minimal.ts - reproduce bug in <50 LOC
import { thing } from './thing';

const result = thing({ key: 'value' });
console.log(result);
// Expected: 'foo'
// Actual: undefined

Можно скопировать в clean репо → баг должен воспроизводиться.

7. Bisect (если git)

Если знаешь когда работало:

git bisect start
git bisect bad         # HEAD сломан
git bisect good v1.0   # тогда работало
# git автоматически проводит binary search

Найдёт коммит который ввёл баг.

Хороший минимальный repro

  • < 100 строк
  • < 5 файлов
  • Без внешних зависимостей где можно
  • Запускается одной командой
  • Чёткое "expected" vs "actual"

Анти-паттерны

  • "Иногда работает, иногда нет" → найди что делает разницу
  • Repro работает только на твоей машине → environment-зависим, нужна изоляция
  • Repro 200 строк → недоминимизирован

В конце дай

  • Минимальный repro как код
  • Точные шаги воспроизведения
  • Expected vs actual
  • Окружение (версия Node/браузера, OS)
К подразделу «Дебаг»
Похожие промты