티스토리 뷰
k6 문서를 읽다보니 테스트 종류에 대한 글이 눈에 들어왔다.
서버 성능 테스트에도 종류가 여러가지 있음에도 보통 Load Testing만 해왔던 것 같다.
공부하는 김에 한 페이지로 정리하고자 글을 작성했다.
테스트마다 짧게 요약한 글이니, 관심이 있으면 그냥 공식문서 전체를 보기 추천한다.
공식문서에는 k6를 이용한 예제 코드를 담고 있다.
스모크 테스트 (Smoke test)
- https://grafana.com/docs/k6/latest/testing-guides/test-types/smoke-testing/
- 기본적인 시스템의 정상작동 여부를 확인하는 가장 기본적인 테스트
- 2-5명의 최소 가상 사용자로 테스트, 30초에서 3분 정도의 짧은 테스트 시간
- 목적
- 시스템 변경사항 배포 후 기본 검증용으로 활용
- 최소 부하에서의 시스템 에러 검출
부하 테스트 (Load test)
- https://grafana.com/docs/k6/latest/testing-guides/test-types/load-testing/
- 일반적인 실제 운영환경을 시물레이션하여 시스템의 성능을 측정하기 위한 테스트
- 실제 프로덕션 환경의 평균적인 사용자 수와 요청 수준으로 테스트
- 전체 테스트 시간의 5~15% 램프업 기간으로 설정. 램프업 후 평균 부하를 램프업 기간의 5배 이상 유지
- 목적
- 일반적인 부하 상황에서의 시스템 성능 및 리소스 사용량 평가
- 램프업 기간 동안의 성능 저하 징후 조기 발견
- 시스템 변경 후 성능 표준 충족여부 확인
스트레스 테스트 (Stress test)
- https://grafana.com/docs/k6/latest/testing-guides/test-types/stress-testing/
- 시스템의 한계를 찾고 성능을 측정하기 위해 평균 이상의 부하를 주는 테스트
- 평균보다 높은 부하(50~100% 이상)를 발생
- 더 긴 램프업 기간 설정, 부하 테스트보다 더 긴 피크 부하유지 시간 설정
- 부하 테스트 이후에 진행하는 것이 일반적 => 시스템 성능을 파악 후 한계찾기
- 목적
- 시스템의 최대 수용능력 측정
- 과부하 상황에서의 시스템 안정성 검증
- 성능 저하 시점과 패턴파악
- 자원확장 계획(HPA 등) 수립을 위한 데이터 수집
스파이크 테스트 (Spike test)
- https://grafana.com/docs/k6/latest/testing-guides/test-types/spike-testing/
- 갑작스러운 대규모 트래픽 증가 상황에서의 시스템 반응 테스트
- 매우 짧은 시간에 극닥전인 부하 증가와 부하 감소
- 광범위한 프로세스보단 특정 핵심 프로세스에만 집중
- 목적
- 대규모 이벤트 트래픽 대비, 급격한 부하에서의 시스템 안정성 검증
- 긴급 상황에서의 시스템 복구 능력(Failover) 평가
- 주요 프로세스 처리능력 확인
소크 테스트 (Soak test)
- https://grafana.com/docs/k6/latest/testing-guides/test-types/soak-testing/
- 장시간 지속적인 부하를 발생시켜 시스템 안정성 테스트
- 평균 부하로 장시간(시간~일) 테스트 진행
- 일반적인 부하 테스트와 동일하게 램프업/다운
- 시스템 리소스 모니터링이 중요
- 목적
- 시스템 리소스 이상 확인 (Memory leak, Database connection 등)
- 장기 운영에서 발생하는 성능 저하 패턴 분석
브레이크 포인트 테스트 (Breakpoint test)
- https://grafana.com/docs/k6/latest/testing-guides/test-types/breakpoint-testing/
- 시스템의 최대 한계점을 찾기 위한 테스트
- 점진적으로 부하를 증가시켜 시스템 한계에 도달
- 임계치 도달 시 자동 중단하거나 어느정도 확인 후 수동 중단 필요
- HPA 같은 탄력적 확장 구조 비활성화 필요
- 시스템 실패지점에 대한 정밀 분석
- 목적
- 시스템의 실제 수용한계 파악
- 성능저하 시작지점 확인 및 장애발생 패턴 분석
- 시스템 튜닝 포인트 도출
k6에서는 6가지로 소개하고 있지만, 사실 어떻게 정의하고 나누느냐에 따라 더 적게 혹은 더 많게 나눠질 것 같다.
당연하게도 종류에 초점을 맞추지 말고 "내 개발 결과물에 있어 어떤 것을 검증하고 싶은가"에 초점을 맞추고 어떻게 테스트할지 시나리오를 설정하는 것이 중요할 것이다.
이러한 테스트 종류를 학습하고 k6로 구현함에 있어 Executor를 유심히 보고 있는데 이후 이것도 정리해봐야겠다.
320x100
반응형
'Development > Server' 카테고리의 다른 글
Percentile / 백분위수 (P90, P95, P99) (0) | 2025.01.18 |
---|---|
Trace Sampling / 트레이스 샘플링 (1) | 2025.01.17 |
HTTP ETag - 2. Spring에서 사용하기 (0) | 2023.04.18 |
HTTP ETag - 1. 이게 뭔가요? (0) | 2023.04.16 |
Figma 원리: How Figma’s multiplayer technology works (0) | 2023.02.23 |
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Intellij
- 하루
- 비동기
- container
- Log
- OpenTelemetry
- tag
- jasync
- 백준
- Spring
- python
- gradle
- 일상
- Clean Architecture
- Spring boot
- docker
- MySQL
- WebFlux
- c++
- 알고리즘
- Kubernetes
- k8s
- 쿠버네티스
- boj
- HTTP
- Algorithm
- java
- Istio
- 클린 아키텍처
- 로그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함