스트레스 테스트(Stress Testing) 수행 방법은?

엔스마트·2024년 10월 7일

성능 테스트

목록 보기
5/5

스트레스 테스트(Stress Testing)는 시스템이 처리 가능한 최대 부하를 초과할 때 어떻게 동작하는지를 확인하는 성능 테스트 방법입니다. 이 테스트는 시스템의 안정성과 복구 능력을 평가하며, 시스템이 한계 상황에서도 정상적으로 동작하거나 적절히 복구되는지 확인하는 것이 목적입니다.

스트레스 테스트 수행 방법

1. 테스트 목표 설정

스트레스 테스트는 시스템의 한계를 파악하고, 최대 부하를 넘는 상황에서의 성능과 복구 능력을 평가합니다.

  • 주요 목표:
    • 시스템 한계치(TPS, 동시 접속자 수)를 파악.
    • 자원 사용률(CPU, 메모리, 네트워크)이 한계에 도달했을 때의 동작 확인.
    • 응답 시간, 오류율이 어떻게 변화하는지 분석.
    • 시스템이 비정상적 상황에 직면할 때의 동작과 복구 시간.

2. 테스트 환경 준비

  • 실제 운영 환경과 유사한 테스트 환경을 구성해야 합니다. 스트레스 테스트는 특히 자원 소모가 많은 테스트이므로, 적절한 환경 구성이 중요합니다.
  • 부하 발생기를 사용하여 부하를 발생시킵니다. 여러 대의 부하 발생기가 필요할 수 있으며, 네트워크 대역폭도 충분히 확보해야 합니다.

3. 테스트 시나리오 작성

  • 스트레스 테스트 시나리오는 실제 사용자 행동을 반영하며, 시스템의 주요 기능을 포함해야 합니다.
  • 시나리오 예시:
    • 사용자 로그인/로그아웃
    • 상품 검색 및 상세 조회
    • 장바구니에 상품 추가
    • 결제 시나리오
    • 실시간 데이터 업데이트
  • 이러한 시나리오는 일반적인 사용자 흐름을 반영하면서 동시에 예외 상황이나 극한의 트래픽을 시뮬레이션할 수 있어야 합니다.

4. 부하 프로파일 설정

  • 가상 사용자 증가 패턴: 스트레스 테스트에서는 목표 TPS나 동시 접속자 수를 초과하는 수준으로 가상 사용자를 점진적으로 또는 급격하게 증가시킵니다.
  • 부하 증가 단계: 초당 수십 명 이상의 가상 사용자를 추가하여 시스템을 점점 더 큰 부하에 노출시킵니다. 예를 들어 초당 5~10명의 가상 사용자를 증가시키며 부하를 높입니다.
  • 부하 유지: 일정 시간 동안 최대 부하를 유지한 후, 시스템이 어떻게 반응하는지 관찰합니다.

5. 스트레스 테스트 실행

  • 부하 발생기를 통해 가상 사용자를 급격하게 늘리거나 일정 간격으로 부하를 증가시킵니다.
    시스템에 점진적으로 또는 급격히 부하를 가하면서, 한계점에 도달할 때까지 부하를 지속적으로 증가시킵니다.
  • 부하가 한계치에 도달하면 그 상태를 일정 시간 유지하며 시스템의 동작을 확인합니다.

6. 성능 모니터링

  • 시스템 자원(CPU, 메모리, 네트워크, 디스크 I/O)을 집중적으로 모니터링합니다.
    응답 시간, TPS, 에러율, 자원 사용률이 한계점에 도달하거나 넘었을 때 발생하는 현상을 관찰합니다.
  • 서버 로그 및 모니터링 도구를 통해 오류 발생, 서비스 중단, 성능 저하 등을 확인합니다.

7. 비정상적 상태 확인

시스템이 부하를 감당할 수 없을 때 나타나는 비정상적인 상태를 기록합니다.
시스템 충돌, 성능 저하, 서비스 중단 등의 현상이 발생할 수 있으며, 이때의 로그와 오류 메시지를 수집합니다.
회복 능력 평가: 부하가 줄어들었을 때 시스템이 정상적으로 복구되는지를 평가합니다. 시스템이 자원 해제를 통해 자동으로 복구되는지, 아니면 수동 개입이 필요한지를 확인합니다.

8. 테스트 종료

설정된 부하 수준에서 일정 시간을 유지한 후 테스트를 종료합니다.
부하 감소 단계를 통해 가상 사용자를 점차 줄여나가며 시스템의 회복 능력을 테스트합니다.

9. 결과 분석

수집한 데이터를 기반으로 시스템의 한계 성능을 분석합니다.
성능 한계(TPS, 동시 사용자 수)를 도출하고, 오류 발생 시점, 시스템 회복 시간 등을 확인합니다.
분석 결과를 바탕으로 시스템의 병목 현상, 자원 부족 문제 등을 파악하고 개선점을 도출합니다.

10. 결과 보고서 작성

  • 스트레스 테스트 결과를 보고서로 작성합니다. 보고서에는 다음 내용이 포함되어야 합니다:
  • 테스트 목적 및 목표
    • 테스트 환경 (하드웨어, 소프트웨어 구성)
    • 부하 프로파일 및 시나리오
    • 성능 지표 (응답 시간, 처리량, 자원 사용률)
    • 한계점 도달 시의 시스템 동작
    • 복구 능력 및 회복 시간
    • 개선해야 할 사항 및 권장 조치

스트레스 테스트에서 주요 고려 사항

  • 부하 증가 속도: 스트레스 테스트에서는 시스템의 한계에 도달할 때까지 부하를 증가시키는 것이 목표이므로, 초당 가상 사용자 증가 속도를 설정할 때 급격한 증가 또는 점진적인 증가 방식을 선택할 수 있습니다.
  • 한계점 발견: 시스템이 최대 자원을 소모했을 때 응답 시간의 급격한 증가, 오류율의 상승, 시스템 다운 등의 문제가 발생하는 시점을 기록하고 분석해야 합니다.
    시스템의 복구 능력: 테스트 종료 후 시스템이 얼마나 빨리 정상 상태로 돌아오는지 평가하는 것도 중요합니다. 시스템의 회복 시간이 길다면, 추가적인 튜닝이 필요할 수 있습니다.
  • 테스트 중단 기준: 시스템이 완전히 응답하지 않거나, 심각한 오류가 발생하면 테스트를 중단하고 복구 과정을 평가해야 합니다.

스트레스 테스트 수행 시의 순차적 단계

  • 점진적 부하 증가: 가상 사용자를 초당 일정 수로 증가시켜 점진적으로 시스템에 부하를 가합니다.
  • 한계점 도달 시 부하 유지: 부하가 한계점에 도달하면, 그 상태를 일정 시간 유지하여 시스템이 어떻게 동작하는지 관찰합니다.
  • 부하 감소 및 복구 평가: 한계 부하 이후에 사용자를 줄여가며 시스템이 정상적으로 복구되는지 확인합니다.

이와 같은 절차를 통해 스트레스 테스트를 수행하면 시스템의 안정성과 복구 능력을 평가하고, 개선해야 할 부분을 도출할 수 있습니다.

profile
클라우드 전환, MSA 서비스, DevOps 환경 구축과 기술지원 그리고 엔터프라이즈 시스템을 구축하는 최고 실력과 경험을 가진 Architect Group 입니다.

0개의 댓글