스프링 프로젝트를 개인적으로 하고 있는데 테스트코드를 잘 짜고 있는지 궁금해서 찾아보니 테스트 커버리지라는게 있더라 !
궁금해서 바로 찾아서 도입해보았다.
나는 IDE로 IntelliJ를 사용하는데, 플러그인 설치도 없이 코드 커버리지를 측정해준다고..? 인텔리제이 넌 정말.. ღ
이걸 이용하면 최대한 모든 로직을 테스트할 수 있기도 하고, 시간을 더 아낄 수도 있다는 생각에 글을 작성한다!
코드 커버리지란?
프로젝트의 소스 코드가 테스트 코드에서 실행된 정도를 나타내는 측정 지표로 백분율(%)로 표현된다. 이를 통해 소스 코드의 어느 부분이 실행되었는지를 확인하여, 작성하지 못한 테스트 코드를 확인하여 더 꼼꼼하게 테스트를 작성할 수 있다.
1. 라인 커버리지 (Line Coverage): 테스트를 통해 실행된 소스 코드의 라인 수를 측정. 이는 각 라인이 테스트에 의해 실행되었는지 여부를 확인
2. 브랜치 커버리지 (Branch Coverage): 제어 흐름의 각 브랜치(조건문, 분기 등)가 테스트에 의해 실행되었는지 여부를 측정. 이를 통해 프로그램의 모든 분기가 테스트되었는지 확인
3. 조건 커버리지 (Condition Coverage): 각 조건ㅊ의 모든 조건이 테스트에 의해 충족되었는지 여부를 측정. 이를 통해 모든 조건문이 가능한 조건에 대해 테스트되었는지 확인
커버리지 측정 방법(IntelliJ)
test 패키지나, test>java 를 우클릭 한 뒤 More Run/Debug 그리고 Run 'Tests in '...' with Coverage를 클릭한다.
그러면 요렇게 폴더마다 코드를 분석하여 백분율로 커버리지를 출력해준다.
(Option) 더 정확하게 커버리지 확인하기
인텔리제이는 브랜치 커버리지 측정까지 지원한다.
test 패키지나, test>java 를 우클릭 한 뒤 More Run/Debug 그리고 Modify Run Configuration를 클릭한다.
Modify options를 클릭한다.
Code Coverage 탭에 있는 Enable branch coverage and test tracking을 선택한다.
그럼 이렇게 Branch Coverage에 대해 결과를 얻을 수 있다.
100%로 측정되지 않은 클래스에 접근하여 좌측 코드라인을 살펴보면 녹색과 갈색이 표시되는 것을 확인할 수 있다.
테스트되지 않은 부분은 갈색, 테스트되는 부분은 녹색으로 표시된다.
녹색을 클릭해보면 위와 같이 알 수 있다. 이런걸 확인하면서 테스트코드를 작성하면 더 정확하게 테스트를 진행할 수 있다 !
'Tech > DevOps' 카테고리의 다른 글
[CI/CD] 민감정보를 어떻게 관리할 것인가 (application.properties) (0) | 2024.04.24 |
---|---|
[CI/CD] Github Actions를 이용한 테스트 및 빌드 자동화(SpringBoot/Docker image 생성/Docker Hub 업로드) (0) | 2024.04.21 |
[Docker] 도커로 Mysql 컨테이너 접속하기 (0) | 2024.02.13 |
[CI/CD] Kubernetes Cluster 환경 구축 (0) | 2023.12.13 |
[CI/CD][Docker] VM 환경에 Docker Engin 설치 (1) | 2023.12.08 |
댓글