본문으로 건너뛰기
QA-Lab
중급20

성능 테스트의 종류: 부하·스트레스·스파이크·내구성

"성능 테스트"라는 말은 뭉뚱그려 쓰이지만, 실제로는 서로 다른 질문에 답하는 네 가지 테스트가 있다. 각각의 목적과 차이를 이해한다.

  • #성능테스트
  • #부하테스트
  • #스트레스테스트

개념

"성능 테스트"는 하나가 아니다

"성능 테스트 좀 해주세요"라는 요청은 사실 애매하다. 정확히 무엇을 확인하고 싶은지에 따라 서로 다른 방식의 테스트가 필요하다.

부하 테스트(Load Testing)

예상되는 정상 범위의 트래픽에서 시스템이 잘 견디는지 확인한다.

질문: "평소 예상하는 동시 사용자 수(예: 1,000명)에서 응답 시간이 괜찮은가?"

이건 모듈 4(레슨 4)에서 배운 일정·용량 산정과 비슷한 개념이다 — "이 정도 규모를 감당할 수 있는가"를 실제로 확인하는 것이다.

스트레스 테스트(Stress Testing)

시스템이 감당할 수 있는 한계가 어디까지인지를 찾기 위해, 점점 부하를 늘려가며 어느 지점에서 무너지는지 확인한다.

질문: "동시 사용자가 10,000명, 20,000명으로 계속 늘어나면 언제 시스템이 죽는가?"

모듈 5(레슨 6)에서 배운 "한계까지 밀어붙이기"라는 탐색적 접근의 정신이, 여기서는 부하라는 축에 체계적으로 적용된 것이다. 한계를 알아야, "우리 시스템은 최대 이 정도까지는 버틴다"는 근거를 갖고 용량 계획을 세울 수 있다.

스파이크 테스트(Spike Testing)

트래픽이 갑자기 폭증했다가 갑자기 줄어드는 상황을 재현한다.

질문: "평소 1,000명이던 사용자가 이벤트 시작 순간 갑자기 20,000명으로
      폭증하면 시스템이 버티는가? 폭증이 끝난 뒤 정상으로 잘 돌아오는가?"

블랙프라이데이 세일, 티켓 예매 오픈처럼 예측 가능한 특정 순간에 몰리는 트래픽을 다루는 서비스에서 특히 중요하다 — 부하가 서서히 늘어나는 부하 테스트와 달리, 급격한 변화 자체가 시스템에 주는 충격을 확인한다.

내구성 테스트(Soak Testing / Endurance Testing)

오랜 시간 동안 지속적인 부하를 줘서, 짧은 테스트에서는 안 보이는 문제를 찾는다.

질문: "평소 수준의 부하를 24시간, 며칠간 계속 줬을 때도 문제없이 도는가?"

모듈 9(레슨 4)에서 배운 메모리 누수 같은 문제는 짧은 테스트에서는 드러나지 않고, 시간이 누적되어야 나타난다 — 내구성 테스트가 이런 문제를 잡는 방법이다.

네 가지 테스트 비교

테스트확인하는 것부하 패턴
부하예상 범위에서 괜찮은가정상 수준 유지
스트레스한계가 어디인가점점 증가시킴
스파이크급격한 변화에 버티는가순간적으로 폭증
내구성오래 견디는가정상 수준을 장시간 유지

실무에서 왜 필요한가

"성능 테스트 했어요"라는 말만으로는 무엇을 확인했는지 알 수 없다 — "평소 트래픽에서는 확인했지만, 이벤트 시작 순간의 폭증 시나리오는 확인 안 됐다"처럼 구체적으로 구분해서 말할 수 있어야 실제로 무엇이 검증됐고 무엇이 안 됐는지 팀이 정확히 판단할 수 있다. 이건 모듈 6(레슨 5)에서 배운 정직한 지표 보고 원칙과 같은 맥락이다.

실습 과제

과제 1 — 적합한 테스트 유형 고르기 (10분)

다음 세 상황에 각각 어떤 성능 테스트 유형이 가장 적합할지 판단하고 이유를 적는다.

  1. "매년 수능 성적 발표 순간 사이트 접속자가 폭증하는 서비스"
  2. "우리 서버가 최대 몇 명까지 버틸 수 있는지 알고 싶다"
  3. "며칠씩 켜두면 서버가 느려진다는 제보가 있었다"

과제 2 — 결과 해석 연습 (10분)

스트레스 테스트 결과 "동시 사용자 15,000명부터 응답 시간이 급격히 늘어나기 시작했다"는 결과가 나왔다면, 이걸 근거로 어떤 운영상의 판단(예: 트래픽 상한선 설정)을 내릴 수 있을지 적는다.

자가 체크리스트

  • 부하·스트레스·스파이크·내구성 테스트의 목적 차이를 설명할 수 있다
  • 각 테스트가 어떤 상황에 적합한지 판단할 수 있다
  • 스트레스 테스트로 얻은 한계값이 어떻게 실무 의사결정에 쓰이는지 설명할 수 있다
  • 내구성 테스트가 짧은 테스트로는 못 잡는 문제를 잡는 이유를 설명할 수 있다

흔한 실수

  • "성능 테스트"를 뭉뚱그려 하나로만 생각한다. 어떤 질문에 답하려는지에 따라 완전히 다른 방식의 테스트가 필요하다.
  • 부하 테스트만 하고 스파이크 테스트는 생략한다. 트래픽이 서서히 느는 서비스가 아니라면, 급격한 변화 자체가 별도의 리스크다.
  • 한 번의 짧은 테스트로 모든 성능 문제를 다 잡을 수 있다고 생각한다. 메모리 누수 같은 문제는 내구성 테스트로만 드러난다.

참고 자료