[소프트웨어] 성능 테스트

성능 테스트

성능 테스트(performance test)란 시스템(또는 소프트웨어)의 성능이 요구사항을 충족하는지 확인하기 위해 시스템의 속도, 안정성, 확장성 등 다양한 지표를 측정하고 평가하는 테스트이다. 성능 테스트의 목적은 시스템의 최대 성능 및 처리량을 파악하기 위한 것만은 아니며 다양한 시나리오에 따른 시스템의 처리 능력과 장애 복구 능력 등 다양한 지표를 파악하는데 있다. 성능 테스트는 다음 하위 테스트로 구성된다.

  • 부하 테스트 (load test): 부하 테스트는 임계값(threshold) 한계에 도달할 때까지 부하를 지속적으로 꾸준히 증가시키는 테스트이다. 특정 한계 지점에 도달했을 때 성능 저하나 응답 시간 지연이 발생하는지 확인한다. 장기간 지속적으로 부하를 가하여 테스트하는 부하 테스트를 내구성 테스트(indurance test)라고 한다.
  • 스트레스 테스트 (stress test): 스트레스 테스트는 평균값 또는 임계값 이상의 많은 부하를 가하여 시스템이 어떻게 동작하는지 확인하는 테스트이다. 부하 테스트는 임계값까지 부하를 가하는 반면 스트레스 테스트는 임계값 이상의 부하를 가한다. 사용자 수가 갑자기 증가하는 상황에서 어떻게 작동하는지 확인하는 스트레스 테스트를 스파이크 테스트(spike test)라고 한다.


성능 테스트 관련 용어

  • 램프 업 (ramp-up): 테스트를 시작한 후 점진적으로 부하를 증가시키는 것을 말한다. 램프 업 구간에서는 시스템의 초기 성능과 부하 증가에 따른 상태를 모니터링한다.
  • 플래토 (plateau): 부하를 일정 수준으로 유지하는 것을 말한다. 플래토 구간에서는 일정 수준의 부하(낮은 수준의 부하 또는 높은 수준의 부하)가 유지되는 동안 성능과 상태를 모니터링 한다.
  • 램프 다운 (ramp-down): 테스트를 종료하기 전까지 점진적으로 부하를 감소시키는 것을 말한다. 램프 다운 구간에서는 시스템의 부하 감소에 따른 상태를 모니터링한다.
  • 가상 유저 (VU, virtual user): 실제 사용자를 시뮬레이션하는 가상 사용자를 말한다. 기본적으로 가상 유저 한 명이 하나의 요청을 수행한다고 가정한다. 가상 유저 수를 높게 설정하는 것은 높은 부하를 발생시키는 것이다. 테스트 도구는 가상 유저 수 만큼 요청을 병렬로 수행하도록 하여 테스트를 시뮬레이션 한다.
  • 처리량 (throughput): 시스템이 일정 시간 동안 처리할 수 있는 작업의 수나 데이터의 양을 나타내는 성능 지표이다. 처리량의 단위는 보통 시간 당 요청을 처리할 수 있는 최대 작업 수(req/s) 또는 트랜잭션 수(tps)를 말한다. 성능 테스트 시 높은 가상 유저의 수를 설정하여 테스트를 수행한다는 것은 시스템이 높은 처리량을 얼마나 유지할 수 있는지 확인하는 것을 의미한다.
  • 시나리오 (scenario): 테스트 시나리오란 테스트가 수행될 환경과 조건을 설정하여 테스트를 어떻게 수행할 것인지 미리 시뮬레이션하는 계획을 의미한다. 가상 유저의 수 설정, 부하 스케줄링(부하 횟수 및 지속 기간, 부하 간 시간 간격 등) 설정 등을 통해 시나리오를 구성한다. 보다 현실적인 실제 사용자의 행동을 시뮬레이션하기 위해 요청 조건 및 반복 수 설정, 세션 설정 등의 과정이 포함될 수 있다.


테스트 시나리오 예

  1. 부하 테스트
    • 최대 사용자: 1000명
    • 램프 업: 1000명의 사용자(스레드)에 도달할 때까지 30초마다 100명의 사용자 추가
    • 플래토: 1000명의 사용자에 도달하면 부하를 300초 동안 유지
    • 램프 다운: 3초마다 10명의 사용자를 중지
  2. 스트레스 테스트
    • 최대 사용자: 10000명
    • 램프 업: 테스트 시작 후 5초를 기다린 후 곧바로 7000명의 사용자를 추가하고 10000명의 사용자에 도달할 때까지 30초마다 500명의 사용자 추가
    • 플래토: 10000명의 사용자에 도달하면 부하를 300초 동안 유지
    • 램프 다운: 1초마다 10명의 사용자를 중지


성능 테스트 도구와 시나리오 설정

게틀링


K6


참고

Comments