본문 바로가기
BE

API 성능 테스트를 위한 Apache JMeter

by 틴디 2024. 5. 21.
728x90
반응형

 

리눅스 환경에서 JMeter 설치하기

java --version

 

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

 

위 링크로 이동해준다. 

apache-jmeter-5.6.3.zip (버전 다를 수 있음. 현재 기준) 을 눌러 다운로드 받아 주면 Download 폴더에 압축 파일이 저장된다. 

 

 

 

다운로드 받은 zip 파일에서 오른쪽 버튼 클릭 후 Extract Here 을 눌러 압축을 풀어 준다. 그 후 터미널로 압축 해제한 apache-jmeter 폴더로 이동해 준다. 

 

JMeter 실행하기

~/다운로드/apache-jmeter-5.6.3/bin$

 

bin 파일까지 이동한 뒤 

./jmeter

 

jmeter를 실행한다. 

 

Test Plan 작성하기

Thread Group 생성

 

Test plan에서 Add > Threads (Users) > Thread Group 을 순서대로 선택해 준다. 

 

  • Name
    • Thread Group의 이름을 지정
  • Number of Threads (users)
    • 쉽게 말해 유저수를 의미 
  • Ramp-up period (seconds)
    • 실행될 스레드 간의 간격을 의미
    • 만약 4개의 thread가 있고 간격을 2 seconds로 지정하면, 1번째 스레드가 실행 된 뒤 2초 후 2번째 스레드가 실행
  • Duration (seconds)
    • 테스트 실행 시간을 지정해 줄 수 있으며 Speficy Thread lifetime 체크 박스를 체크해야 활성화 됨

 

HTTP Request 설정하기

 

Thread Group > Add > Sampler > HTTP Request 를 차례로 선택해서 HTTP Request를 추가해 준다.

HTTP 요청에 필요한 데이터를 설정해 줄 수 있다. 

 

 

 

Name, Comments는 Jmeter에서 보기 편하게 하기위해 지정해 주는 값이고 실제 Request 정보는 Basic 탭에서 작성해 준다. 

만약 테스트하려는 api의 url이 http://localhost:28080/api/student/signup 인 경우 

  • Web Server
    • protocol : http
    • Server Name or IP : localhost
    • Port Numbe : 28080 
  • HTTP Request
    • POST
    • Path : api/student/signup

슬래쉬나 문자를 잘 못 입력한 경우 테스트에 실패할 수 있다. View Results Tree 에서 요청하는데 사용한 데이터와 설정, 응답 값을 볼 수 있으니 설정이 잘 못된경우 이를 이용해서 수정해 준다. 

 

 

파라미터와 Body Data를 설정해 줄 수 있다. 테스트 api 호출시 전달할 데이터를 입력해 준다. 

 

HTTP Header Manager 설정하기

 

Thread Group에서 Add > Config Element > HTTP Header Manager 를 차례대로 선택해 추가해 준다. 

HTTP Request와 같은 레벨에 생성해 주면 된다. 

 

 

 

HTTP Header Manager에서는 key-value 를 지정해 줄 수 있다. 

 

 

Listener 추가하기

 

Thread Group에서 오른쪽 마우스 Add > Listener > 에서 다양한 Listener를 추가할 수 있다. Listener에서는 다양한 지표를 확인할 수 있다. 

 

 

 

View Results Tree, Aggregate Graph, Summary Report, Graph Results 를 추가하고 Ctrl + R을 눌러 실행한다. 

 

상단 초록색 실행 버튼을 눌러 부하 테스트를 진행해도 된다. 

 

View Results Tree

View Results에서는 Request에 대한 실패 유무를 확인할 수 있다. 

 

Request시 전달한 파라미터와 Headers에 정보도 확인할 수 있다. 

 

Response data 탭에서는 응답 값을 확인할 수 있다. 

 

Aggregate Graph

 

  • Sample
    • 실행 한 샘플의 갯수를 의미함
    • number of threads X Ramp-up period
  • Average 
    • 평균 응답 시간 
    • ms
  • Median
    • 평균 응 답 시간의 중앙값
  • 90% Line
    • 샘플의 90%가 해당 값 이하의 응답 시간을 가지고, 나머지 10%가 해당 값 이상의 응답 시간을 가짐 
    • ms
  • 95%
    • 샘플의 95%가 해당 값 이하의 응답 시간을 가지고, 나머지 10%가 해당 값 이상의 응답 시간을 가짐
    • ms
  • 99%
    • 샘플의 99%가 해당 값 이하의 응답 시간을 가지고, 나머지 10%가 해당 값 이상의 응답 시간을 가짐
    • ms
  • Min
    • 최소 응답 시간
  • Maximum
    • 최대 응답 시간
  • Throughput
    • 단위 시간당 처리량
    • /sec
  • Received KB/sec
    • 초당 받은 데이터량
  • Sent KB/sec
    • 초당 보낸 데이터량
  • Avg. bytes
    • 서버로 부터 받은 데이터 평균

 

평균 그래프도 확인 가능하다. 

 

Summary Report

 

summary report 에서 한눈에 결과를 표로 확인할 수도 있다. 

 

Graph Results

 

결과를 그래프로 그려 보여준다. 시간당 샘플 데이터의 처리 결과를 확인할 수 있다. 

 

참고 사이트

https://devlos.tistory.com/69

 

JMeter 사용법 및 Springboot App 부하테스트

들어가며 Application을 개발한 뒤 성능을 테스트할 필요가 있다. 예상되는 실제 사용량 또는 부하를 시뮬레이션하여 만들어진 Application의 한계를 확인하고, 개선을 통해 안정적으로 서비스를 제공

devlos.tistory.com

 

728x90
반응형

댓글