우리가 프로젝트를 제작하게 되면 가장 먼저 하게 되는 것이 바로 테스트이다. 하지만 우리가 하는 성능 테스트는 어떻게 진행하게 되는 것일까?
성능 테스트란
성능 테스트는 시스템 구성 요소가 특정 상황에서 어떤 성능을 보이는지 확인하기 위해 수행되는 테스트이다. 제품의 리소스 사용, 확장성 및 안정성도 해당 테스트들을 사용해서 검증할 수 있다
성능테스트는 기본적으로 매우 광범위하다. 다음 그림은 성능 테스트가 부하 및 스트레스 테스트 모두에 대한 상위 집합임을 보여준다. 때문에 대부분의 테스트를 진행할 때 부하 혹은 스트레스 테스트를 진행한다
부하 테스트
부하 테스트는 성능(Perfomance)의 하위 집합으로, 임계치 한계에 도달 할 때까지 시스템의 부하를 지속적으로 증가시켜 시스템을 테스트하는 것이다.
부하 테스트의 목적은 시스템의 내구성을 테스트하고 결과를 모니터링하기 위해 처리 할 수 있는 가장 큰 작업을 시스템에 할당하는 것이다.
부하 테스트에서 모니터링 되는 속성에는 최대 성능, 서버 처리량, 다양한 부하 수준에서의 응답 시간, H/W 환경의 적절성, 성능에 영향을 주지 않고 처리 할 수 있는 사용자 애플리케이션 수 등이 있다.
목표
- 버퍼 오버플로, 메모리 누수 및 메모리 관리 오류와 관련된 어플리케이션의 결함 노출 로드 테스트의 결과로 결국 나올 문제에는 로드 밸런싱, 대역폭, 기존 시스템의 역량 등이 포함된다
- 향후 예상되는 로드를 관리 할 수 있도록 DB, 하드웨어, 네트워크 등과 같은 어플의 모든 구성 요소에 대한 상한을 결정한다.
스트레스 테스트
스트레스 테스트를 통해 기존 자원에 과잉 작업을 과부하 시키는 다양한 활동을 수행하여 시스템을 무너뜨리려는 시도를 한다.
- 네거티브 테스트 : 시스템에서 구성 요소를 제거하는 작업도 스트레스 테스트의 일부로 수행된다.
- 피로 테스트 : 해당 테스트는 대역폭 용량을 넘을 정도로 테스트하여 어플의 안정성을 포착해야한다.
즉 스트레스 테스트는 최대 부하 및 정상 조건을 넘어서는 어플의 동작을 평가하는 것이다.
스트레스 테스트의 목적은 시스템의 오류를 확인하고 시스템이 어떻게 정상적으로 복구되는지 모니터링 하는 것이다. 여기서 주의할 점은 제어 된 환경을 설정해서 가장 예측할 수 없는 시나리오에서 반복적으로 시스템의 동작을 정확하게 캡처 할 수 있도록 하는 것이다.
- 테스트의 결과로 나올 문제는 동기화 문제, 메모리 누수, 경쟁 조건 등이 포함된다
- 사용자 수가 급증하는 상황에 시스템의 작동에 문제가 없는지 확인하는 스파이크 테스트
- 사용자의 수가 증가하는 속도가 느려지면서 일정 기간 동안 시스템의 지속 가능성을 확인하는 것을 흡수 테스트라고 한다.
목표
해당 테스트는 충돌 후 보고서를 분석하여 실패 후 어플의 동작을 정의하는 것이다. 가장 큰 문제는 장애 발생 후 시스템이 민감한 데이터의 보안을 손상시키지 않도록 하는 것이다. 성공적인 스트레스 테스트에서 시스템은 고장 후에도 모든 구성 요소와 함께 정상 상태로 돌아올 것이다
성능, 부하, 스트레스 테스트 비교
부하 테스트 | 스트레스 테스트 | |
도메인 | 성능 테스트의 하위 집합 | 성능 테스트의 하위 집합 |
범위 | 볼륨 테스트 및 내구성 테스트를 포함 | soak 테스트 및 스파이크 테스트 포함 |
주요 목표 | 시스템의 상한선을 식별하려면 앱의 SLA를 설정하고 시스템이 과부하 볼륨을 처리하는 방법을 확인 | 과부하에서 시스템이 작동하는 방식과 이를 복구하는 방식을 테스트한다. 어플 & 웹이 예기치 않은 트래픽 급증에 다운되지 않도록 대비 |
부하제한 | 임계치 이전까지 검사 | 임계치를 초과한 경우 검사 |
학습된 속성 | 과부하 수준에서 최대 성능, 서버 처리량, 응답 시간, H/W환경의 적절성, 처리 할 수 있는 사용자 앱 수, 부하 분산 요구 사항 | 대역폭 용량, 응답 시간 이상의 안정성 |
얻은 결과 | 부하 분산 문제, 대역폭 문제, 시스템 용량 문제, 응답 시간 부족, 처리량 문제 | 과부하, 과부하 상황에서의 데이터 손상 여부, 속도 저하, 메모리 누수등의 보안 허점 |
'테스트' 카테고리의 다른 글
JMeter를 이용한 과부하 테스트(동시 접속자 테스트) (0) | 2023.09.07 |
---|---|
웹 서버 성능 지표(TPS) (0) | 2023.09.06 |