네른

[CI/CD] CI/CD Java 테스팅 도구 본문

DevOps

[CI/CD] CI/CD Java 테스팅 도구

네른 2022. 4. 14. 17:32

사내에서 JAVA를 이용한 웹 프로젝트가 많아서 관련된 테스팅 도구를 조사한 적이 있다.

조사의 목적은 GitLab CI/CD에 얹어 사용할 수 있는 자동화 테스팅 도구를 찾기 위함이었다.

그 중에서 괜찮다고 생각됐던 것들이나, 실제 사용했던 것들을 간략하게 정리하고자 함

주요 조건에 무료 도구여야함이 있었기에 오픈소스/무료인 도구들만 정리되어있음

 


1. Jenkins

 - CI 도구이며 각종 플러그인을 사용해 테스팅도 진행할 수 있음.

 - 주로 빌드 테스트를 위해 사용되며 다양한 플러그인을 지원함

 

2. Jmeter

 - 서버 부하 테스트나 API 테스트를 위해 사용

 - HTTP/S, REST, TCP, JDBC 등 다양한 테스트가 진행 가능함

 - 직접 테스트 스크립트를 작성하고 프로그램을 실행할 수 있음

 - GitLab 상에서는 docker image를 이용해서 실행 가능하며, 테스트 스크립트는 별도로 넣어주어야 함

 

3. soapUI

 - SOAP/REST 테스팅을 위한 도구

 - API 테스팅이 주 목적이며 API 요청 결과를 regex 등을 이용해 검사하는 도구

 - 젠킨스와 연동하여 사용 가능

 

4. JUnit

 - 자바 유닛테스팅 도구

 - 자바 코드를 이용하며 어노테이션등을 이용하여 객체의 일치 여부, 리턴값의 범위 등을 테스트할 수 있음

 - 각 클래스별로 테스트를 진행해야하기에, 직접 테스트 케이스를 작성할 때 주의해야 함

 - 테스트 내용을 코드로 작성할 수 있으며, 테스팅의 결과가 코드상에 남는다는 장점이 있음 (확인이 용이)

 - 레포트를 출력해서 테스트 결과를 한눈에 보기 좋음

 

5. Jacoco

 - 자바 코드 커버리지 테스팅 도구

 - 전체 코드에 대한 코드 커버리지(코드가 실제로 실행되었는지)를 테스트할 수 있음

 - 앞선 JUnit 테스트코드를 기반으로 동작하기에 둘을 연동하여 사용하기 좋음

 - 직접 설정한 rule을 통해 테스트 통과 여부를 정할 수 있음

     : 전체 branch중 몇% 이상이 실행되는지, 클래스 내의 메소드는 몇개 이상 동작하는지 등등

 

6. ServerSpec

 - 인프라 셋팅을 테스팅하는 도구

 - 예를들어, httpd 프로세스가 동작중인지, 특정 포트가 열려있는지와 같은 테스트케이스를 작성하고 테스트할 수 있음

 

7. Kubetest

 - 위와 유사함. Kubernetes 환경을 대상으로 진행하는 인프라 테스팅

 

8. Robot Framework

 - Selenium과 함께 사용하며 테스트 케이스 기반의 UI 자동화 테스팅이 가능함

 

9. SiteSpeed.io

 - 웹 프론트엔드의 성능을 테스팅하는 도구

 - 프론트 페이지의 응답 속도, 복잡도 등을 테스트하여 속도를 측정할 수 있음

 - 실제 동작중인 서버에 진행되는 테스트이기에 서버가 필요함

 

이 중, GitLab 상에 실 적용해본 것은 JUnit, Jacoco, Jmeter, SiteSpeed.io로, 각각에 대해 간단히 추후 정리하고자 함.

GitLab에 어떻게 적용했는지 등등

Comments