개발을 하다 보면 쿼리를 최적화하거나 코드를 리팩토링하여 성능을 개선하는 경우가 많습니다. 하지만, 어디가 얼마나 좋아졌는지를 정량적으로 판단하긴 어렵습니다.
그래서 이번 글에서는 성능 테스트(Performance Test), 부하 테스트(Load Test), 스트레스 테스트(Stress Test)의 개념을 명확히 정리하고, 실제로 어떻게 테스트를 수행하는지도 함께 소개합니다.
성능 테스트는 시스템이 주어진 조건에서 얼마나 빠르고 안정적으로 동작하는지를 측정하는 테스트입니다.
부하 테스트, 스트레스 테스트는 모두 성능 테스트의 하위 개념입니다.
부하 테스트는 실제 사용자가 시스템을 이용하는 상황을 시뮬레이션하여, 시스템이 정상적인 부하에서 어떻게 동작하는지 확인하는 테스트입니다.
스트레스 테스트는 시스템에 과도한 부하를 인위적으로 가해 한계 상황을 만들어 시스템의 복원력과 안정성을 측정하는 테스트입니다.
| 항목 | 성능 테스트 | 부하 테스트 | 스트레스 테스트 |
|---|---|---|---|
| 목적 | 시스템 상태 측정 | 최대 처리량 측정 | 한계 돌파 및 복원력 측정 |
| 범위 | 평균 응답/처리량 | 예상 부하 범위 내 | 예상 부하 범위 초과 |
| 실패 허용 | 불필요 | 오류/지연 허용 | 장애 발생 허용 |
| 관점 | 진단 중심 | 처리 능력 중심 | 복구 능력 중심 |
테스트를 수행하는 방법에는 여러가지가 존재하지만, 저는 K6를 선택했습니다.
현제 테스트하려는 환경에서는 Grafana Loki Stack으로 로그를 모니터링하고 있기 때문에, Grafana에서 개발한 K6가 가장 유리하다고 판단했습니다.
개발 중 시스템이 "빠르다", "느리다"는 감각적인 판단보다는,
객관적인 수치로 진단하고 개선하는 습관이 중요합니다.
성능, 부하, 스트레스 테스트는 단순한 측정 도구를 넘어서,
시스템 설계와 인프라의 방향성까지 결정짓는 핵심 지표가 됩니다.
앞으로는 리팩토링이나 최적화를 할 때마다 테스트를 통해 성능 변화를 기록해보세요.
더 좋은 품질의 서비스를 만들 수 있을 것입니다.