Тести в CI — стандартизований доказ
Локальні тести дають швидкий feedback, а CI повторює ключові припущення у чистому стандартизованому середовищі. Типовий backend job може поєднати unit або service tests, integration/API checks, build JAR і smoke health endpoint.
Назви задач і потреба в тестових сервісах залежать від проєкту. Важливо, щоб workflow використовував ті самі базові команди, що й README та локальна розробка.
| Шар | Приклад сигналу |
|---|---|
| Unit / service | Локальна бізнес-логіка та правила |
| Integration / API | Взаємодія сервісу, БД, конфігурації та контракту |
| Build | Компіляція, залежності та пакування |
| Smoke | Запуск і health endpoint |
| Frontend | Install із lockfile, тести, build і короткий запуск |
Як читати червоний job
- Знайдіть step, який завершився помилкою.
- Відшукайте перше змістовне повідомлення про збій.
- Відокремте первинну помилку від каскадних повідомлень.
- Зіставте failure зі зміненими файлами та конфігурацією job.
- Повторіть тільки повʼязаний job після мінімального виправлення.
Класифікація failure
Падіння тесту не доводить автоматично, що зламано продукт. Можливо, функціональність змінилася свідомо й застарів тест. Порівнюйте assertion із бізнес-правилом і evidence з логу.
| Категорія | Ознаки | Перший напрямок |
|---|---|---|
| code | Exception, неправильна відповідь або результат | Змінений код і його контракт |
| test | Застаріле або некоректне очікування | Відповідність тесту бізнес-правилу |
| environment | Порт, сервіс або env не налаштовані | Runtime і конфігурація job |
| dependency | npm/Gradle, lockfile або несумісна версія | Залежності та wrapper |
| flaky | Нестабільний результат без зміни коду | Повторюваність та історія запусків |
| infrastructure / permissions | Runner, мережа, timeout або відсутній доступ | Стан CI і permissions |
Claude як діагност, а не автоматичний ремонтник
- Передайте лише релевантний лог і список змінених файлів.
- Попросіть відрізнити symptom, hypothesis і підтверджений факт.
- Перевірте гіпотезу локально або повторним вузьким job.
- Зробіть мінімальний fix після підтвердження.
- Не приймайте AI-висновок без первинного доказу.
Input: failing job log and changed-file list
Return:
- failure category
- probable root cause
- evidence from the log
- smallest verification command
- next action
Do not edit files, disable tests, or hide the failure. Flaky-тести, rerun і evidence
Один успішний rerun не доводить, що проблема зникла. Він лише показує, що тест може проходити нестабільно. Зафіксуйте частоту, умови, логи та свідоме рішення щодо ізоляції або виправлення.
Тимчасове вимкнення тесту робить pipeline зеленим, але прибирає сигнал регресії. Замість цього відокремте code, test, environment, dependency, flaky або infrastructure причину.
| Подія | Evidence для запису |
|---|---|
| Невдалий job | Назва step, перша помилка, команда і commit context |
| Гіпотеза | Чому вона пояснює симптом |
| Мінімальний fix | Змінені файли та non-goals |
| Повторна перевірка | Той самий сценарій і фактичний результат |
| Flaky signal | Кілька запусків, умови та подальше рішення |
Канонічне джерело уроку · JavaRush
Відкрити матеріал JavaRush