단위 테스트부터 E2E까지: 프론트엔드 테스트의 모든 것

ByEunwoo
react
FE test diagram

프론트엔드 테스트, 왜 중요할까?

프론트엔드 애플리케이션이 점점 복잡해지면서, 작은 변경이 예기치 않은 버그로 이어지는 경우가 많아진다. 이런 리스크를 줄이기 위해 자동화 테스트는 필수가 되었고, 프론트엔드에서도 단위(Unit), 통합(Integration), E2E(End-to-End) 테스트로 나누어 체계적인 접근이 이뤄지고 있습니다. 이 글에서는 각각의 테스트 개념, 현업에서 어떻게 사용되는지, 그리고 주요 도구인 Storybook, React Testing Library(RTL), Vitest/Jest, MSW, Cypress를 예시로 구체적으로 살펴보자.

테스트의 3가지 종류

단위 테스트 (Unit Test)

정의

  • 개별 함수나 컴포넌트 같은 가장 작은 단위를 테스트한다.
  • 외부 의존성을 최소화하고, 로직이 기대대로 작동하는지를 검증한다.

예시

  • 상품 카드 컴포넌트가 주어진 props에 따라 UI를 정확히 렌더링하는지 테스트

현업에서의 활용

  • 로직이 많은 컴포넌트나 유틸 함수에서 자주 작성됩니다.
  • 테스트 실패 시 원인을 빠르게 파악할 수 있어 디버깅 효율이 높습니다.

사용 도구

  • Vitest, Jest: 빠르고 직관적인 테스트 러너
  • React Testing Library: 실제 사용자처럼 컴포넌트를 조작하며 테스트
  • Storybook: UI 단위를 시각적으로 확인, 테스트 작성 전 구조 검토

통합 테스트 (Integration Test)

정의

  • 여러 컴포넌트 혹은 모듈이 함께 작동할 때를 테스트한다.
  • 상호작용을 포함한 기능 흐름이 제대로 연결되어 있는지 확인한다

예시

  • 상품 목록이 API 응답에 따라 필터링되고 렌더링되는지 테스트

현업에서의 활용

  • 비즈니스 로직의 흐름(데이터 가져오기 → 상태 업데이트 → UI 렌더)을 검증한다.
  • API 호출이 포함되므로 MSW를 통한 목(mock) 처리와 함께 자주 사용됩니다.

사용 도구

  • Vitest + React Testing Library: 실제 사용자처럼 흐름 테스트
  • MSW: API 요청을 가로채 가짜 응답 제공, 외부 의존 제거

E2E 테스트 (End-to-End Test)

정의

  • 사용자가 브라우저에서 수행하는 전체 흐름을 테스트한다.
  • 백엔드, 프론트엔드, 라우팅 등을 포함한 전체 스택을 아우른다.

예시

  • 사용자가 홈 화면에 접속 → 상품을 선택 → 장바구니에 추가 → 결제 화면으로 이동

현업에서의 활용

  • 실제 브라우저 환경에서 테스트되므로 신뢰도가 매우 높다.
  • 배포 전 핵심 기능(로그인, 결제, 검색 등)의 안정성을 보장하는 데 필수적이다.

사용 도구

  • Cypress: 브라우저에서 동작을 실제로 수행하며 검증
  • MSW: 백엔드가 완성되지 않은 상태에서도 전체 흐름 테스트 가능

현업에서는 어떻게 쓸까?

💡 단위 테스트

  • 컴포넌트 로직, 포맷터, 유틸 함수를 중심으로 작성
  • 개발 속도를 방해하지 않으면서 높은 커버리지 확보

💡 통합 테스트

  • 페이지 단위로 작성
  • 상태관리(Context, Redux)나 API 호출의 연결 고리를 검증

💡 E2E 테스트

  • 핵심 사용자 흐름(회원가입, 로그인, 결제 등)만 선택적으로 작성
  • QA 자동화를 위한 핵심 수단 (CI/CD 파이프라인에 포함)

정리

항목단위 테스트 (Unit)통합 테스트 (Integration)E2E 테스트 (End-to-End)
FE 환경에서 테스트 대상개별 함수, 컴포넌트컴포넌트 간 상호작용실제 사용자 시나리오 전체 흐름
상품 목록 미션에서의 예시상품 카드 렌더링, 버튼 클릭 테스트상품 목록 + 필터링 테스트사용자가 상품 탐색하고 장바구니 담기
실행 속도빠름중간느림
테스트 코드 작성 시간빠름중간느림
테스트 견고성높음중간낮음
신뢰성낮음중간높음
주요 테스트 라이브러리Jest, Vitest, RTL, StorybookRTL, MSW, Vitest, JestCypress, Playwright, MSW
보조 도구/역할Storybook (UI 확인용)MSW (API 목킹)MSW (백엔드 목킹), 테스트 서버 구성

마무리

프론트엔드 테스트는 단순히 "버그를 줄이기 위한 도구" 그 이상이다. 좋은 테스트 코드는 설계가 잘 되었다는 증거이고, 팀의 생산성과 안정성을 높이는 기반이다. 단위 → 통합 → E2E로 이어지는 계층적 테스트 전략을 잘 세우고, Storybook, RTL, Vitest, MSW, Cypress 같은 도구를 적절히 조합하면 훨씬 더 안정적이고 신뢰할 수 있는 프론트엔드 개발이 가능하다.

아래 블로그를 참고하면 매우 도움되니 시간될 때 꼭 읽어보길 바란다.

Posted inreact
Written byEunwoo