Ответ
Контроль покрытия кода тестами — совместная ответственность, распределенная между ролями.
Распределение ответственности:
| Роль | Зона ответственности | Инструменты / Метрики |
|---|---|---|
| Разработчик | Написание модульных (unit) и интеграционных тестов для своей функциональности. Цель: высокое покрытие (80%+) бизнес-логики. | JaCoCo, SonarQube, локальный запуск тестов. |
| QA-инженер | Написание и поддержка end-to-end (E2E) и системных тестов. Цель: покрытие ключевых пользовательских сценариев. | Selenium, Cypress, Postman/Newman. |
| Tech Lead / Архитектор | Установка стандартов и порогов покрытия. Интеграция проверок в CI/CD. | Конфигурация пайплайна, правила в pom.xml/build.gradle. |
Практическая реализация в CI/CD (Maven + JaCoCo):
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit>
<counter>INSTRUCTION</counter>
<value>COVEREDRATIO</value>
<minimum>0.80</minimum> <!-- Минимум 80% -->
</limit>
</limits>
</rule>
</rules>
</configuration>
<executions>
<execution>
<goals><goal>check</goal></goals>
</execution>
</executions>
</plugin>
Такой конфиг гарантирует, что сборка упадет, если покрытие упадет ниже заданного порога.