Files
project-auth-server/docs/testing-history/2026-05-04-exclusion-precision/SUMMARY.md
T

2.7 KiB

2026-05-04 jacocoExclusions 정밀화

한 줄 결론

**/config/** 광역 제외를 클래스명 컨벤션 기반(*Configuration/*Config/*Properties/*Application)으로 좁혀, bootstrap 모듈 라인 커버리지가 정상 운영 빌드 기준 0% → 86.8%로 노출되도록 했다. 그동안 핵심 핸들러(ApiErrorController, SecurityResponseExceptionHandler 등)가 측정에서 통째로 빠져 있던 문제를 해소했다.

변경 범위

  • build.gradlejacocoExclusions 패턴 변경
    • 제거: **/AuthApplication.class, **/config/**
    • 추가: **/*Application.class, **/*Configuration.class, **/*Config.class, **/*Properties.class
  • docs/testing-coverage-policy.md 제외 목록 업데이트
  • 코드 변경 없음, 테스트 변경 없음 (측정 정책만 수정)

Before / After 수치 (운영 빌드 기준)

모듈 BEFORE 라인 AFTER 라인 BEFORE 메서드 AFTER 메서드
application 70.9% 70.9% 63.6% 63.6%
presentation 24.8% 24.8% 25.0% 25.0%
infrastructure 81.5% 81.5% 79.2% 79.2%
bootstrap 0.0% 86.8% 0.0% 95.2%

bootstrap의 BEFORE 0%는 진짜 0%가 아니라 **/config/** exclusion 때문에 핸들러가 통째로 측정에서 빠진 결과였다. 사과-사과 비교는 이전 사건(2026-05-04 jqwik 도입)에서 80.7% → 80.3%로 확인되었으며, 본 사건은 그 진짜 점수가 운영 빌드에서도 보이게 만든 정책 정밀화다.

자동 검출 가능해진 회귀

  • 핸들러를 직접 수정한 PR이 운영 게이트(coverageGate)에 잡히게 됨 — 이전에는 측정 자체가 안 되어 어떤 변경도 통과
  • 핵심 핸들러가 신규 분기를 추가하면 라인/브랜치 커버리지가 즉시 떨어져 보임

측정 조건 (재현용)

항목
BEFORE 커밋 53e27cf (Tier 4 제거 직후)
AFTER 커밋 (본 커밋)
측정 명령어 ./gradlew clean test jacocoTestReport
측정 조건 차이 jacocoExclusions 정의만 변경, 그 외 모두 동일

한계 / 미해결

  • presentation 24.8%는 변하지 않음 — 통합 테스트가 bootstrap 모듈에 있어 presentation 모듈 단위 측정에 안 잡히는 구조적 문제. 다음 사건: aggregate 리포트 도입으로 해결 예정.
  • bootstrap 86.8%지만 Tier 1 임계치(95%)에는 아직 미달**/config/**에 가려져 있던 핸들러 일부에 단위 테스트가 추가로 필요.

첨부

  • AFTER 스냅샷: coverage-history/v0.0.1-SNAPSHOT/2026-05-04-exclusion-precision-after/
  • 직전 BEFORE 스냅샷: coverage-history/v0.0.1-SNAPSHOT/2026-05-04-jqwik-after/