JMeter로 동시성제어 테스트하기

Doyeon·2023년 4월 6일
0
post-thumbnail

주차장을 예약할 수 있는 서비스를 만들었다. 이 때, 예약 가능 자리는 5자리뿐인데 10명이 동시에 예약을 진행한다면 어떻게 될까?
의도한대로 프로그램이 동작한다면, 10명이 동시에 예약을 하더라도 5명만 예약이 성공해야 한다.
동시성 제어가 제대로 되고 있는지 확인하기 위해 JMeter를 이용하여 테스트해보자!

JMeter란?

  • 아파치(Apache)에서 개발한 성능 테스트 도구로, 웹 애플리케이션, 데이터베이스, FTP 등 다양한 종류의 서버에 대한 성능 테스트를 수행할 수 있다.
  • Java로 작성되어 있으며, GUI를 통해 테스트 계획을 작성하고 테스트 결과를 시각적으로 확인할 수 있다.
  • 다양한 프로토콜을 지원하고, 분산 테스트를 지원하여 여러 대의 컴퓨터에서 테스트를 수행할 수 있다.
  • 사용하기 쉽고 다양한 기능을 제공한다.

JMeter 설치하기

Mac에서 JMeter를 설치하는 방법은 다음과 같다.

  1. 자바 설치

    • Jmeter는 Java를 기반으로 작동하므로 Java가 설치되어 있어야 한다.
  2. JMeter 다운로드

    • Mac에서는 brew를 통해 간단하게 다운로드할 수 있다.
    brew install jmeter
  3. JMeter 실행

    • 터미널에서 바로 실행할 수 있다.
    jmeter

테스트 계획 작성

Thread Group 생성

  • Test Plan에서 Thread Group을 생성한다.
  • Thread Properties를 설정한다.
    • Number of Threads(사용자 수) : 동시에 작업을 수행할 사용자의 수

    • Ramp-up period(램프업 기간) : 동시에 사용자가 추가되는 데 걸리는 시간

    • Loop Count(반복 횟수) : 각 사용자가 액션을 수행하는데 반복할 횟수

      → Number of Threads = 15, Ramp-up period = 1, Loop count = 1로 설정한 경우, 15개의 사용자가 1초에 걸쳐 1번의 액션을 수행한다.

HTTP Request 작성

  • Thread Group에서 테스트할 HTTP Request를 만든다.
  • 테스트할 HTTP Request를 작성한다.

HTTP Header Manager 작성

  • 예약 요청을 보낼 때 Header Authorization에 token값을 넣어줘야하기 때문에 Header Manager가 필요하다.
  • 요청을 보낼 때 필요한 Header 값을 설정한다. 각 요청마다 Authorization의 token 값이 다르므로 ${token} 으로 표시한다.

CSV Data Set Config 작성

  • token에 들어갈 값을 간편하게 지정하기 위해 CSV Data Set Config를 추가한다.
  • token 값을 저장한 CSV 파일을 불러와 설정한다.

테스트 실행

  • 실행버튼을 눌러 설정한 테스트를 실행할 수 있다.

실행결과

View Results Tree 추가

  • 결과를 확인하기 위해 View Results Tree를 추가한다.

동시성 제어가 적용되지 않은 경우

  • 10자리가 있는 주차장에서 예약구역은 4자리로, 총 4대만 예약되어야 하나, 15개의 Thread 요청을 동시에 보냈을 때 10대 예약이 성공되어버렸다.

동시성 제어가 적용된 경우

  • 10자리가 있는 주차장의 예약구역은 4자리고, 15개의 Thread 요청을 동시에 보냈을 때 4대 예약만 정상적으로 성공된 것을 확인할 수 있다.
profile
🔥

0개의 댓글