Коротка відповідь
middleCode coverage — це метрика, що показує частку коду, виконаного під час тестування. Наприклад, `npm test -- --coverage` генерує звіт про охоплення. 100 % покриття не є обов’язковим; важливіше, щоб критичні шляхи були протестовані.
Повне пояснення
Що це і навіщо
Code coverage вимірює, який відсоток рядків, умов чи шляхів у коді виконується під час запуску тестів. Це допомагає оцінити, наскільки повно тестовий набір охоплює логіку програми.
Ключові принципи
- Line coverage – кількість виконаних рядків.
- Branch coverage – охоплення усіх гілок умов (if/else, switch).
- Function coverage – виконання всіх функцій.
Як це працює
Тестовий runner (наприклад, Jest) підключає інструмент збірки коду (babel/tsc), вставляє трекери у виконуваний код, а потім під час тестування збирає статистику. Після завершення генерується звіт у форматі HTML, LCOV тощо.
Практика і реалізація
// jest.config.js
module.exports = {
collectCoverage: true,
coverageDirectory: 'coverage',
};
Запуск:
npm test -- --coverage
Тестування
- Unit – перевірка окремих функцій.
- Integration – тестування взаємодії між модулями.
- E2E – повний сценарій користувача (наприклад, Playwright).
Безпека і приватність
Покриття не гарантує відсутності вразливостей. Важливо тестувати edge‑case, наприклад, некоректні вхідні дані.
Особливості у контексті JavaScript/TypeScript
- TypeScript‑компілятор генерує мапи source map, що полегшують трасування.
- Для React‑компонентів корисно використовувати
react-testing-libraryзjest-dom.
Оптимізація
- Не треба прагнути 100 %; фокус на критичних шляхах.
- Використовуйте
--coverageThresholdдля мінімальних порогів.
Часті помилки
- Підрахунок лише рядків – ігнорує гілки.
- Неправильні source maps – помилкові лінії у звіті.
- Тестування лише позитивних сценаріїв – пропускає edge‑case.
- Відсутність
coverageDirectory– звіт зникає після CI. - Невикористання
threshold– не виявляє падіння покриття. - Тестування у продакшн‑середовищі – може бути повільним.
- Занадто багато моків – знижує реальність тесту.
- Невідповідність версій Jest і Babel – помилки збірки.
Cheatsheet
npm test -- --coverage– запуск з збіркою покриття.--coverageThreshold– встановлення мінімальних порогів.jest --watchAll– автоматичне оновлення при зміні коду.
Follow‑up питання
- Які типи покриття існують і коли їх використовувати?
- Як інтегрувати coverage у CI/CD pipeline?