반응형
성능 테스트에는 여러 종류가 있으며, 각각 다음과 같은 목적을 가지고 있다.
- 부하 테스트 (Load Testing) : 시스템이 예상 사용자 부하를 처리할 수 있는지 확인, 성능 병목 지점을 찾는 목적. TPS 확인
- 스트레스 테스트 (Stress Testing) : 극도의 높은 트래픽 조건에서 부하를 처리할 수 있는지 확인
- 내구성 테스트 (Endurance Testing) : 시스템이 지속적인 작업 부하를 오랜 시간 동안 처리할 수 있는지 확인. cpu, memory 등의 리소스 문제를 발견하는데 도움이 된다.
- 볼륨 테스트 (Volume Testing) : 대량의 데이터를 처리할 수 있는지 확인. DB 또는 파일의 많은 양을 처리하는 등의 작업 확인
- 공격성 테스트 (Spike Testing) : 갑자기 높은 부하를 발생 시켰을 때 시스템이 어떻게 반응하는지 확인
테스트 계획
- 테스트 툴 선정 및 설정
- 테스트 시나리오 설계
- 테스트 시나리오를 설계하고 이를 구현한다.
- 스모크 테스트
- 성능 테스트 이전에 최소 부하로 시나리오 검증, 문제 없이 시스템이 실행 되는지 확인
- 부하 테스트
- 임계치의 한계에 도달할 때까지 부하를 꾸준히 증가 시키며 테스트 진행
- 응답시간, 처리량, 병목현상 등 확인한다.
- 스트레스 테스트
- 시스템이 과부하 상태에서 어떻게 작동하는지 테스트
- 리소스 사용 파악, 안정성 등 확인한다.
- 결과 분석
- 응답시간, 처리량, 리소스 사용률, 에러율 등의 지표 분석
- 성능 최적화 및 테스트 반복
- 성능 문제를 해결을 위한 조치를 취하여 테스트를 반복한다.
- 필요에 따라 타겟서버 스펙 업다운그레이드 하여 테스트를 반복 한다.
성능 테스트 툴 선정을 위한 고려해 볼 사항
- 러닝커브
- 러닝커브가 높지 않았으면 좋겠다.
- 다양한 통신 프로토콜이 필요한가?
- 주로 HTTP 프로토콜을 필요로 생각하기 때문에 다양한 프로토콜은 굳이?
- 테스트 시나리오
- GUI를 통해 시나리오를 구성 또는 특정 언어를 작성하여 시나리오 구성
- 특정 언어를 작성한 테스트 시나리오가 좀 더 세밀하고 구체적일 것 같다.
- 결과 분석(리포트)
- 성능 결과 또는 모니터링 인터페이스를 제공
성능 테스트 툴 비교
JMeter
- 러닝커브
- 광범위한 기능을 제공
- 따라서 복잡하게 느껴질 수 있다.
- 하지만, 기본 기능은 GUI를 기반으로 하여 쉽게 익힐 수 있다.
- 고급 기능은 더 깊은 이해가 필요하다.
- 프로토콜
- HTTP, JDBC, SOAP 등 다양한 프로토콜을 제공
- 테스트 시나리오
- GUI로 조작하여 테스트 시나리오 구성
- 결과 분석
- 리스너를 추가하여 테스트 리포트가 가능하며 차트 종류도 몇 가지가 존재한다.
- 기타
- Java Swing UI (UI가 구리다는 후기가 많다)
nGrinder
- 러닝커브
- JMeter에 비해 사용하기 쉽다.
- Java와 Groovy에 익숙한 개발자에게는 더 쉽다.
- 스크립트를 통해 세밀한 설정과 커스텀 테스트 케이스를 만드는데 유연성을 가진다.
- 프로토콜
- HTTP/HTTPS
- 테스트 시나리오
- Jython, Groovy 테스트 시나리오 코드 작성
- 결과 분석
- 웹 기반 테스트 리포트 가능, 모니터링 가능
- 기타
- 테스트 할 Target서버에 직접적으로 스트레스를 주는 Agent 설치가 필요하다.
- 다양한 환경에 Agent를 설치하여 테스트 해볼 수 있다.
- Agent를 제어하는 Controller의 클라이언트(웹) 설치 필요
Locust
- 러닝커브
- Python에 익숙한 개발자에게는 쉽다.
- Locust 또한 스크립트를 통해 유연성을 가진다.
- 프로토콜
- HTTP/HTTPS
- Python 라이브러리를 사용하여 다른 프로토콜도 가능하다.
- 테스트 시나리오
- Python 테스트 시나리오 코드 작성
- 결과 분석
- 웹 UI 제공
- 테스트 결과를 보여주는 데 중점을 두고 있다.
Gatling
- 러닝커브
- Scala는 기반으로 하는.. 테스트 시나리오도 Scala.. 그래서 Scala는 생략한다..
반응형
'Open Source' 카테고리의 다른 글
APM(Scouter) Alert 설정 및 지표, 기능, Plugin 활용 (0) | 2023.04.10 |
---|---|
APM(Scouter) 소개 및 구축 (0) | 2023.04.07 |
Redis 간단 소개 및 자료구조 (0) | 2022.09.23 |