
출처: https://www.opencodez.com/software-testing/what-is-performance-testing-performance-testing-types-tools-skills-required-and-career-growth.htm
개발을 하면서 도입하고자 하는 기술들이 여러가지 있었습니다. 해당 기술을 도입하는 데에 중요한 조건 중에 하나는 Performance
에 관한 부분이었습니다. Performance
를 측정하기 위한 방법과 종류에 대해서 한번 알아보고 기록하고자 합니다.
- Speed
- Scalability
- Stability
테스트 요소
- 어디까지
부하
를 감당 할 수 있는가?
- 에러가 발생하는가?
- 병목 현상이 발생하는가?
테스트 항목
- Response Time: 요청이 처리되는 데 걸리는 평균 시간.
- Throughput: 초당 처리되는 요청 수.
- Resoruce Utilization: CPU, Memory, Disk, Network 대역폭 등의 자원 사용률
- Stablility: 장시간 동안의 성능 유지 여부
- Error Rate: 처리 실패 또는 타임아웃 발생 비율
성능 테스트 종류
- 부하 테스트 (Load Testing): 최대 부하 조건에서 시스템이 어떻게 작동하는지 테스트합니다.
- 스트레스 테스트(Stress Testing): 시스템이 한계를 넘는 부하에서 어떻게 반응하는지 평가합니다.
- 스파이크 테스트(Spike Testing): 짧은 시간에 급격히 증가하는 부하 상황에서 시스템이 어떻게 반응하는지 평가합니다.
- 내구성 테스트(Soak Testing, Endurance testing) : 장시간 동안 지속되는 부하에서 시스템의 성능과 안정성을 평가합니다.
- 볼륨 테스트(Volume Testing): 대량의 데이터를 처리할 때 시스템의 성능을 평가합니다.
- 회복력 테스트(Resilience Testing): 시스템이 스트레스 상태에 있을 때 초기 상태로 돌아갈 수 있을 만큼 충분한 지 여부를 확인합니다.
- 실패 테스트(Failure Testing): 종속된 다른 모듈을 사용할 수 없는 경우 어떤 모듈이 어떻게 수행되는 지 확인하기 위해 실행됩니다.
- 복구 테스트(Recovery Testing): 부하가 정상 수준으로 감소했을 때, 애플리케이션이 스스로를 복구할 수 있는지 확인합니다.
성능 문제 원인
- 병목현상
- 확장성이 낮음
- Configuration 문제
- 하드웨어 문제(스펙이 낮음)
- 메모리 누수
- 네트워크 구성
- OS 제한
- CPU 사용률 낮음
성능 테스트 도구
- 부하 테스트: Apache JMeter, nGrinder, Gatling, Locust
- 모니터링: Prometheus(모니터링 및 경고) & Grafana(시각화), ELK
References