[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-testirovanie-chto-takoe-code-coverage":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},1295,"chto-takoe-code-coverage",42,"testirovanie","Тестирование","✅","Что такое Code Coverage?","Code Coverage (покрытие кода) -- метрика, показывающая, какой процент кода выполняется при запуске тестов. Стандартный инструмент в Java-экосистеме -- JaCoCo.\n\n### Типы покрытия\n\n| Тип | Что измеряет | Пример |\n|-----|-------------|--------|\n| Line coverage | % строк, выполненных тестами | 80 из 100 строк = 80% |\n| Branch coverage | % ветвлений (if\u002Felse, switch) | Протестирована ли каждая ветка if? |\n| Method coverage | % методов, вызванных тестами | Все ли публичные методы вызваны? |\n| Instruction coverage | % байткод-инструкций | Наиболее точная метрика |\n\n### JaCoCo -- настройка в Maven\n\n\u003Cdetails>\n\u003Csummary>Конфигурация JaCoCo в pom.xml\u003C\u002Fsummary>\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.jacoco\u003C\u002FgroupId>\n    \u003CartifactId>jacoco-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>0.8.12\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cgoals>\u003Cgoal>prepare-agent\u003C\u002Fgoal>\u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n        \u003Cexecution>\n            \u003Cid>report\u003C\u002Fid>\n            \u003Cphase>test\u003C\u002Fphase>\n            \u003Cgoals>\u003Cgoal>report\u003C\u002Fgoal>\u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n        \u003Cexecution>\n            \u003Cid>check\u003C\u002Fid>\n            \u003Cgoals>\u003Cgoal>check\u003C\u002Fgoal>\u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Crules>\n                    \u003Crule>\n                        \u003Climits>\n                            \u003Climit>\n                                \u003Ccounter>LINE\u003C\u002Fcounter>\n                                \u003Cvalue>COVEREDRATIO\u003C\u002Fvalue>\n                                \u003Cminimum>0.80\u003C\u002Fminimum>\n                            \u003C\u002Flimit>\n                        \u003C\u002Flimits>\n                    \u003C\u002Frule>\n                \u003C\u002Frules>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n\u003C\u002Fplugin>\n```\n\n\u003C\u002Fdetails>\n\n### Разумные пороги покрытия\n\n| Метрика | Минимум | Комментарий |\n|---------|---------|------------|\n| Line coverage | 80% | Разумный минимум для большинства проектов |\n| Branch coverage | 70% | Важнее line coverage -- показывает edge cases |\n| 100% | Не цель | Геттеры, DTO, конфигурация не нуждаются в тестах |\n\n### Mutation Testing -- следующий уровень\n\nCode coverage показывает, что код выполняется, но не показывает, что тесты действительно ловят ошибки. Mutation testing (PIT) вносит мутации в код (меняет `>` на `\u003C`, удаляет строки) и проверяет, падают ли тесты. Если тест не замечает мутацию -- он бесполезен.\n\n### Ключевые принципы\n\n- 80% line coverage -- разумный минимум для большинства проектов\n- 100% -- не цель: геттеры, конфигурация, DTO не нуждаются в тестах\n- Branch coverage важнее line coverage -- показывает, протестированы ли edge cases\n- JaCoCo интегрируется с SonarQube для визуализации и трендов\n\n### Частые ошибки\n\n- Гонка за 100% -- тестирование `toString()` и конструкторов ради метрики бессмысленно\n- Coverage без assertions -- тест вызывает метод, но не проверяет результат; coverage растёт, качество -- нет\n- Exclusion вместо исправления -- исключение пакетов из отчёта вместо написания тестов\n\n### Как используется в 2026\n\n- JaCoCo + SonarQube -- стандартная связка в CI\u002FCD pipeline\n- Quality Gate: \"coverage не должен падать\" (delta check) важнее абсолютной цифры\n- Mutation testing (PIT) -- более продвинутая альтернатива: проверяет, ловят ли тесты реальные мутации в коде\n\n> **На собеседовании:** интервьюер хочет услышать не только \"JaCoCo измеряет покрытие\", но и понимание, что высокий coverage не гарантирует качество тестов (coverage без assertions). Частая ошибка -- назвать 100% как цель или не знать про branch coverage.","","junior",[15],"testing",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":20,"featuredSnippetReady":23},"Что такое Code Coverage? — Gymterview","Code Coverage (покрытие кода) -- метрика, показывающая, какой процент кода выполняется при запуске тестов. Стандартный инструмент в Java-экосистеме -- JaCoCo.","Code Coverage (покрытие кода) -- метрика, показывающая, какой процент кода выполняется при запуске тестов. Стандартный и",[15,13],true]