테스트 피라미드(Test Pyramid)는 소프트웨어 테스트를 단위/통합/E2E 계층으로 나누고, 하위 계층일수록 더 많은 테스트를 두어야 한다는 테스트 전략 모델이다. Mike Cohn이 제시했다.
피라미드 구조
/```````````````````\
/ E2E / UI Tests \ ← 적음 (느림, 비쌈)
/_______________________ \
/ Integration Tests \ ← 중간
/___________________________\
/ Unit Tests \ ← 많음 (빠름, 쌈)
/_______________________________\
비율 예시: Unit 70% / Integration 20% / E2E 10%
각 계층 특성
아이스크림 콘 안티패턴
/UNIT\ /E2E (매우 많음)\
/______\ /________________\
/INTEG. \ vs / Integration \
/__________\ /____________________\
/ E2E 많음 \ / Unit (거의 없음) \
/______________\ /______________________\
아이스크림 콘: E2E 위주 → 느림, 불안정, 비쌈
피라미드: 단위 테스트 위주 → 빠르고 안정적
테스트 트로피 (Kent C. Dodds)
[E2E]
[Integration] ← 중심
[Unit]
[Static (ESLint, TS)]
"테스트는 사용 방식과 유사할수록 신뢰도가 높다"
→ 통합 테스트를 더 두껍게
실천 가이드
단위 테스트: 순수 함수, 비즈니스 로직, 유틸리티
통합 테스트: API 엔드포인트, DB 쿼리, 서비스 조합
E2E 테스트: 핵심 사용자 여정 5~10개
비용 최소화:
- E2E: 해피 패스만 (예외는 통합/단위로)
- 통합: 경계(DB, 외부 API) 위주
- 단위: 로직 분기 위주
관련 문서