JMeter: 성능 특정 및 부하 테스트 기능을 제공하는 오픈 소스 자바 애플리케이션이다. 다양한 테스트를 지원하고 CLI도 지원한다

jmeter.apache.org/

 

Apache JMeter - Apache JMeter™

Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to oth

jmeter.apache.org

 

주요 개념

  • Thread Group: 한 쓰레드 당 유저 한명
  • Sampler: 어떤 유저가 해야 하는 액션
  • Listener: 응답을 받았을 할 일 (리포팅, 검증, 그래프 그리기 등)
  • Configuration: Sampler 또는 Listener가 사용할 설정 값 (쿠키, JDBC 커넥션 등)
  • Assertion: 응답이 성공적인지 확인하는 방법 (응답 코드, 본문 내용 등)

 

원래 제대로 성능테스트를 하려면 배포 서버와 성능 테스트용 서버가 달라야 한다.

왜냐면 같은 서버에서 하게 된다면 JMeter를 실행할 때에도 시스템 리소스를 사용하기 때문에 성능 테스트를 할 때 애플리케이션의 성능도 떨어질 수 있기 때문이다.

 

 

바이너리 zip 파일을 다운받은 후 압축을 푼 후에 ./bin/jmeter를 실행하면 아래와 같은 창이 뜬다

JMeter

 

 

가장 먼저 할 일은 Thread Group 만들기이다. (만든 테스트가 어떤 테스트인지 이름을 지어주는 것과 같다)

그 다음 Thread Group을 추가해주도록 한다.

  • Number of Threads: 쓰레드 개수 (동시에 요청을 보내는 유저의 수, 10명)
  • Ramp-up period: 쓰레드 개수를 만드는데 소요할 시간 (유저를 얼마나 빠른 시간동안 만들어 낼것이냐, 10초)
  • Loop Count: infinite 체크 하면 위에서 정한 쓰레드 개수로 계속 요청 보내기. 값을 입력하면 (해당 쓰레드 개수) X (루프 개수) 만큼 요청을 보낸다 (Sampler로 정의할 action을 몇 번 반복할 것인가?, 10명씩 2세트 총 20명)

 

그 다음엔 Sampler를 만들어야 한다. Sampler는 각각의 유저가 할 일을 정의해주는 것과 같다.

Sampler > HttpRequest

  • 여러 종류의 샘플러가 있지만 그 중에 우리가 사용할 샘플러는 HTTP Request 샘플러.
  • HTTP Sampler: 요청을 보낼 호스트, 포트, URI, 요청 본문 등을 설정
  • 여러 샘플러를 순차적으로 등록하는 것도 가능하다.

 

요청을 보낸 후 결과를 보기 위한 Listener 만들기 후에 아래 Listener 등을 추가해보자

  • View Results Tree
  • View Resulrts in Table
  • Summary Report
  • Aggregate Report

application의 한계를 알아보려면 요청을 많이 보내 보고 throughput을 보면 된다(TPS)

 

 

응답의 경우 Assertion을 추가하면 좀 더 자세하게 확인이 가능하다.

  • 응답 코드 확인
  • 응답 본문 확인

여기까지 UI로 jmx 파일을 만든 것이다. 이 것을 커맨드로 실행할려면 아래와 같은 명령어를 커맨트 창에 입력하면 된다.

 

 

CLI 사용하기

  • jmeter -n -t 설정 파일 -l 리포트 파일
    • -n: UI를 쓰지 않는다
    • -t: JMeter 테스트에 대한 설정
    • -l: 리포트

 

추가적으로 BlazeMeter을 사용하면 크롬에서 액션하는 것을 녹화한 후 JMeter에 추가할 수 있다.

chrome.google.com/webstore/detail/blazemeter-the-continuous/mbopgmdnpcbohhpnfglgohlbhfongabi?hl=en

 

BlazeMeter | The Continuous Testing Platform

Record Selenium and HTTP traffic to create a load and functional tests in less than 10 minutes (Apache JMeter Compatible).

chrome.google.com

 

'Java (+ Spring)' 카테고리의 다른 글

아키텍쳐 테스트: ArcUnit  (0) 2021.02.11
운영 이슈 테스트: Chaos Monkey  (0) 2021.02.11
도커로 테스트 하기: TestContainers  (0) 2021.02.10
Mock객체로 테스트 하기: Mockito  (0) 2021.02.10
Java Unit Test: Junit5  (0) 2021.02.10

+ Recent posts