개념
세 계층을 다시 떠올리기
모듈 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로 안 하고 통합 테스트 수준에서 검증해도 충분하다"처럼, 자동화 계획 단계에서부터 건강한 구조를 제안할 수 있다.