본문으로 건너뛰기
중급20

자동화 피라미드: 단위·통합·E2E의 이상적인 비율

자동화 테스트를 아무 계층에나 몰아넣으면 느리고 불안정해진다. 왜 단위 테스트가 가장 많고 E2E가 가장 적어야 하는지, 피라미드 구조로 이해한다.

  • #자동화피라미드
  • #테스트피라미드
  • #E2E

개념

세 계층을 다시 떠올리기

모듈 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 중 어느 계층에서 하는 게 가장 적절할지 배정하고 이유를 적는다.

  1. "할인율 계산 함수가 음수를 입력받으면 0을 반환한다"
  2. "회원가입 → 이메일 인증 → 로그인 → 첫 주문까지 전체 흐름이 끊기지 않고 완주된다"
  3. "주문 생성 API가 실제 데이터베이스에 정확한 금액으로 저장한다"

과제 2 — 아이스크림 콘 진단하기 (10분)

한 팀의 자동화 테스트 스위트가 "E2E 테스트 200개, 통합 테스트 30개, 단위 테스트 20개"로 구성되어 있다고 하자. 이 구성이 왜 문제가 될 수 있는지, 어떤 증상(느린 실행 시간, 잦은 실패 등)으로 나타날지 예상해 적는다.

자가 체크리스트

  • 자동화 피라미드의 세 계층과 이상적인 비율 원칙을 설명할 수 있다
  • "아이스크림 콘" 안티패턴이 왜 문제인지 설명할 수 있다
  • 각 계층이 확인하는 질문이 서로 다르다는 것을 예시로 설명할 수 있다
  • 피라미드 비율이 프로젝트 특성에 따라 달라질 수 있다는 것을 이해한다

흔한 실수

  • 모든 검증을 E2E 테스트로 몰아넣는다. 눈에 보이는 결과라 직관적이지만, 스위트 전체를 느리고 불안정하게 만든다.
  • 모든 프로젝트에 정확히 같은 비율을 강제하려 한다. 피라미드는 경험칙이지 절대 규칙이 아니다.
  • E2E 테스트가 통과했으니 단위 테스트는 필요 없다고 생각한다. 각 계층이 답하는 질문이 다르므로 서로 대체할 수 없다.

참고 자료

  • Martin Fowler — TestPyramid — 자동화 피라미드 개념을 정립한 대표 아티클
  • Mike Cohn, Succeeding with Agile — 테스트 피라미드 개념이 처음 소개된 저서