JUnit5 - 4주차
JUnit5성능 테스트
서론
이번주차는 JMeter를 사용하는 방법에 대해 알아보자.
JMeter
성능측정 및 부하 테스트 기능을 제공하는 오픈소스 애플리케이션이다.
다양한 형태의 테스트를 지원한다.
- 웹 - HTTP, HTTPS
- SOAP / REST 웹 서비스
- FTP
- 데이터베이스(JDBC 사용)
- Mail(SMTP, POP3, IMAP) 등등
CLI 지원
- CI/CD 툴과 연동 가능
- UI를 사용하는 것보다 메모리 등 시스템 리소스를 적게 사용한다.
주요 개념
- Thread Group : 한 쓰레드 당 유저 한명
- Sampler : 어떤 유저가 해야하는 액션
- Listener : 응답을 받았을 할 일 (리포팅, 검증, 그래프그리기 등)
- Configuration : Sampler Listenr가 사용할 설정 값 (Cookie, JDBC Connection 등)
- Assertion : 응답이 성공적인지 확인.
테스트 성능측정을 위한 오픈소스로 Gatling, NGrinder등의 애플리케이션이 존재한다.
설치
JMeter를 다운로드받는다. 홈페이지에서 다운로드 받을 수 있다.

압축파일을 해제하면 bin 디렉토리 아래 실행할 수 있는 파일이 있다.

실행화면

실행
실행 시 주의할 점이 있다. 운영용 애플리케이션이 구동되는 서버에서 JMeter를 돌리면 리소스를 애플리케이션과 JMeter가 같이 먹기 때문에 제대로된 성능테스트를 진행할 수 없다. 때문에 성능테스트를 진행할 때는 다른 환경에서 진행해야한다.
-
새로운 테스트 플랜은 만들고 저장한다.

-
Thread Group을 추가한다.

Thread Group에서 다음과 같은 설정이 있다.
- Number of Therads : 쓰레드의 개수(유저의 개수)를 설정
- Ramp-up period : 쓰레드(유저)를 몇초안에 만들것인지.
- Loop Count : 요청 반복횟수

-
이제 유저가 수행할 동작인 Sampler를 만든다.

-
수행 결과를 확인할 Listener를 만든다.

애플리케이션이 구동된 상태로 JMeter를 실행하면 다음과 같이 Listener에 결과가 나온다.

한가지 특이한점을 확인하면 첫번째 요청이 오래걸린다. 이는 서블릿 인스턴스가 처음 만들어지면서 시간이 오래걸린다.
- Assertion 설정

성공하는 경우
![]()
실패하는 경우
![]()
CLI에서 실행하기
위에서 만든 파일을 대상으로 JMeter에 옵션을 주고 CLI로 실행할 수 있다.

// -n : UI를 사용하지 않음
// -t : JMeter에 대한 설정 (위에서 만든 파일)
./jmeter -n -t ./Study\ Perf\ Test.jmx

BlazeMeter와 같은 Chrome App으로 클릭에 대한 이벤트를 녹화하여 JMeter 파일로 만드는 것도 가능하다.

