실제 서비스를 운영하다보면 기능이 잘 동작하는지도 중요하지만, 얼마나 많은 요청을 안정적으로 처리할 수 있는지에 대해서도 고려해야 합니다. 그래서 실무에서는 기능 테스트 뿐만 아니라, 성능 테스트 또한 필수적인 과정이라고 생각합니다.
이 과정에 도움이 되는 도구인 JMeter는 JSP, Ajax와 같은 동적 리소스 뿐만 아니라, JavaScript, HTML 파일과 같은 정적 리소스의 성능을 측정할 수 있고, 동시성 및 부하 테스트를 지원합니다. 더불어 테스트에 대한 결과를 Report, Table, Tree, Graph 등 다양한 형태로 추출해줍니다. 이제 장점을 알았으니, JMeter의 개념 및 관련 용어와 설치 방법(Window OS 기준으로 설명), 테스트 과정에 대해 설명드리겠습니다.
JMeter
Apache JMeter™ 애플리케이션은 오픈 소스 소프트웨어로, 기능 동작 부하 테스트 및 성능 측정을 위해 설계된 100% 순수 Java 애플리케이션입니다. 원래는 웹 애플리케이션 테스트용으로 설계되었지만, 이후 다른 테스트 기능으로 확장되었습니다.
설치 및 JMeter 실행 방법
- k6, nGrinder와 같은 성능 Test Tool에 비해 간단한 편이라고 생각합니다.
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
- 해당 url로 접속하여 zip 파일을 다운로드 해줍니다.
- 압축을 해제하고, 터미널에 접속합니다.
- bin 디렉토리로 접근하여 jmeter를 실행해줍니다.
- PS C:\apache-jmeter-5.6.3\bin> ./jmeter
테스트 환경 세팅
1. Thread Group 설정
- Number of Threads (Users): Test에 사용될 Thread(Users) 개수
- Ramp-Up Period: 스레드가 실행되기까지 소요되는 시간(초)
- Loop Count: 각 스레드가 실행해야 할 반복 횟수
위의 세팅된 값을 예시로 보면, Number of Threads = 10, Ramp-Up Period = 1, Loop Count = 2 입니다.
즉, 10개의 Thread가 1초동안 Test Plan을 2회 실행합니다.
2. Sampler 추가 (HTTP Request)
- Protocol: http, https
- Server Name or IP: Host or IP
- Port Number: Port Number (8080, 443 ..)
- Path: request url
- Parameters: (선택)
웹 서버에 HTTP Request 요청을 보내기 위한 설정을 해줍니다.
3. Listener 추가 (요청에 대한 결과 확인)
- View Results Tree
- Request, Response에 대한 Header 및 Body 정보를 상세하게 확인할 수 있습니다.
- View Results in Table
- 테이블 형태로 Thread Group의 이름, 테스트 수행 시간, 대기 횟수 등을 확인할 수 있습니다.
- Summary Report
- 호출 건수, 응답 시간의 통계, Error율, TPS 등을 확인할 수 있습니다.
더불어, TPS를 그래프 형태로 확인하고 싶으면 플러그인을 설치하셔서 초당 요청 개수를 직관적으로 파악할 수 있습니다.
https://jmeter-plugins.org/wiki/TransactionsPerSecond/
'Java > Spring' 카테고리의 다른 글
[Spring] java 메모리에 존재하는 list 데이터 페이징 처리 (2) | 2025.02.12 |
---|---|
[Spring] @Formula annotation을 활용하여 count 조회 성능 개선 (1) | 2025.02.10 |
[Spring] Json 직렬화, 역직렬화 (0) | 2024.12.24 |
[Spring] RestTemplate (4) | 2024.11.22 |
[Spring] Spring Cloud Gateway (+ Eureka Server) (2) | 2024.10.26 |