
오늘은 Software 서비스를 만들고, 실서비스에 전에 테스트해봐야할 성능테스트에는 어떤 것들이 있는지 살펴보고, 부하 테스트(Load Test)와 스트레스 테스트(Stress Test)의 대표적인 open source인 Apache JMeter로 성능테스트를 진행해보도록 하겠습니다.
가장 시장 점유율이 높은 부하 테스트 소프트웨어는 Apache JMeter입니다. JMeter는 2024년 현재 부하 테스트 도구 시장에서 약 27.6%의 점유율을 차지하고 있으며, 점진적으로 증가하고 있습니다. [2]
두 번째로 살펴볼 Tool은 Locust입니다. 개인적으로 python환경의 개발 편의성을 고려해서도 locust를 추천합니다.
Jmeter는 다양한 프로토콜 지원과 GUI제공으로 다양한 관경에서 활용 가능한 장점이 있고, Locust는 python기반의 강력한 코드테스트 기능과 낮은 자원 소모로 효율적인 테스트를 수행할 수 있다는 장점이 있습니다. 구체적으로 어떤 차이가 있는지 살펴보면 아래와 같습니다.[3]
| 항목 | JMeter | Locust |
|---|---|---|
| 운영 체제 (Operating System) | Any (JVM 필요) | Any (Python 인터프리터 필요) |
| 오픈 소스 (Open Source) | Yes | Yes |
| GUI | Yes, with non-GUI mode available | No |
| 실행 모니터링 (Execution Monitoring) | 콘솔, 파일, 그래프, 데스크톱 클라이언트, 커스텀 플러그인 | 콘솔, 웹 |
| "코드로서의 테스트" 지원 (Test as Code) | 약함 (Java) | 강함 (Python) |
| 내장 프로토콜 지원 (In-built Protocols Support) | HTTP, FTP, JDBC, SOAP, LDAP, TCP, JMS, SMTP, POP3, IMAP | HTTP |
| 통합 호스트 모니터링 (Integrated Host Monitoring) | PerfMon | No |
| 기록 기능 (Recording Functionality) | Yes | No |
| 분산 실행 (Distributed Execution) | Yes | Yes |
| 버전 관리 시스템(VCS)과의 사용 용이성 (Easy to use with VCS) | No | Yes |
| 자원 소모량 (Resources Consumption) | 많은 자원 소모 | 적은 자원 소모 |
| 동시 사용자 수 (Number of Concurrent Users) | 수천 명 (제약 있음) | 수천 명 |
| 램프업 유연성 (Ramp-up Flexibility) | Yes | No |
| 테스트 결과 분석 (Test Results Analyzing) | Yes | Yes |
운영 체제 (Operating System)
오픈 소스 (Open Source)
GUI
실행 모니터링 (Execution Monitoring)
"코드로서의 테스트" 지원 (Test as Code)
내장 프로토콜 지원 (In-built Protocols Support)
통합 호스트 모니터링 (Integrated Host Monitoring)
기록 기능 (Recording Functionality)
분산 실행 (Distributed Execution)
버전 관리 시스템(VCS)과의 사용 용이성 (Easy to use with VCS)
자원 소모량 (Resources Consumption)
동시 사용자 수 (Number of Concurrent Users)
램프업 유연성 (Ramp-up Flexibility)
테스트 결과 분석 (Test Results Analyzing)