본문 바로가기
기타

JMeter란? JMeter 사용법

by 책 읽는 개발자_테드 2021. 11. 23.
반응형

JMeter란?

· 성능 측정 및 부하(load) 테스트 기능을 제공하는 오픈 소스 자바 애플리케이션

 

· 다양한 형태의 애플리케이션 테스트를 지원한다.

   - 웹 - HTTP, HTTPS

   - SOAP / REST 웹 서비스

   - FTP

   - 데이터베이스 (JDBC 사용)

   - Mail (SMTP, POP3, IMAP)

 

· CLI를 지원한다.

   - CI, CD 툴과 연동할 때 편리하다. 

   - UI를 사용하는 것보다 메모리 등 시스템 리소스를 적게 사용한다.

 

· 자바 Swing으로 만들어진 UI를 사용한다.

· XML을 통해 테스트를 실행한다. 

· 대체재:

   - nGrinder (https://naver.github.io/ngrinder/)

   - Gating (https://gatling.io/)

 

JMeter 설치

https://jmeter.apache.org/download_jmeter.cgi

 

위 사이트에서 직접 다운로드 받거나, 맥 기준으로 터미널에 다음 명령어를 입력한다.

 

brew install jmeter

 

그리고 다음 명령어로 실행한다.

 

open /usr/local/bin/jmeter

 

JMeter 사용하기

· 올바른 테스트를 위해 JMeter를 실행하는 컴퓨터와 테스트하는 서버의 컴퓨터는 분리 되어야 한다.

   - 부하를 많이 주기 위해 Jmeter에서 요청을 많이하면, 그 만큼 애플리케이션의 성능도 떨어지게되므로 정상적인 테스트가 불가능하다.

 

 

Thread Group 만들기

· 한 쓰레드 당 유저 한 명을 의미

· Number of Threads: 생성할 쓰레드 수

· Ramp-up period: 모든 쓰레드를 만드는데 소요할 시간

· Loop Count: 각 스레드가 액션을 실행하는 횟수 값을 입력하면 해당 쓰레드 개수 x 루프 개수 만큼 요청을 보냄

 

 

Test Plan을 우클릭하고, Add -> Threads -> Thread Group을 클릭하여 Thread Group을 생성한다.

 

생성된 Thread Group의 'Thread Properties'에서 유저를 의미하는 쓰레드 생성을 조절할 수 있다.

그 위의 'Action to be taken after a Sampler error'는 요청을 보내는 중 오류가 발생했을 때 어떤 액션을 취할지에 대한 설정이다.

 

 

Sampler 만들기

· 각각의 유저가 해야 하는 액션을 의미

· 여러 종류의 샘플러가 존재 ex) HTTP Request 샘플러

· HTTP Sampler

   - 요청을 보낼 호스트, 포트 ,URI, 요청 분문 등을 입력

· 여러 샘플러를 순차적으로 등록하는 것도 가능

 

Thread Group을 우클릭하여, Add - Sampler에서 다양한 Sampler 들을 선택할 수 있다.

 

이러한 액션은 여러개 정의할 수도 있다.

 

Listener 만들기

·  응답을 받았을 때 할 일을 의미

   - ex) 리포팅, 검증, 그래프 그리기 등

 

Thread Group을 우클릭하여, Add - Listener에서 다양한 Listener 들을 선택할 수 있다.

 

상단의 플레이 버튼(초록색 버튼)을 누르면, 요청이 시작되고 Listener들은 응답에 대한 리포트를 만든다.

 

 

Assertion 만들기

·  응답이 성공적인지 확인하는 방법

   - ex) 응답 코드, 본문 내용 등

 

기본적으로 요청에 대한 응답코드 status 200의 반환을 보고 성공으로 간주한다.

 

Thread Group을 우클릭하여, Add - Assertions에서 응답 성공 조건을 세부적으로 저정할 수 있다.

 

다음과 같이 설정하면, 응답 코드가 200 그리고 응답 JSON의 "message" 값의 value는 "아파트 목록 조히"인 경우에만 성공적인 응답으로 간주한다.

 

TODO: Configuration

·  Sampler, Listener가 사용할 설정 값을 의미

   - ex) 쿠키, JDBC 커넥션 등

 

CLI 사용하기

· GUI로 부하 테스트하는 것보다 컴퓨터 자원을 적게 소모할 수 있다.

· CI/CD와 연동하기 편하다.

 

다음과 같이 Thread Group에 Loop Cout를 infinite로 설정하고,

HTTP Request와 Aggregate Report만 남기고 상단의 저장 버튼을 눌러 저장한다.

 

 

터미널에서 Cat 명령어로 해당 파일을 확인하면, 다음과 같이 저장한 테스트 내용이 XML 파일 형태로 저장된다.

  

다음 명령어로 테스트를 실행한다. '-n'는  UI를 사용하지 않음을 의미하고, '-t'는 테스트 파일을 가리킨다.

jmeter경로/jmeter -n -t 테스트파일경로/cliTest.jmx

 

위 이미지에서 summary +는 소요된 시간동안 테스트한 결과를 의미하고, summary =는 현재까지 진행한 모든 테스트의 평균 결과를 의미한다.

반응형

댓글