소프트웨어 테스트 종류 - 부하, 스트레스, 침투, DDoS 시뮬레이션
한 문장 요약
“무엇을 검증하느냐” 에 따라 테스트가 나뉜다. 성능 테스트는 서버의 한계를, 보안 테스트는 방어 계층의 신뢰성을 측정한다.
1. 테스트 종류 전체 지도
테스트 전체 지도
│
┌──────────────┴──────────────┐
│ │
성능/안정성 테스트 보안 테스트
│ │
┌──────┴──────┐ ┌────────┴────────┐
│ │ │ │
정상 범위 극한/장애 취약점 탐색 실전 검증
│ │ │ │
부하 테스트 스트레스 테스트 취약점 평가 침투 테스트
성능 테스트 스파이크 테스트 SAST / DAST DDoS 시뮬레이션
용량 계획 지속 부하 테스트 퍼징(Fuzzing) Red/Blue Team
카오스 엔지니어링두 계열은 목적, 측정 대상, 성공 기준이 완전히 다르다.
| 구분 | 성능/안정성 | 보안 |
|---|---|---|
| 핵심 질문 | 서버가 얼마나 버티나? | 공격을 막아낼 수 있나? |
| 측정 대상 | Origin 서버 (응답 시간, 처리량) | 방어 계층 (WAF, CDN, 방화벽) |
| 성공 기준 | 목표 rps에서 정상 응답 | 공격이 Origin에 도달하지 못함 |
| 수행 주체 | 개발/운영팀 | 보안팀, 전문 업체 |
2. 성능/안정성 테스트 계열
전체 트래픽 패턴 비교
트래픽
▲
│ 💥 한계점
│ 스트레스 ───────────→ ×
│ 스파이크 ──→ ↑↓ ↑↓
│ 부하 ──────→ ──────────
│
└──────────────────────────────────→ 시간
지속(Soak): 낮은 부하 × 장시간 ─────────────────→| 테스트 | 보는 포인트 |
|---|---|
| 부하 테스트 | 목표 구간에서의 응답시간, 오류율, 처리량 |
| 스트레스 테스트 | Breaking Point, 장애 발생 시점, 복구 동작 |
| 스파이크 테스트 | 순간 폭증 대응력, 복구 시간 |
| 지속 부하 테스트 | 메모리 누수, 커넥션 고갈, 디스크 포화 |
부하 테스트 (Load Testing)
“예상 트래픽에서 정상 동작하는가?”
흐름: 0 → 목표 rps 도달 → 일정 시간 유지 → 지표 측정
기준점은 실제 운영에서 예상하는 트래픽 범위다.
| 항목 | 내용 |
|---|---|
| 목표 | 응답 시간, 오류율, 처리량 측정 |
| 특징 | 정상 운영 범위 내에서 수행 |
| 도구 | k6, JMeter, Locust, Gatling |
스트레스 테스트 (Stress Testing)
“서버가 무너지는 한계점은 어디인가?”
예시 흐름: 0 → 100rps → 500rps → 1000rps → 서버 장애
이 과정에서 장애가 시작되는 지점이 Breaking Point다.
| 항목 | 내용 |
|---|---|
| 목표 | 한계점 파악, 한계 초과 후 복구 동작 확인 |
| 특징 | 정상 범위를 의도적으로 초과 |
| 부하 테스트와 차이 | 부하 테스트는 기준 수립, 스트레스 테스트는 한계 탐색 |
스파이크 테스트 (Spike Testing)
“갑작스러운 폭증에 어떻게 반응하는가?”
패턴: 평소 수준을 유지하다가 짧은 시간 동안 트래픽이 급증하고, 다시 정상 수준으로 복귀하는 상황을 반복한다.
| 항목 | 내용 |
|---|---|
| 목표 | 급격한 트래픽 변화에 대한 시스템 반응 측정 |
| 사례 | 쇼핑몰 타임세일, 인기 방송 직후 트래픽 폭증 |
| 확인 포인트 | 폭증 시 오류 여부, 정상 복귀까지 소요 시간 |
지속 부하 테스트 (Soak / Endurance Testing)
“낮은 부하를 오래 유지하면 문제가 생기는가?”
흐름: 낮은 부하 유지 → 24~72시간 이상 관찰
탐지 대상:
| 문제 유형 | 증상 |
|---|---|
| 메모리 누수 | 시간이 지날수록 메모리 사용량 지속 증가 |
| 커넥션 풀 고갈 | 일정 시간 후 DB 연결 실패 |
| 디스크 포화 | 로그 누적으로 디스크 가득 참 |
카오스 엔지니어링 (Chaos Engineering)
“장애가 발생해도 시스템이 살아남는가?”
부하를 올리는 게 아니라 구성 요소를 고장내는 것이 핵심이다.
| 주입하는 장애 | 검증 목적 |
|---|---|
| 서버 1대 강제 종료 | 자동 페일오버 동작 확인 |
| 네트워크 지연 주입 (200ms) | 타임아웃 처리 확인 |
| DB 연결 차단 | 캐시/폴백 동작 확인 |
| 디스크 포화 시뮬레이션 | 로그/임시파일 처리 확인 |
대표 도구: Netflix Chaos Monkey, AWS Fault Injection Simulator
3. 보안 테스트 계열
취약점 평가 (Vulnerability Assessment)
“알려진 취약점이 존재하는가? (실제 침투 없음)”
흐름: 스캐너 실행 → 시스템 스캔 → 취약점 목록(CVE 등) 출력
문이 잠겼는지 확인만 하고, 실제로 열지는 않는다.
침투 테스트 (Penetration Testing)
“실제로 침투할 수 있는가? 얼마나 깊이 들어갈 수 있나?”
| 단계 | 행동 |
|---|---|
| 1. 정찰 | 공격 대상 정보 수집 |
| 2. 스캔 | 열린 포트, 서비스 탐지 |
| 3. 침투 시도 | 취약점 실제 공격 |
| 4. 권한 상승 | 관리자 권한 탈취 시도 |
| 5. 보고서 | 침투 경로, 영향 범위 문서화 |
취약점 평가는 “문이 잠겼나?” 확인, 침투 테스트는 “문을 실제로 열어봄”
DDoS 시뮬레이션 (DDoS Simulation)
“방어 계층이 공격 트래픽을 Origin 도달 전에 차단하는가?”
[공격 시뮬레이션 도구]
│
▼
Cloudflare / WAF ← 여기서 차단되면 성공
│
× (Origin에 도달하면 실패)
▼
Origin 서버- 클라우드 제공사(Cloudflare, AWS Shield) 사전 승인 필수
- 무단 시뮬레이션은 서비스 약관 위반
퍼징 (Fuzzing)
“비정상 입력을 넣으면 어떻게 반응하는가?”
API 엔드포인트에 자동으로 이상한 값을 전송한다.
| 입력 유형 | 탐지 목표 |
|---|---|
| 매우 긴 문자열 | 버퍼 오버플로 |
| SQL 구문, 스크립트 태그 | SQL Injection, XSS |
| null, 음수, 최대 정수값 | 예외 처리 누락 |
| 잘못된 타입 (문자 대신 숫자) | 타입 검증 누락 |
Red Team / Blue Team
“실제 공격과 방어를 팀으로 나눠 실전 훈련”
| Red Team (공격팀) | Blue Team (방어팀) | |
|---|---|---|
| 역할 | 침투 시도 | 탐지, 차단, 대응 |
| 수단 | 해킹, 사회공학 | 로그 분석, 알림 체계 |
| 목표 | 방어망 뚫기 | 공격 탐지 및 차단 |
대기업, 금융권, 공공기관에서 주기적으로 수행한다.
4. 헷갈리기 쉬운 쌍
취약점 평가 vs 침투 테스트
| 취약점 평가 | 침투 테스트 | |
|---|---|---|
| 행동 | 스캔 후 목록화 | 스캔 후 실제 공격 |
| 결과물 | 취약점 목록 | 침투 경로 + 증거 |
| 비유 | ”문이 잠겼나 확인" | "문을 실제로 열어봄” |
| 위험도 | 낮음 | 높음 (통제된 환경 필요) |
부하 vs 스트레스 vs 스파이크 테스트
| 부하 테스트 | 스트레스 테스트 | 스파이크 테스트 | |
|---|---|---|---|
| 트래픽 패턴 | 점진적 증가 후 유지 | 한계까지 계속 증가 | 급격한 폭증과 복귀 반복 |
| 목적 | 운영 기준 수립 | 한계점 파악 | 폭증 대응력 확인 |
| 정상 범위 | 범위 내 | 범위 초과 | 범위 초과 (일시적) |
5. 스트레스 테스트 vs DDoS 시뮬레이션
공통점
- 서버에 대량의 트래픽을 보낸다
- 고부하 상황을 인위적으로 만든다
- 사전 계획과 승인이 필요하다
- 패킷만 보면 구별이 어렵다
차이점
| 스트레스 테스트 | DDoS 시뮬레이션 | |
|---|---|---|
| 목적 | 한계점 측정 | 방어 차단 검증 |
| 관심 위치 | Origin 서버 | CDN / WAF / 방화벽 |
| 트래픽 패턴 | 정상 요청 패턴 | 비정상 패턴 (IP 위조 등) |
| 성공 기준 | 서버가 X rps 처리 | Origin에 도달하기 전 차단 |
| 실패 기준 | 서버 다운, 응답 지연 | 차단 실패, 오탐 발생 |
| 수행 주체 | 개발/운영팀 | 보안팀, 전문 업체 |
| 승인 | 내부 승인 | 클라우드 제공사 승인 필수 |
결정적 차이: 트래픽이 어디서 끝나야 하는가
스트레스 테스트 성공:
트래픽 ──→ [방어 계층 통과] ──→ Origin 서버 도달 ← 여기서 측정
DDoS 시뮬레이션 성공:
트래픽 ──→ [방어 계층에서 차단] ──×── Origin 서버 미도달 ← 성공스트레스 테스트는 Origin에 도달해야 의미 있고, DDoS 시뮬레이션은 Origin에 도달하면 실패다.
정리 한 눈에 보기
| 테스트 종류 | 계열 | 핵심 질문 | 성공 기준 |
|---|---|---|---|
| 부하 테스트 | 성능 | 목표 rps에서 정상 응답? | 응답시간 < 기준치 |
| 스트레스 테스트 | 성능 | 한계점이 어디인가? | Breaking Point 파악 |
| 스파이크 테스트 | 성능 | 폭증에 어떻게 반응? | 복구 시간 측정 |
| 지속 부하 테스트 | 성능 | 장시간 유지 시 문제? | 메모리 누수 없음 |
| 카오스 엔지니어링 | 안정성 | 구성 요소 고장 시 생존? | 자동 복구 확인 |
| 취약점 평가 | 보안 | 알려진 취약점 존재? | CVE 목록 도출 |
| 침투 테스트 | 보안 | 실제 침투 가능? | 침투 경로 실증 |
| DDoS 시뮬레이션 | 보안 | 방어 계층이 차단하는가? | Origin 미도달 |
| 퍼징 | 보안 | 비정상 입력에 크래시? | 오류 없음 |
| Red/Blue Team | 보안 | 실전 공방에서 방어 성공? | 탐지/대응 확인 |