본문 바로가기

ETC/JMeter

Apache JMeter (성능 / 부하테스트)

Apache JMeter Application은 기능적 동작을 테스트하고 성능을 측정하도록 설계된 Java 오픈소스 소프트웨어 이다.

여기서 성능 테스트란, 서비스의 성능을 확인하기 위해 실제 운영환경과 비슷한 환경에서 테스트를 진행하는 것을 의미한다. 이 테스트를 통해서 응답 시간(Response Time), 처리량(Throughput), 병목구간 등을 확인할 수 있다.

 

 

준비물

1. JDK 다운로드 및 환경변수 설정 (기본적으로 다 되어있다고 생각된다)

 

2. JMeter 다운로드 (https://jmeter.apache.org/download_jmeter.cgi)

 

Apache JMeter - Download Apache JMeter

Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava

jmeter.apache.org

해당 zip 파일을 다운로드 받고 설치 경로의 bin 폴더 bat(윈도우) 또는 sh(맥) 파일을 실행시키자

그러면 바로 jmeter가 실행되며 GUI화면이 나올것이다

(만약 실행이 안된다면 sudo chmod 755 jmeter.sh 로 권한을 변경해서 실행해보자)

 

 

 

JMeter 시작하기
Test Plan

Test Plan는 최상위 노드로 노드 아래 수행할 일들, 제어 흐름, 각종 설정, 결과 모니터링 등 역할을 담당한다.

User Defined Variables에서 변수를 할당하고 자식 노드에서 ${}(표현언어)를 통해 전역 변수처럼 사용이 가능하다.

 

- Test Plan 의 전역 설정

Test Plan

Test Plan에서 user_number, time_sec, loop_cnt 를 정의하고

아래 Thread Group에서 처럼 ${user_number} 변수를 받아서 전역 변수처럼 사용이 가능하다

Thread Group

 

Thread Group

JMeter에서 하위 Element 항목들을 제어하기 위한 시작점이다. Thread Group을 생성하면 설정 항목들이 나온다.

  • Number of Threads (users) : Single Thread 수로 사용자 수를 의미한다
  • Ramp-Up Period(in seconds) : Single Thread 들을 실행시키기 위한 시간을 의미한다
  • Loop Count : Thread가 행하는 작업의 반복 횟수

Jmeter 공식 문서 (https://jmeter.apache.org/usermanual/best-practices.html)
에서 CPU/Memory에 적합한 수를 고를 것을 권고하고 있다.

Thread 수를 고정시키고 Ramp-Up Period 수치를 조절하며 적절한 수치를 찾는다

 

- setUp Thread Group / tearDown Thread Group

테스트를 실행할때 먼저 실행되어야 하거나 테스트 맨 마지막에 실행이 되어야 하는 그룹이 존재한다.

예를들어 토큰을 발급받거나 발급받은 토큰을 제거하는 API 는 처음과 끝 한번씩만 실행되어야 한다.

그럴 때 아래 thread group을 생성하자 

add > threads > setUp or tearDown

  • setUp Thread Group(시작시 맨 처음 실행되는 그룹)
  • tearDown Thread Group(종료 전 맨 마지막 실행되는 그룹)

 

Controller

Sampler란 Request를 서버에 전달하기 위한 도구이다.

 

위 사진과 같이 Http 요청을 설정할수 있고 Parameters, Body Data 설정도 가능하다.

(단 Parameters 또는 Body Data 방식 중 하나만 사용 가능하다)

 

- path variable 사용

/sample-code/${code_id}/detail

와 같이 path variable 데이터를 사용하고 싶으면

해당 Sampler 에서 Add > Pre Processcor > User Parameters 추가 후 Parameters 를 생성하자 (아래 사진 참고)

- BeanShell Listener

BeanShell Listener를 사용하여 스크립트 작성이 가능하다. 

스크립트를 사용하여 결과파일 입출력 및 필요한 파일정보를 불러올 수 있다.

 

 

Listeners

Listeners는 요청들에 대한 응답을 확인할수 있는 다양한 플러그인을 지원한다.

success test

View Result Tree 를 통해 해당 HTTP Request 성공 여부 및 Response/Request Body, Resonse/Request Header 확인이, Aggregate Graph 에서는 아래 사진과 같이 응답시간, 에러% 등 확인이가능하다.

 

 


 

참고로 모든 노드(plan, thread group, controller ...등) 은 비활성/활성화 가 가능하다. 사용할 노드만 활성화 후 테스트하자.