개념
세 계층을 다시 떠올리기
모듈 10(레슨 1)에서 단위 테스트와 통합 테스트의 차이를 배웠다. 여기에 E2E(End-to-End) 테스트 — 실제 브라우저를 띄워 사용자가 하는 것처럼 전체 화면 흐름을 처음부터 끝까지 검증하는 테스트 — 를 더하면, 자동화 테스트의 세 계층이 완성된다.
E2E 테스트 — 느림, 비쌈, 깨지기 쉬움, 그러나 사용자 관점에 가장 가까움
통합 테스트 — 중간
단위 테스트 — 빠름, 저렴함, 안정적, 그러나 범위가 좁음왜 "피라미드"인가
이상적인 자동화 테스트 스위트는 아래로 갈수록 넓어지는 피라미드 모양이어야 한다.
▲
/E2E\ ← 소수
/-----\
/통합테스트\ ← 중간
/-----------\
/ 단위 테스트 \ ← 다수
/---------------\단위 테스트가 가장 많고, E2E 테스트가 가장 적어야 한다. 이유는 모듈 10(레슨 1)에서 배운 속도·안정성 차이 때문이다 — 단위 테스트는 수천 개를 몇 초 만에 돌릴 수 있지만, E2E 테스트 수천 개는 몇 시간이 걸리고, 그만큼 불안정해질(모듈 7 레슨 3의 플래키 테스트) 확률도 높아진다.
안티패턴 — "아이스크림 콘"
실무에서 흔히 발생하는 잘못된 형태는 피라미드가 뒤집힌 모양이다.
/ 단위 테스트 \ ← 적음
/-----------\
/ 통합 테스트 \ ← 중간
/-----------------\
\ E2E 테스트 / ← 많음 ⚠
\---------------/E2E 테스트에 과도하게 의존하면 테스트 스위트 전체가 느려지고, 불안정해지고, 실패했을 때 원인 파악(모듈 10 레슨 1에서 배운 "범위가 좁을수록 원인 파악이 쉽다")이 어려워진다. 이 모양을 뒤집힌 아이스크림 콘(Ice Cream Cone)이라 부른다 — 흔히 "테스트 자동화를 시작할 때 가장 눈에 보이는 것부터"(화면 클릭 자동화) 손대다 보면 이런 모양이 되기 쉽다.
각 계층이 답하는 질문이 다르다
| 계층 | 확인하는 것 |
|---|---|
| 단위 테스트 | 이 함수 하나가 논리적으로 맞는가? |
| 통합 테스트 | 여러 컴포넌트가 맞물려 잘 동작하는가? |
| E2E 테스트 | 사용자가 실제로 이 흐름을 완주할 수 있는가? |
한 계층이 다른 계층을 대신할 수 없다 — E2E 테스트가 통과했다고 개별 함수의 모든 경계값(모듈 3)까지 검증된 건 아니고, 단위 테스트가 전부 통과했다고 실제 화면에서 흐름이 매끄러운 건 아니다.
피라미드는 규칙이 아니라 경험칙이다
모든 프로젝트에 정확히 같은 비율(예: "70:20:10")을 강제할 필요는 없다. 프런트엔드 중심 프로젝트는 컴포넌트 테스트(모듈 10 레슨 6) 비중이 더 클 수 있고, 통합이 중요한 시스템은 통합 테스트 비중이 클 수 있다. 핵심 원칙은 **"위로 갈수록 비용이 커지니, 꼭 필요한 만큼만 상위 계층에 테스트를 두라"**는 것이다.
실무에서 왜 필요한가
"자동화 테스트를 늘리자"는 목표가 생겼을 때, 무작정 E2E 테스트부터 추가하면 실행 시간이 기하급수적으로 늘고 팀이 점점 자동화 테스트 결과를 신뢰하지 않게 된다(모듈 7 레슨 3의 플래키 테스트가 누적되는 전형적 경로). 피라미드 구조를 이해하는 QA는 "이 시나리오는 굳이 E2E로 안 하고 통합 테스트 수준에서 검증해도 충분하다"처럼, 자동화 계획 단계에서부터 건강한 구조를 제안할 수 있다.
실습 과제
과제 1 — 계층 배정하기 (10분)
다음 세 검증을 단위/통합/E2E 중 어느 계층에서 하는 게 가장 적절할지 배정하고 이유를 적는다.
- "할인율 계산 함수가 음수를 입력받으면 0을 반환한다"
- "회원가입 → 이메일 인증 → 로그인 → 첫 주문까지 전체 흐름이 끊기지 않고 완주된다"
- "주문 생성 API가 실제 데이터베이스에 정확한 금액으로 저장한다"
과제 2 — 아이스크림 콘 진단하기 (10분)
한 팀의 자동화 테스트 스위트가 "E2E 테스트 200개, 통합 테스트 30개, 단위 테스트 20개"로 구성되어 있다고 하자. 이 구성이 왜 문제가 될 수 있는지, 어떤 증상(느린 실행 시간, 잦은 실패 등)으로 나타날지 예상해 적는다.
자가 체크리스트
- 자동화 피라미드의 세 계층과 이상적인 비율 원칙을 설명할 수 있다
- "아이스크림 콘" 안티패턴이 왜 문제인지 설명할 수 있다
- 각 계층이 확인하는 질문이 서로 다르다는 것을 예시로 설명할 수 있다
- 피라미드 비율이 프로젝트 특성에 따라 달라질 수 있다는 것을 이해한다
흔한 실수
- 모든 검증을 E2E 테스트로 몰아넣는다. 눈에 보이는 결과라 직관적이지만, 스위트 전체를 느리고 불안정하게 만든다.
- 모든 프로젝트에 정확히 같은 비율을 강제하려 한다. 피라미드는 경험칙이지 절대 규칙이 아니다.
- E2E 테스트가 통과했으니 단위 테스트는 필요 없다고 생각한다. 각 계층이 답하는 질문이 다르므로 서로 대체할 수 없다.
참고 자료
- Martin Fowler — TestPyramid — 자동화 피라미드 개념을 정립한 대표 아티클
- Mike Cohn, Succeeding with Agile — 테스트 피라미드 개념이 처음 소개된 저서