1. Line Coverage
코드의 각 라인이 테스트 코드에 의해 검증되었는지 확인하는 커버리지이다.
2. Branch Coverage
코드의 각 분기문이 테스트 코드에 의해 검증되었는지 확인하는 커버리지이다.
3. Condition Coverage
코드에 각 조건문의 내부 조건문이 테스트 코드에 의해 true/false 인 경우가 모두 검증되었는지 확인하는 커버리지이다.
4. Decision Coverage
코드에 모든 조건문이 테스트 코드에 의해 true/false 인 경우가 모두 검증되었는지 확인하는 커버리지이다.
5. 가장 많이 사용되는 것은 Line Coverage
라인 커버리지를 사용하면 모든 시나리오를 테스트할 수 있다는 보장은 없지만 모든 코드를 검증해 볼 수 있다는 장점이 있다. 따라서 Side Effect를 최소화하는 코드를 작성하는데 많은 도움이 될 것 같다는 생각이 든다.
6. 테스트 코드를 왜 작성해야 할까?
프로젝트의 규모가 점점 커지면 매번 모든 코드를 직접 검증하는 것이 굉장히 힘들어진다. 또한 개발이 진행되면서 기존 코드가 잘 수행되는지 검증하는 것 또한 굉장히 번거로운 일이다. 이런 작업들을 코드로 자동화하고 미리 디버깅을 진행한다는 차원에서 테스트 코드를 작성하는 것이다.
만약 본인이 기능을 새롭게 추가했다면 기존의 테스트 코드를 돌려보자. 기존의 테스트 코드가 문제없이 잘 돌아간다면 새로운 기능에 의한 Side Effect가 없다는 것이 보장되는 것이다. 필자는 이러한 경험을 통해 테스트 코드를 작성하면서 새롭게 작성한 코드에 자신감을 얻을 수 있었고 새로운 기능을 배포하는 것에 대한 두려움을 많이 줄일 수 있었다. 하지만 테스트가 다 통과한다고 해서 문제가 아예 없을 것이라고 보장되는 것은 아니다. 테스트 코드를 얼마나 많은 시나리오에 대해서 섬세하게 작성했느냐에 따라 결과는 천차만별이기 때문이다.
'Spring' 카테고리의 다른 글
[알림 기능 구현] 웹소켓 vs SSE (0) | 2022.09.27 |
---|---|
스프링 로깅 기능 구현하기 (인터셉터, ThreadLocal 사용) (0) | 2022.09.13 |
단위 테스트 given-when-then 패턴과 BDDMockito (0) | 2022.08.08 |
Spring Security Form Login 사용과 동시성 세션 제어 (0) | 2022.07.17 |
Spring Boot에서 AWS S3 PresignedURL 발급받기 (1) | 2022.06.25 |