Jmeter 완벽 가이드: 한글 설정부터 성능 테스트 보고서 생성까지!

서론: Jmeter란 무엇이고 왜 사용할까요?
안녕하세요, 개발자 및 QA 엔지니어 여러분! 오늘은 애플리케이션의 성능을 측정하는 데 필수적인 도구, **Jmeter(제이미터)**에 대해 알아보겠습니다.
Jmeter는 Apache 재단에서 개발한 오픈 소스 성능 테스트 도구입니다. 웹 애플리케이션, 데이터베이스, FTP, JMS 등 다양한 서비스의 부하 및 성능 테스트를 수행할 수 있습니다. Jmeter를 사용하면 수백, 수천 명의 가상 사용자가 동시에 접속하는 상황을 시뮬레이션하여, 실제 서비스 환경에서 발생할 수 있는 병목 현상이나 성능 저하를 미리 예측하고 개선할 수 있습니다.
이 글에서는 Jmeter를 처음 접하는 분들을 위해, Jmeter 설치 후 필수적으로 해야 할 한글 설정부터 부하 테스트 시나리오 구성, 보고서 생성 및 알아두면 유용한 기능까지 모든 것을 단계별로 알려드리겠습니다.
1. Jmeter 기본 설정: 한글 깨짐 방지하기
Jmeter는 기본적으로 영어 UI를 사용하며, 한글이 포함된 응답 데이터나 보고서에서 글자가 깨지는 현상이 발생할 수 있습니다. 이를 방지하기 위해 Jmeter 실행 환경을 설정해 주는 것이 좋습니다.
1.1 Jmeter 실행
Jmeter 설치 디렉토리에서 bin 폴더로 이동합니다.
자바홈 설정을 안하면 안켜진다

1.2 Jmeter 한글 설정

이미지처럼 선택하면 할글설정 가능
2. Thread Group 설정: 부하 테스트 시나리오 구성하기
Jmeter는 '쓰레드 그룹(Thread Group)'을 통해 가상 사용자를 생성하고 테스트를 실행합니다. 쓰레드 그룹은 부하 테스트의 핵심 설정입니다.
2.1 Thread Group 추가
- Jmeter를 실행하고, 좌측 패널의 "Test Plan"을 우클릭합니다.
- Add > Threads (Users) > Thread Group을 선택합니다.
- 생성된 Thread Group을 클릭하면 우측 패널에서 상세 설정을 할 수 있습니다.
2.2 Thread Group 주요 설정
| 설정 항목 | 설명 | 예시 |
| Number of Threads (users) | 테스트에 참여할 가상 사용자(쓰레드)의 수입니다. 동시 접속자 수를 의미합니다. | 100명 |
| Ramp-up Period (seconds) | 지정된 가상 사용자 수를 몇 초 동안 순차적으로 실행할지 결정합니다. 예를 들어, 100명과 10초로 설정하면 1초에 10명씩 사용자가 접속합니다. | 10초 |
| Loop Count | 각 사용자가 시나리오를 몇 번 반복 실행할지 설정합니다. 'Loop Count'를 무한(infinite)으로 설정하면, 'Duration' 설정이 활성화됩니다. | 5회 |
| Duration (seconds) | 테스트를 실행할 총 시간(초)을 설정합니다. Loop Count가 무한일 때 주로 사용하며, 정해진 시간 동안 부하를 지속시킵니다. | 600초 (10분) |

이미지는 1초동안 100명의 사용자 접속을 테스트
3. HTTP Request 설정: 테스트할 웹 API 지정하기
Thread Group 하위에 HTTP Request Sampler를 추가하여 실제로 테스트할 API를 정의합니다.
3.1 HTTP Request 추가
- Thread Group을 우클릭합니다.
- Add > Sampler > HTTP Request를 선택합니다.
- 생성된 HTTP Request를 클릭하여 상세 설정을 합니다.
3.2 HTTP Request 주요 설정
| 설정 항목 | 설명 | 예시 |
| Protocol [http] | 테스트할 서버의 프로토콜 (http 또는 https)을 설정합니다. | https |
| Server Name or IP | 테스트할 서버의 도메인 이름 또는 IP 주소를 입력합니다. | www.example.com |
| Port Number | 서버의 포트 번호를 입력합니다. (기본 http: 80, https: 443) | 443 |
| Method | HTTP 요청 방식(GET, POST, PUT, DELETE 등)을 선택합니다. | GET |
| Path | 서버의 API 엔드포인트 경로를 입력합니다. | /api/v1/users |
| Parameters | 요청에 포함될 파라미터(쿼리 파라미터 또는 폼 데이터)를 설정합니다. | id=123 |
| Body Data | POST, PUT 요청 시 JSON 등의 데이터를 본문에 담아 보낼 때 사용합니다. | {"name": "test_user"} |

4. Listener 설정: 테스트 결과 확인하기
Listener는 테스트 결과를 실시간으로 확인하고 저장하는 역할을 합니다.
4.1 Listener 추가
- Thread Group 또는 Test Plan을 우클릭합니다.(쓰레드 그룹이 많은경우 한번에 보고서를 볼려면 Test Plan에 각각 볼경우 Thread Group으로 설정)
- Add > Listener를 선택합니다.
- 가장 많이 사용되는 리스너는 다음과 같습니다.
| Listener 종류 | 설명 | 용도 |
| View Results Tree | 각 요청 및 응답 데이터를 상세하게 확인할 수 있습니다. 디버깅에 유용하지만, 부하가 큰 테스트에서는 메모리 부하를 줄 수 있으므로 주의해야 합니다. | 디버깅용 |
| Summary Report | 요청의 성공/실패율, 평균 응답 시간, 처리량(Throughput) 등 핵심 요약 정보를 제공합니다. | 간단한 요약 보고용 |
| Aggregate Report | Summary Report와 유사하지만, 퍼센타일(Percentile) 정보를 함께 제공하여 응답 시간 분포를 파악하는 데 유용합니다. | 자세한 요약 보고용 |
이미지의 listener을 추천하며 요약 보고서의 경우 추후 html보고서를 위해 파일 경로를 이미지처럼 설정해야한다
경로설정시 해당 파일이 없다고 뜨는 알림은 무시해도 상관없다
보고서\보고서.jtl은 모두 없는 파일들이다
한번에 보기위해 Test Plan에 보고서를 설정한 경우

5. 테스트 진행
1. 이미지 빨간 원이 실행버튼이다
2. 테스트 실행시 테스트 스크립트를 저장해야한다는 내용이 나타나며 경로는 제이미터 경로에 만들어둔 보고서 폴더로 한다
3. 실행시간을 길게한경우 설정한 listener들에서 실시간으로 상황을 볼수 있다
4. 윈도우 호스트 설정을 안하는경우 정상적으로 작동 안할수 있다.

6. 보고서 보는 방법
6.1 위 요약 보고서에서 설정 한 csv파일을 열면 해당 파일에 경과가 생성되어 있다.

6.2 html보고서 생성 방법

1. 결과 파일 : 위에서 설정한 요약 보고서.csv파일 설정
2. user.properties파일 : 제이미터 파일 경로에서 bin에 있다
3. 출력 디렉토리 : 완선된 html파일 생기는 파일 위치(편의상 보고서 폴더에 별도의 폴더를 만든다)
4. 보고서 생성 버튼 클릭
5. 출력 디렉토리에 설정한 경로에 index.html파일등이 생성된다
html보고서 예시

7. 알아두면 좋은 Jmeter 편의 기능들
Jmeter의 부하 테스트를 더욱 효율적으로 만들어주는 몇 가지 유용한 기능들을 알려드릴게요.
6.1 User Defined Variables (사용자 정의 변수)
Test Plan 하위에 User Defined Variables를 추가하면, 테스트 전반에 걸쳐 재사용할 수 있는 변수를 정의할 수 있습니다. 예를 들어, 서버 IP 주소, 포트 번호 등을 변수로 지정하여 여러 HTTP Request에서 공유할 수 있습니다.
- 설정: Test Plan 우클릭 > Add > Config Element > User Defined Variables
- 사용: Server Name 입력란에 ${SERVER_IP}와 같이 변수명으로 사용합니다.
6.2 HTTP Header Manager (HTTP 헤더 관리자)
모든 HTTP 요청에 공통으로 필요한 헤더(예: Content-Type, Authorization)를 한 번에 설정할 수 있습니다.
- 설정: Thread Group 우클릭 > Add > Config Element > HTTP Header Manager
6.3 HTTP Cache Manager & Cookie Manager (캐시/쿠키 관리자)
웹 브라우저의 동작을 시뮬레이션하여 캐시와 쿠키를 관리해 줍니다. 로그인 세션 테스트 등에 필수적입니다.
- 설정: Thread Group 우클릭 > Add > Config Element > HTTP Cache Manager / HTTP Cookie Manager
6.4 csv 파일을 이용한 데이터 주입
CSV Data Set Config를 사용하면, .csv 파일에 저장된 데이터를 읽어와 사용자별로 다른 값(예: 사용자 ID, 비밀번호)을 넣어 테스트할 수 있습니다.
- 설정: Thread Group 우클릭 > Add > Config Element > CSV Data Set Config
결론: Jmeter로 애플리케이션의 성능을 검증하세요!
이 글을 통해 Jmeter의 기본적인 사용법부터 심화 기능까지 자세히 알아보았습니다. Jmeter는 단순히 부하를 주는 것을 넘어, 실제 사용자의 행동을 시뮬레이션하고 그 결과를 과학적으로 분석할 수 있는 강력한 도구입니다.
이제 여러분의 애플리케이션에 Jmeter를 적용하여 잠재적인 성능 문제를 미리 발견하고, 더욱 안정적인 서비스를 만들어보세요. 궁금한 점이 있다면 언제든지 댓글로 문의해주세요!