본문으로 건너뛰기
SDETRole
SDETRole

용어집 · 성능

부하 테스트

영어: Load testing

다른 이름: load test, 로드 테스트, 부하 시험

정의

시스템에 실제로 예상되는 트래픽을 걸어 응답 시간, 오류율, 처리량이 합의된 목표를 충족하는지 확인하는 성능 테스트입니다.

부하 테스트(Load testing)는 실제로 예상되는 트래픽, 보통은 평상시 피크 부하를 시스템에 걸고 그때의 동작을 측정합니다. 지연 시간 백분위수, 오류율, 처리량, 리소스 사용량이 측정 대상입니다. 부하 테스트가 답하는 질문은 “계획한 부하에서 성능 목표를 충족하는가?“입니다. 시스템을 무너뜨리는 것이 목적이 아니며, 그것은 스트레스 테스트의 역할입니다.

예시 (k6)

import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '2m', target: 100 }, // ramp up to 100 virtual users
    { duration: '10m', target: 100 }, // hold at expected peak
    { duration: '1m', target: 0 },    // ramp down
  ],
  thresholds: {
    http_req_duration: ['p(95)<500', 'p(99)<1200'],
    http_req_failed: ['rate<0.01'],
  },
};

export default function () {
  const res = http.get('https://staging.example.com/api/products');
  check(res, { 'status is 200': (r) => r.status === 200 });
  sleep(1); // think time between iterations
}

임계값(threshold) 중 하나라도 초과하면 k6는 0이 아닌 종료 코드로 끝나므로, 같은 스크립트를 CI의 게이트로 그대로 사용할 수 있습니다.

부하, 스트레스, 소크, 스파이크 테스트

유형 부하 프로파일 답하는 질문
부하 예상 피크를 일정하게 유지 평상시 피크에서 목표를 충족하는가?
스트레스 예상치를 넘어 계속 증가 어디서, 어떻게 무너지며 다시 회복하는가?
소크 평상시 부하를 몇 시간 동안 유지 시간이 지나며 성능이 저하되는가(메모리 누수, 풀 고갈)?
스파이크 급격히 증가한 뒤 감소 순간적인 폭주를 견디고 다시 축소되는가?

제대로 하기 위한 요령

  • 실제 트래픽을 모델링합니다. URL 하나를 반복해서 두드리지 말고, 운영 환경 분석 데이터에서 보이는 엔드포인트 구성, 페이로드 크기, 생각 시간(think time)을 그대로 사용합니다.
  • 운영과 비슷한 환경을 사용합니다. 사양이 부족한 스테이징 서버에서 얻은 결과는 그 서버에 대해서만 알려 줍니다.
  • 평균이 아니라 백분위수로 판단합니다. 평균은 사용자가 실제로 불만을 갖는 느린 꼬리 구간을 가려 버립니다.
  • 서버 측도 함께 관찰합니다. CPU, 메모리, 데이터베이스 커넥션, 큐 깊이를 보면 지연 시간이 왜 달라졌는지 설명할 수 있습니다.
  • 목표를 먼저 합의합니다. “초당 200 요청에서 p95 500 ms 이하”처럼 명시된 목표가 없으면 부하 테스트는 숫자만 내놓을 뿐 판정을 내리지 못합니다.

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

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