Apache JMeter 부하 테스트

실전 프로젝트를 진행하면서 키워드로 검색하는 기능을 구현하는 과정에서 비교적 복잡한 서비스 로직으로 구현이 되었다. 이 부분에 대해서 해당 서비스의 목적과 품질 개선 및 향상을 위해서 성능/부하 테스트를 진행하여 실제로 해당 기능이 수행되는데 걸리는 시간과 TPS등을 측정하고 서비스 개선에 대한 지표로 삼고자 하는 것을 목적으로 했다.

 

우선 부하테스트를 진행하기 위해서 사전에 JMeter와 nGrinder를 고려했으며, 먼저는 nGrinder를 적용해보고자 했으나, 현재 수준에서 적용하기에는 시간 + 실력의 문제로 인해서 비교적 간단하게 테스트를 진행해볼 수 있으며, JMeter로 성능측정하기에 충분하다고 생각하여 선택하게 되었다.

 

현 단계에서는 처음으로 부하 테스트라는 것을 적용해보기에 많은 레퍼런스를 참고하면서 이곳에 정리해보려고 한다.

 


JMeter 설치 및 실행

아래와 Apache JMeter 페이지에서 다운로드 받는다. 

apach-jmeter page

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

 

압축 파일을 풀어서 생성된 폴더 > bin 폴더 > jmeter.bat file을 실행한다.
이때, mac : .sh file , window : .bat file을 실행시키면 된다.

JMeter 구성요소

https://www.youtube.com/watch?v=ZkEDBsAicjM&list=PLUDwpEzHYYLs33uFHeIJo-6eU92IoiMZ7&index=4

 

 

Thread Group : 은 쓰레드들을 관리하는 곳

-> 쓰레드 수, 즉 가상의 사용자 수를 설정 가능
-> 1000명의 사용자가 동시에 접속한다 라는 테스트 환경을 쓰레드 그룹에서 쓰레드 숫자를 조정함으로써 설정 가능

 

Samplers :  요청을 추상화한 것
-> FTP, HTTP, SMPT 등 다양한 요청 유형을 선택 가능

 

Logic Controller :  요청들을 묶어서 시나리오화한 것
-> 하나의 Logic Controller에 여러 HTTP 요청 Samplers들을 순차적으로 담음으로써 사용자의 실제 사용 예상 시나리오와 유사하게 테스트 환경을 구성 가능

 

Listeners :  테스트 결과를 추상화한 것
-> 그래프, 테이블 등 여러 형태로 테스트 결과를 시각화

 

Configuration Elements  : 테스트 환경에 적용될 설정입니다.
-> HTTP 요청 Sampler를 이용한 테스트를 할 때, 헤더에 토큰을 담거나, 쿠키에 세션을 담음으로써
로그인된 사용자의 요청으로 만들기 위한 쿠키, 헤더 값을 설정 가능

 

Element :  JMeter 내 Thread Group, Samples, Logic Controllers, Listeners, Congiruation Elements 등


TEST 만들기

Test Plan 우클릭 -> Add -> Threads -> Thread Group을 선택하여 쓰레드 그룹을 생성합니다.

아래와 같이 Request Defaults를 통해서 공통되는 부분들을 묶어줄 수 있다.

아래와 같이 설정하여 Request Header 부분을 설정할 수 있으며, Rest Api 프로젝트이기에 Content-Type과
토큰 사용을 위한 Authorization을 적용

아래와 같이 이동하여 샘플러를 하나 생성
여기서 샘플러에 설정하지 않은 부분들은 이미 위에서 공통으로 설정했기에 제외

Test를 위한 설정들을 함

  • 쓰레드들의 수 : 가상 사용자를 몇 명으로 설정할지를 의미
  • Ramp-up 시간 : 쓰레드 수들을 얼마 시간 동안 테스트할지에 대한 설정입니다.
    • 가령 쓰레드 수에 100, Ramp-up에 10을 입력하면 1초에 10번씩 요청이 전송됩니다.
    • 부하 테스트 / 성능 테스트 등 목적에 따라서 설정
  • 루프 카운트는 사용자들이 몇번 요청할지 설정합니다.
    • 가령 쓰레드 100, 루프 카운트 10이면, 100명이 10번씩 요청해서 총 1000번의 요청이 전송됩니다.
    • 무한을 체크하면 중단할 때까지 전송됩니다.

 


Listener 만들기

Test를 수행한 결과를 확인하기 위한 Listener를 만들며, 필요한 사항에 따라 선택

 

 


Test 실행

아래와 같이 상단에 버튼들을 활용해서 Test를 실행

 

  • 요약 보고서

  • 설정한 Test 총 횟수에 대한 평균, 최소, 최대는 ms단위입니다.
  • 오류 0%는 HTTP 응답 코드로 판단합니다. 예외에 해당하는 400번대 또는 500번대 응답이 없었음을 예상할 수 있습니다.
  • 처리량은 Throughput입니다. Transaction Per Second를 의미하는 TPS라고도 합니다. 

 


테스트 결과 출력

 

 

  • HTML 보고서 생성


 

Reference

https://creampuffy.tistory.com/209#%EB%B6%80%ED%95%98%20%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%9C%84%ED%95%9C%20%EB%8F%84%EA%B5%AC%EB%93%A4-1

 

Apache JMeter를 이용한 부하 테스트 및 리포트 생성

서버의 성능을 최적화하기 위해선 어떤 작업이 필요할까요? 어떤 지표를 기준으로 성능을 측정할 것인지, 정의된 지표에 영향을 미치는 변수에는 무엇이 있는지, 해당 변수들의 변화가 성능에

creampuffy.tistory.com

https://jangseongwoo.github.io/test/jmeter_basic/#cli-mode

 

JMeter 기본 사용법

 JMeter는 java로 만들어진 성능 테스트 툴이다. 구매한 솔루션의 Spec을 확인하거나 서버의 스케일링을 위해 사용한다.

jangseongwoo.github.io

https://velog.io/@rkfksh/JMeter-%EB%AC%B4%EC%9E%91%EC%A0%95-%EB%94%B0%EB%9D%BC%ED%95%B4%EB%B3%B4%EA%B8%B0Windows

 

JMeter 무작정 따라해보기(Windows)

API 테스트 자동화에 관심이 생기면서 작년에 들었던 API 테스트 자동화 교육이 떠올랐다.문득 자료를 다시 찾아보니까 어디서 본듯한 녀석이 눈에 띄었다.JMeter어렴풋이 성능 테스트 도구로 알고

velog.io

https://jmeter-plugins.org/?search=jpgc-graphs-basic 

 

JMeter Plugins :: JMeter-Plugins.org

 

jmeter-plugins.org

https://veneas.tistory.com/entry/Apache-JMeter-%EC%9B%B9-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%B6%80%ED%95%98-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%84%9C%EB%B2%84-%EC%84%B1%EB%8A%A5-%EC%B2%B4%ED%81%AC

 

[Apache JMeter] 웹 서비스 부하 테스트 (서버 성능 체크)

0. 환경 Windows 10 JDK 11(Java 11) 1. Apache JMeter 설치 1. Requires Java 8+ 설치 환경에 자바 8 버전 이상이 설치되어 있어야 합니다. 2. Apache JMeter 다운로드 링크를 통해 사이트에 접속하여 *. zip 파일을 다운

veneas.tistory.com

 

'꿀팁' 카테고리의 다른 글

NAVER SMS API 연동  (0) 2023.03.27
엑셀에서 csv 깨짐 현상  (0) 2023.03.25
개인도서목록  (0) 2023.01.27
티스토리 Code블럭 테마변경  (0) 2023.01.21