프론트엔드 E2E 테스트는 애플리케이션의 사용자 경험을 처음부터 끝까지 시뮬레이션하여 테스트하는 방식이다. 이는 단위 테스트(Unit Test)나 통합 테스트(Integration Test)와 달리, 사용자 관점에서 전체 애플리케이션이 의도한 대로 작동하는지 검증하는 것이다. 브라우저 환경에서 실제 사용자 동작을 흉내 내어 다양한 시나리오를 테스트하며, 버튼 클릭, 페이지 이동, 데이터 입력 등을 포함한다. 보통 Cypress, Playwright와 같은 도구를 이용해 작성된다.
| 특징 | 유닛 테스트 (Unit Test) | E2E 테스트 (End-to-End Test) |
|---|---|---|
| 테스트 범위 | 개별 함수, 컴포넌트 등 작은 코드 단위 | 애플리케이션 전체 흐름 |
| 목적 | 특정 기능이 올바르게 작동하는지 확인하는 것이다. | 사용자 관점에서 모든 시스템이 통합적으로 작동하는지 확인하는 것이다. |
| 속도 및 비용 | 빠르고 비용이 적다. | 느리고 비용이 높다. |
| 발견 가능한 문제 | 코드 내부의 로직 문제를 발견할 수 있다. | 시스템 간 상호작용 및 실제 사용자 시나리오 문제를 발견할 수 있다. |
예를 들어, 로그인 기능의 유닛 테스트는 올바른 사용자 정보를 입력했을 때 인증이 성공하는지를 확인할 수 있지만, 로그인 이후 페이지 이동, 세션 유지, 렌더링 등은 점검하지 못한다. 반면 E2E 테스트는 이러한 흐름 전체를 검사한다.
Cypress
Playwright
유닛 테스트와 E2E 테스트는 상호 보완적인 관계이다. 유닛 테스트로 개별 컴포넌트를 신속히 검사하고 디버깅 시간을 줄이는 한편, E2E 테스트로 중요한 사용자 흐름을 점검하여 배포 후 발생할 수 있는 리스크를 줄일 수 있다. 두 가지 방식을 함께 활용하면 애플리케이션의 안정성과 신뢰성을 극대화할 수 있다.