성능 테스트 툴 선정
💬 성능 테스트 툴을 정하기 위해 우리에게 필요한 기준을 정했다.
➡ GUI가 제공이 되는가?
이유 : 테스트하는 것이 직관적이고 이해하기 쉽기 때문이다.
➡ 우리가 사용한 프로토콜(HTTP, WebSocket)을 지원하는가?
➡ 간단하게 설정을 할 수 있으며, 러닝 커브는 낮은가?
이유 : 주어진 시간이 많지 않은 상황에서 성능 향상에 많은 시간을 투자하기 위해 빠른 성능 테스트가 필요하다고 판단했다.
➡ 참고할 수 있는 레퍼런스가 많은가?
이유 : 트러블이나 설정 등에 대한 참고할만한 문서가 많다면 문제 발생 시 빠르게 해결할 수 있다.
➡ 비용이 들지 않는가?
이유 : 서버 비용으로 많은 돈이 지출될 것이기 때문에 성능 테스트 도구에 투자할 여유가 없다고 판단했다.
➡ 애플리케이션과 데이터베이스 모두 테스트할 수 있는가?
이유 : 성능 향상에 있어서 애플리케이션뿐만 아니라 추후에 데이터베이스 성능까지 고려하게 될 수도 있다고 판단했다.
➡ 우리에게 친숙한 언어(JAVA, Groovy)로 작성이 가능한가?
✅ 모든 조건에 부합하는 Jmeter를 선정하기로 했다.
✔ 툴 비교 [표]
툴 명 | GUI 제공 | HTTP, WebSocket | 간단한 설정 및 낮은 러닝 커브 | 래퍼런스가 있는가? | 비용이 적게 드는가? | 데이터베이스 테스트 가능한가? | 친숙한 언어를 사용하는가? |
JMeter | O | O | O | O | 무료 | O | Java, Groovy |
nGrinder | O | △ (WebSocket 지원 안함) |
O | O | 무료 | O | Groovy, Java 호환 가능 |
LoadRunner | O | O | O | O | 무료 | O | Vuser |
Grafana k6 | △ (Grafana 연동시 가능) |
O | O | O | 유료 | X | JavaScript |
Locust | O | O | △ (python 기반) |
△ (비교적 적음) |
무료 | X | Python |
✔ JMeter
GUI : Swing 기반의 GUI를 통해 테스트 케이스를 구성할 수 있다.
HTTP, WebSocket 지원 : 둘 다 지원한다. WebSocket은 플러그인을 통해 지원된다.
간단한 설정 및 낮은 러닝 커브 : 기본 테스트는 간단하게 설정할 수 있다. 하지만 고급 기능을 사용하려면 러닝 커브가 있을 수 있다.
래퍼런스 : 다양한 튜토리얼, 포럼, Q&A 등이 인터넷상에 존재한다.
비용 : 오픈소스로 제공된다.
데이터베이스 테스트 가능여부 : 가능하다. Groovy 기반의 스크립트를 사용해야 한다.
✔ nGrinder
GUI : 웹 기반의 GUI 제공한다.
HTTP, WebSocket 지원 : HTTP는 지원하나, WebSocket에 대한 지원이 불가능하다.
간단한 설정 및 낮은 러닝 커브 : 초기 설정은 비교적 간단하다. 고급 설정을 위해서는 Groovy 스크립트에 익숙해져야 합니다.
래퍼런스 : nGrinder는 네이버에서 개발하였으므로 국내 커뮤니티에서는 참고할 만한 자료가 상대적으로 많다.
비용 : 오픈소스로 제공된다.
데이터베이스 테스트 가능여부 : 가능하다. Groovy 기반의 스크립트를 사용해야 한다.
✔ LoadRunner
GUI : 사용자 친화적인 GUI를 제공한다.
HTTP, WebSocket 지원 : 둘 다 지원한다.
간단한 설정 및 낮은 러닝 커브 : 초기 설정은 GUI 기반으로 간단하다. 상세한 설정과 스크립트 작성에는 러닝 커브가 있다.
래퍼런스: 시장에서 오랜 시간 동안 사용되어 왔기 때문에, 광범위한 커뮤니티와 문서, 튜토리얼 등이 있다.
비용: 상용 소프트웨어이므로 비용이 발생한다. 가격은 라이선스 타입이나 지속기간에 따라 다를 수 있다.
데이터베이스 테스트 가능여부 : 가능하다. 단 vuser 기반의 스크립트를 사용해야 한다.
✔ Grafana K6
GUI : Grafana 통합으로 시각적인 대시보드와 결과를 제공한다. 하지만, 테스트 스크립트 작성은 코드 기반이다.
HTTP, WebSocket 지원 : 둘 다 지원된다.
간단한 설정 및 낮은 러닝 커브 : JavaScript 기반의 스크립트로 작성되며, 간단하고 직관적이다.
래퍼런스 : 상대적으로 새로운 도구이지만, 커뮤니티가 활발하며 문서와 자료가 꾸준히 증가하고 있다.
비용 : K6는 무료이며, Grafana도 오픈소스 버전이 무료로 제공된다.
데이터베이스 테스트 가능여부 : 지원하지 않는다.
✔ Locust
GUI : 웹 기반의 GUI를 제공한다.
HTTP, WebSocket 지원 : 둘 다 지원된다.
간단한 설정 및 낮은 러닝 커브: Python에 익숙하다면 쉽게 테스트를 구성할 수 있다.
래퍼런스 : 활발한 커뮤니티와 함께 다양한 자료가 있다.
비용 : 오픈소스로 제공된다.
데이터베이스 테스트 가능여부 : 지원하지 않는다.
'개발일지 > TIL' 카테고리의 다른 글
[230814] 성능 테스트 어떻게 진행할것인가? (1) | 2023.08.14 |
---|---|
[230813] Jmeter 설치 및 사용해보기 (1) | 2023.08.13 |
[230811] Java Faker로 더미 데이터 생성 (0) | 2023.08.11 |
[230810] 2개 이상의 기능을 1개의 SSE로 처리할 때 문제 (0) | 2023.08.10 |
[230809] 알림 기능 구현 (0) | 2023.08.09 |