본문으로 건너뛰기
SDETRole
SDETRole

용어집 · 성능

스트레스 테스트

영어: Stress testing

다른 이름: stress test, 부하 한계 테스트, breakpoint testing

정의

예상 수준을 넘는 부하를 가해 한계점을 찾고, 시스템이 어떻게 실패하며 이후 정상으로 복구되는지 확인하는 성능 테스트입니다.

스트레스 테스트는 시스템이 목표를 충족하지 못하거나 완전히 실패할 때까지 예상 부하를 넘어 단계적으로 의도적으로 부하를 올리는 테스트입니다. 부하 테스트가 “평상시 피크를 감당할 수 있는가?“를 묻는다면, 스트레스 테스트는 “얼마나 버틸 수 있는가, 무엇이 먼저 무너지는가, 그때 사용자에게는 무슨 일이 일어나는가?“를 묻습니다.

예시 (k6 ramping arrival rate)

서버의 응답 속도와 관계없이 요청 비율을 단계적으로 높입니다.

import http from 'k6/http';

export const options = {
  scenarios: {
    breakpoint: {
      executor: 'ramping-arrival-rate',
      startRate: 50,
      timeUnit: '1s',
      preAllocatedVUs: 200,
      maxVUs: 2000,
      stages: [
        { duration: '5m', target: 200 },
        { duration: '5m', target: 400 },
        { duration: '5m', target: 800 },
        { duration: '3m', target: 0 }, // ramp down to observe recovery
      ],
    },
  },
};

export default function () {
  http.get('https://staging.example.com/api/search?q=shoes');
}

arrival-rate 실행기(executor)는 응답이 느려져도 목표 비율로 계속 요청을 보냅니다. 이는 실제 사용자 행동에 더 가깝고, 가상 사용자 수를 고정하는 방식보다 포화 상태를 더 명확하게 드러냅니다.

관찰할 항목

  • 변곡점(knee). 처리량은 평탄해지는데 지연 시간 백분위수가 급격히 오르기 시작하는 요청 비율입니다. 이것이 실질적인 처리 용량입니다.
  • 실패 양상. 우아한 성능 저하(graceful degradation)는 빠른 429 또는 503 응답과 부하 차단(load shedding)으로 나타납니다. 나쁜 실패는 타임아웃, 다른 서비스로의 연쇄 장애, 데이터 손상, 프로세스 다운으로 나타납니다.
  • 복구. 부하를 낮춘 뒤 지연 시간이 저절로 정상으로 돌아오는지, 아니면 멈춘 커넥션과 가득 찬 큐 때문에 재시작이 필요한지 확인합니다.
  • 첫 번째 병목. CPU, 데이터베이스 커넥션 풀, 스레드 풀, 메모리, 또는 다운스트림 의존 서비스입니다. 병목을 해결하면 한계점이 이동하므로 스트레스 테스트는 보통 여러 번 반복합니다.

스파이크 테스트와의 차이

스트레스 테스트는 한계를 찾기 위해 부하를 점진적으로 올립니다. 스파이크 테스트는 플래시 세일이나 푸시 알림처럼 평상시 부하에서 매우 높은 부하로 거의 순간적으로 뛰어오르게 하고, 오토스케일링과 큐가 충분히 빠르게 반응하는지 확인합니다.

흔한 실수

다른 팀이 의존하는 공유 환경에서 스트레스 테스트를 실행하는 것, 서버보다 먼저 포화되는 단일 부하 생성기로 테스트하는 것, 그리고 “800 rps에서 무너졌다”에서 멈추고 어떻게 무너졌는지와 복구되었는지를 기록하지 않는 것입니다.

SDETRole 전체에서 검색할 내용을 입력하세요.

Pagefind 전문 검색 · 브라우저에서 실행됩니다 검색 페이지 열기 →