E2E 테스트란 무엇인가

kimsnmyng·2025년 1월 15일

Front-End CS

목록 보기
27/79

프론트엔드 E2E(End-to-End) 테스트란?

프론트엔드 E2E 테스트는 애플리케이션의 사용자 경험을 처음부터 끝까지 시뮬레이션하여 테스트하는 방식이다. 이는 단위 테스트(Unit Test)나 통합 테스트(Integration Test)와 달리, 사용자 관점에서 전체 애플리케이션이 의도한 대로 작동하는지 검증하는 것이다. 브라우저 환경에서 실제 사용자 동작을 흉내 내어 다양한 시나리오를 테스트하며, 버튼 클릭, 페이지 이동, 데이터 입력 등을 포함한다. 보통 Cypress, Playwright와 같은 도구를 이용해 작성된다.


E2E 테스트의 중요성

  • 사용자 관점의 검증: 실제 사용자가 겪을 수 있는 문제를 조기에 발견할 수 있다.
  • 전체 시스템 통합 확인: UI 상호작용, API 호출, 화면 전환 등 모든 구성 요소가 통합적으로 작동하는지 점검할 수 있다.
  • 프로덕트 안정성 향상: 배포 후 발생할 수 있는 리스크를 줄이고 사용자 경험을 최적화할 수 있다.

유닛 테스트와의 차이

특징유닛 테스트 (Unit Test)E2E 테스트 (End-to-End Test)
테스트 범위개별 함수, 컴포넌트 등 작은 코드 단위애플리케이션 전체 흐름
목적특정 기능이 올바르게 작동하는지 확인하는 것이다.사용자 관점에서 모든 시스템이 통합적으로 작동하는지 확인하는 것이다.
속도 및 비용빠르고 비용이 적다.느리고 비용이 높다.
발견 가능한 문제코드 내부의 로직 문제를 발견할 수 있다.시스템 간 상호작용 및 실제 사용자 시나리오 문제를 발견할 수 있다.

예를 들어, 로그인 기능의 유닛 테스트는 올바른 사용자 정보를 입력했을 때 인증이 성공하는지를 확인할 수 있지만, 로그인 이후 페이지 이동, 세션 유지, 렌더링 등은 점검하지 못한다. 반면 E2E 테스트는 이러한 흐름 전체를 검사한다.


E2E 테스트 도구

  1. Cypress

    • JavaScript 기반으로 브라우저 내부에서 실행된다.
    • 직관적인 API를 제공하며 빠른 디버깅이 가능하다.
    • GUI 도구를 지원하여 테스트 과정을 시각화할 수 있다.
    • 단점: 크로스 브라우저 지원이 제한적이다.
  2. Playwright

    • Microsoft가 개발한 오픈소스 도구이다.
    • Chromium, WebKit, Firefox 등 다양한 브라우저를 지원한다.
    • 병렬 실행 및 멀티탭/멀티페이지 시나리오를 지원한다.
    • 다양한 언어(TypeScript, Python 등)와 호환된다.

유닛 테스트만으로 충분하지 않은 이유

  • 유닛 테스트는 개별 코드 조각의 동작만 확인하므로 전체 시스템 흐름이나 사용자의 실제 경험을 보장하지 못한다.
  • E2E 테스트는 사용자 관점에서 애플리케이션의 모든 요소가 통합적으로 작동하는지를 검증하여 중요한 사용자 흐름에서 발생할 수 있는 치명적인 오류를 예방할 수 있다.

결론

유닛 테스트와 E2E 테스트는 상호 보완적인 관계이다. 유닛 테스트로 개별 컴포넌트를 신속히 검사하고 디버깅 시간을 줄이는 한편, E2E 테스트로 중요한 사용자 흐름을 점검하여 배포 후 발생할 수 있는 리스크를 줄일 수 있다. 두 가지 방식을 함께 활용하면 애플리케이션의 안정성과 신뢰성을 극대화할 수 있다.

profile
안녕하세요 김선명입니다.

0개의 댓글