etc/테스트 코드

E2E 테스트란? 개요 및 도구 비교

Hyunsun 2026. 1. 28. 18:08
728x90

서비스가 커질수록 “이 기능이 다른 기능을 깨뜨리지는 않았을까?”에 대한 불안도 함께 커집니다.
이때 가장 사용자 관점에서 전체 흐름을 검증할 수 있는 방법이 바로 E2E(End-to-End) 테스트입니다.

E2E 테스트는 사용자의 실제 행동을 그대로 시뮬레이션하여, 애플리케이션이 처음부터 끝까지 정상적으로 동작하는지를 확인하는 테스트 방식입니다.


🎯 E2E 테스트의 목적

E2E 테스트의 핵심 목적은 단순히 화면이 잘 뜨는지를 확인하는 것이 아니라, 시스템 전체 흐름이 의도대로 연결되어 있는지 검증하는 데 있습니다.

  • 프론트엔드 ↔ 백엔드 ↔ DB 간의 통합 흐름 검증
  • 실제 사용자 시나리오 자동화
    (예: 로그인 → 상품 선택 → 결제 → 주문 완료)
  • UI/UX 흐름이 기획 의도대로 동작하는지 확인
  • 배포 후 발생할 수 있는 회귀(regression) 이슈 사전 차단

🔍 테스트 종류 비교

테스트는 목적에 따라 여러 단계로 나뉘며, E2E 테스트는 그중 가장 상위 단계에 해당합니다.

구분 설명 예시 주요 도구
유닛 테스트 함수·컴포넌트 등 작은 단위의 로직 검증 add(1, 2) 결과가 3인지 확인 Jest, React Testing Library
통합 테스트 여러 모듈이 연결되어 정상 동작하는지 검증 API 응답 후 화면에 데이터 표시 여부 Jest, Supertest, RTL
E2E 테스트 사용자 시나리오 기준으로 앱을 처음부터 끝까지 검증 로그인 → 장바구니 → 결제 → 완료 페이지 Playwright, Cypress, Selenium

👉 즉, 유닛 테스트가 “잘 만든 부품”을 확인한다면, E2E 테스트는 “완성된 제품”을 검증한다고 볼 수 있습니다.


👍 E2E 테스트의 장점

  • 실제 사용자 흐름을 그대로 검증 → 테스트 신뢰도 높음
  • 기능 수정 후 기존 기능이 깨졌는지 빠르게 확인 가능
    회귀 테스트에 매우 적합
  • 반복적인 수동 QA 작업 감소
  • CI/CD 파이프라인에 연동하여 배포 안정성 강화

⚠️ E2E 테스트의 단점

  • 브라우저·서버·DB까지 포함 → 테스트 실행 속도가 느림
  • 네트워크·비동기 이슈로 인한 불안정한 테스트(flake) 발생 가능
  • 테스트 시나리오 변경 시 유지보수 비용이 큼
  • 모든 케이스를 E2E로 커버하려 하면 오히려 비효율적

👉 따라서 유닛 / 통합 테스트 + 핵심 시나리오만 E2E 테스트로 보완하는 전략이 가장 현실적입니다.


🆚 Cypress vs Playwright vs Selenium

E2E 테스트 도구는 여러 가지가 있지만, 실무에서 가장 많이 비교되는 세 가지는 다음과 같습니다.

항목 Cypress Playwright Selenium
디버깅 명령 로그 + 브라우저 실시간 확인 DevTools 연동, 트레이스 분석 로그 기반
자동 대기 기본 제공 스마트 대기 지원 수동 wait 필요
시각적 결과 스크린샷·영상 자동 저장 스크린샷·영상·트레이스 설정 필요
설치/학습 매우 쉬움 비교적 쉬움 복잡함
성능 빠름 매우 빠름 느림
브라우저 Chromium 계열 Chromium / Firefox / WebKit 거의 모든 브라우저

 

최근에는 성능·안정성·멀티 브라우저 지원 측면에서 Playwright를 선택하는 팀이 빠르게 늘고 있습니다.

https://articles.testndev.com/testing/300-web-app-testing-tools-benchmark-popularity.html


🎭 Playwright 소개

Playwright는 Microsoft에서 개발한 E2E 테스트 프레임워크로, 현대적인 웹 애플리케이션 테스트에 최적화된 도구입니다.

🌟 Playwright 주요 특징

  • ✅ Chromium, Firefox, WebKit 다중 브라우저 지원
  • ✅ Windows, macOS, Linux 멀티 플랫폼 테스트
  • ✅ Headless / Headful 모드 모두 지원
  • ✅ DOM·네트워크 기반 자동 대기
  • ✅ 병렬 실행으로 빠른 테스트 수행
  • 트레이스 / 스크린샷 / 비디오 / 네트워크 로그 저장
  • ✅ CI/CD 환경과의 뛰어난 궁합

특히 테스트 실패 시 트레이스를 통해 “왜 실패했는지”를 시각적으로 추적할 수 있다는 점이 큰 장점입니다.


🧪 Playwright 자주 사용하는 실행 명령어

명령어 설명
npx playwright test 전체 테스트 실행
npx playwright test example.spec.ts 특정 테스트 파일 실행
npx playwright test --ui UI 모드로 테스트 실행 및 결과 확인
npx playwright codegen 브라우저 조작으로 테스트 코드 자동 생성
npx playwright show-trace trace.zip 실패 테스트 트레이스 분석

마무리

E2E 테스트는 모든 문제를 해결해 주는 만능 도구는 아니지만,
사용자 관점에서 서비스의 신뢰도를 지켜주는 가장 강력한 안전망입니다.

  • 핵심 사용자 시나리오만 선별해서 적용하고
  • 유닛/통합 테스트와 함께 조합한다면
  • 테스트 비용 대비 효과는 매우 커집니다.

다음 글에서는 Playwright를 활용해 E2E 테스트를 어떻게 구성하고 사용했는지 정리해보겠습니다.

728x90