Bugfix-loop: від відтворення до regression evidence
Зникнення помилки саме по собі не доводить, що дефект усунуто. AI може перехопити виняток надто широко або приховати симптом. Надійний fix спирається на встановлену першопричину, regression test і фактичні результати перевірок.
- Відтворіть дефект і зафіксуйте точний input та результат.
- Опишіть root cause, а не лише зовнішній симптом.
- Створіть regression test, який падає на старому коді.
- Внесіть мінімальну зміну в причину дефекту.
- Запустіть targeted checks.
- Перевірте сусідню функціональність.
- Перегляньте diff вручну.
- Збережіть regression evidence у PR або EVIDENCE_LOG.md.
Червоний до fix, зелений після fix
Тест, написаний лише після виправлення, не доводить, що він виявляв початковий баг. Сильніший доказ — один і той самий сценарій, який падає на старому коді з фактичним 500, а після мінімальної зміни проходить з погодженим 400.
На HTTP-рівні regression test має перевіряти HTTP-статус і відповідне тіло відповіді, а не лише внутрішній exception у сервісі.
Before fix: empty-cart test failed; actual status 500
Root cause: empty input reached unsafe total calculation
After fix: the same test passes; expected status 400
Adjacent checks: valid order remains successful
Diff review: only approved files changed Мінімальний fix не переробляє весь модуль
- Не змінюйте інші endpointʼи без окремої вимоги.
- Не створюйте загальну систему validation лише для локального бага.
- Не додавайте залежності без потреби.
- Не перейменовуйте DTO та не перебудовуйте checkout architecture паралельно.
- Не виправляйте неповʼязані проблеми в тому самому diff.
Що записати в regression evidence
| Доказ | Навіщо він потрібен |
|---|---|
| Назва тесту до fix | Показує, що сценарій справді виявляв дефект |
| Стара відповідь | Фіксує фактичний початковий симптом |
| Результат після fix | Підтверджує очікувану нову поведінку |
| Суміжні тести | Показують відсутність очевидної регресії |
| Ручний сценарій | Підтверджує відтворюваний endpoint або команду |
| Змінені файли та root cause | Зʼєднують доказ із конкретною зміною |
Роль Claude в bugfix-loop
- Попросіть створити regression test без змін production-коду.
- Перевірте, що тест падає на старому коді.
- Попросіть мінімальний fix у межах approved scope.
- Запустіть targeted і суміжні перевірки.
- Попросіть скласти перелік фактично підтверджених результатів.
- Звірте кожне твердження з diff і виводом команд.
Канонічне джерело уроку · JavaRush
Відкрити матеріал JavaRush