전에 했던 쿠폰 발급 프로젝트에서 redis client 변화에 따른 성능 변화를 다시 알아보기 위해 Jmeter 를 사용하여 성능 테스트를 시도해 봤습니다.
Jmeter 사용은 익숙하지 않기 때문에 다시 봤을 때 기억하기 쉽도록 기록해 두려 합니다.
설치
Jmeter 설치는 공식 홈페이지에서 최신 버전을 다운받아서 사용하면 됩니다.
(이때 설치 폴더를 확인해야 합니다.)
실행 방법
설치를 완료했다면 이제 실행을 해야 하는데요,
(Window 기준)
Gui 를 통해 설치 폴더의 apache-jmeter-5.x.x.\bin 폴더에 들어가서
jmeter.bat 파일을 실행합니다.
또는 Cli 로 해당 경로에서 jmeter.bat 을 입력하면 Jmeter 가 실행됩니다.
사용 방법(GUI)
사용 방법은 아래 이미지를 보면 쉽게 이해할 수 있습니다.
Jmeter Gui 가 실행되면 기본적으로 Test Plan 이 생성됩니다.
이 하위에 Thread Group 을 생성할 수 있습니다.(말 그대로 요청을 생성하는 스레드 그룹이라고 생각하면 됩니다.)
해당 Thread Group 을 우클릭 ▶ Add 를 클릭하면 여러 가지를 생성할 수 있습니다. 실행 결과를 표시하는 Listner, 요청이나 통신을 생성할 수 있는 Sampler 등입니다. 처음 사용이므로 이 두 가지만 알아보겠습니다.
Sampler
요청을 생성하기 위해 사용합니다. Sampler 하위의 HttpRequest 를 선택하면 Http 요청을 생성할 수 있습니다.
요청 프로토콜(Http) 와 요청 받을 서버의 IP, 포트 넘버를 기입하는 칸이 있습니다. Path 에는 요청 api 의 url 을 기입하고, Body Data 에는 본문 값을 입력하면 됩니다.
여기서 Body Data 가 JSON 형식이어야 할 경우, 다음과 같이 헤더 설정을 해야합니다.
HttpRequest 우클릭 ▶ Add ▶ Config Element ▶ Http Header Manager ▶ 하단에 Add 클릭 ▶ 빈 칸이 생기면 Name 에 Content-Type(본문 형식을 뜻합니다), Value 에 application/json 입력
이렇게 하면 해당 Http 요청의 본문 형식은 JSON 으로 전달됩니다.
※ 로컬 호스트에서 테스트 하는 경우, ServerName or IP 란에 localhost 또는 127.0.0.1 을 입력합니다. 이 경우 Connection refused 에러가 발생하는 경우가 많은데, 이럴 때는 localhost → 127.0.0.1 로, 127.0.0.1 → localhost 로 바꿔 주면 해결되는 상황이 많습니다.
요청 실행
실행은 간단히 좌측 초록색 ▷ 버튼(Start)을 누르면 됩니다.
그러나 이 버튼은 모든 Thread Group 의 요청을 시작하는 버튼입니다.
예를 들어 위와 같이 Thread Group 이 두 개인데 connection refused 에러로 하나는 localhost 로, 하나는 127.0.0.1 로 되어 있다면, 둘 중 하나는 반드시 실패하게 되고 혼란이 생깁니다. 따라서 Thread Group 이 여러 개인 경우에는 각 Thread Group 을 우클릭하여 하나씩 실행해 주는 것이 좋은 방법입니다.
Listner
실행을 했다면 그 결과를 확인해야 합니다.
제가 사용한 건 Summary Report, View Results Tree 의 두 가지입니다.
Thread Group 을 우클릭하여 Listner 로 들어가면 위 두 가지 외에도 여러 Listner 들을 선택할 수 있습니다.
View Results Tree
View Results Tree 는 성능 지표보다는 요청 자체의 폼과 응답 폼, 요청 결과와 에러 로그를 표시합니다. 즉 성능보다는 개별 요청 자체에 대한 결과를 보고합니다.
Summary Report
Summary Report 는 성능 지표를 나타냅니다. 실행된 요청 수와 평균 응답 시간, 최소/최대 응답 시간, 실패율, 처리량 등 지표를 표시해 줍니다. 이 데이터를 가공하여 성능 테스트와 부하 테스트 지표를 얻을 수 있습니다.
각각의 userId 로 요청을 보내야 하는 경우
특정 요청은 하나의 사용자로 한 번씩만 보내야 하는 경우도 있습니다.
이 상황에 각 userId 를 pathvariable 로 담아서 요청한다고 가정하면,
이를 Jmeter 에서 간단하게 구현하기 위해 다음 방법을 사용할 수 있습니다.
Thread Group ▶ Add ▶ Config Element ▶ Counter 를 클릭하여 생성합니다.
요청을 보낼 만큼의 개수를 입력하고, 만들어진 요청에서 참조할 이름을 지정합니다.
예를 들어 위 이미지처럼 Counter 를 작성했다면, 1부터 1씩 5000까지 증가하는 {userId} 라는 Counter 가 생성된 것입니다. 이 Counter 는 상위 Thread Group 에서 사용할 수 있습니다. Counter 를 사용하는 방법은 아래와 같습니다.
userId 를 사용하는 http 요청입니다. pathvariable 로 전송하는 것이니 Path 에 포함시키고, ${Counter Name} 으로 사용합니다.
Counter 를 사용한 요청은 다음과 같이 저장된 번호가 pathvariable 에 담겨 전송됩니다.
아주 기초적인 Jmeter 사용법은 이정도만 다루기로 하고,
더 추가되는 내용은 업데이트 하겠습니다!
'Study' 카테고리의 다른 글
토비의 스프링 - 2. 테스트 (2) (0) | 2025.06.02 |
---|---|
토비의 스프링 - 2. 테스트 (1) (0) | 2025.05.28 |
잘못된 yml 설정 값으로 인한 Could not resolve placeholder "" Exception 해결 방법 (0) | 2025.05.16 |
토비의 스프링 - 1. 오브젝트와 의존관계(2) (0) | 2025.05.16 |
Oauth2 를 사용한 소셜로그인 구현 과정 (0) | 2025.05.13 |