본문 바로가기
프로젝트

테스트 커버리지 점진적으로 높이기

by jucheol 2025. 8. 25.

1. 왜 커버리지를 한 번에 올리기 어려울까?

처음 JaCoCo와 Codecov을 프로젝트에 도입하면서, 저는 테스트 커버리지를 한 번에 라인 80% / 브랜치 60%로 맞추자는 목표를 세웠습니다.
하지만 현실은 달랐습니다. 실제로 측정해보니 기준에 한참 못 미쳤고, CI는 계속해서 빌드 실패를 띄우더군요.
생각보다 낮은 수치를 마주했을 때 꽤 충격이었지만, 이 경험 덕분에 깨달았습니다.

👉 테스트 커버리지는 한 번에 끌어올리는 게 아니라, 점진적으로 개선하는 게 맞다.


2. 처음부터 너무 높게 잡지 않아도 된다

처음에는 욕심을 부려서 높은 기준을 잡았지만, 결국 현실에 맞게 라인 커버리지는 60%, 브랜치 커버리지는 0%로 기준을 낮췄습니다.

브랜치 커버리지를 0으로 둔 이유는 간단합니다.
개발 초기라 조건문(if, switch)이 많지 않아서 브랜치 커버리지가 낮게 나올 수밖에 없었기 때문이죠.
GPT에게 조언을 구하면서 알게 된 사실인데, 개발 초기에는 라인 커버리지를 중심으로 관리하고, 코드가 쌓일수록 브랜치 커버리지를 강화하는 방식이 훨씬 현실적이었습니다.

Codecov 역시 PR 기준을 너무 높이지 않고, 우선은 CI가 무조건 실패하지 않도록 설정했습니다.
“실패하지 않는 기준에서 시작해 점점 끌어올리자”라는 마음가짐이었습니다.


3. 커버리지를 올리는 작은 습관들

JaCoCo를 적용한 뒤로는 테스트 코드를 좀 더 꼼꼼히 작성하는 습관을 들이고 있습니다.
아직 코드리뷰 단계에서 강제하는 건 아니지만, 새로운 기능을 추가할 때마다 “이 로직을 테스트로 검증할 수 있을까?”라는 질문을 먼저 던지게 되더군요.

기존 코드를 리팩터링할 때도, 단순히 코드만 바꾸는 게 아니라 테스트를 같이 보완하려고 합니다.
“어차피 손대는 김에 테스트도 조금 더 추가하자”라는 접근으로 자연스럽게 커버리지가 올라가더라고요.


4. 단순 라인 커버리지보다 중요한 것

처음 JaCoCo를 세팅했을 때 라인 80% / 브랜치 60% 기준으로 잡았다가 빌드가 계속 실패한 건 꽤 뼈아픈 경험이었습니다.
덕분에 “브랜치 커버리지는 당장 신경 쓸 게 아니라, 나중에 코드가 쌓이면 올려야겠다”라는 교훈을 얻었죠.

조건문 테스트를 많이 다루게 될 때가 오면, 그때는 브랜치 커버리지를 적극적으로 끌어올릴 생각입니다.
예외 상황을 놓치지 않으려면 단순 라인 커버리지보다 분기 커버리지가 훨씬 유용하니까요.


5. 현실적인 커버리지 로드맵

저는 백엔드를 혼자 진행하고 있기 때문에, 커버리지를 “몇 개월 단위”로 올리기보다는 개발 진행률에 맞춰 점진적으로 높이는 방식을 택했습니다.

현재 기준:

  • 라인 커버리지: 60%
  • 브랜치 커버리지: 0%

앞으로는 기능이 늘어날수록, 그리고 코드가 복잡해질수록 커버리지 목표도 조금씩 끌어올릴 계획입니다.
예를 들어, 새로운 주요 기능이 완성되면 라인 커버리지를 70%로, 일정 수준의 조건문이 쌓이면 브랜치 커버리지를 30%로 맞춰가는 식이죠.


6. 커버리지는 목표가 아니라 성장 지표

JaCoCo와 Codecov을 적용하면서 제가 얻은 가장 큰 배움은, “절대적인 % 목표치보다 중요한 건 테스트 습관”이라는 사실이었습니다.

처음에는 수치에만 매달렸지만, 지금은 테스트 코드를 꼼꼼히 작성하는 습관을 키우는 게 더 큰 성과라고 생각합니다.
커버리지는 결국 그 습관이 쌓인 결과물일 뿐이니까요.

👉 커버리지는 “지금 얼마나 잘 하고 있느냐”를 평가하는 절대 지표가 아니라,
👉 “앞으로 얼마나 개선해 나갈 수 있느냐”를 보여주는 성장 지표라고 믿습니다.