본문 바로가기

개발일지/TIL

[230812] 성능 테스트 툴 선정

성능 테스트 툴 선정

💬 성능 테스트 툴을 정하기 위해 우리에게 필요한 기준을 정했다.
     ➡ 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에 익숙하다면 쉽게 테스트를 구성할 수 있다.
래퍼런스 : 활발한 커뮤니티와 함께 다양한 자료가 있다.
비용 : 오픈소스로 제공된다.
데이터베이스 테스트 가능여부 : 지원하지 않는다.