통합 테스트

통합 테스트 (Integration Test)

여러 모듈(컴포넌트)끼리 연결되어있는 코드가 함께 잘 작동하는지를 검증하는 테스트 방식 사용자 관점에서 앱의 흐름과 UI가 의도한 대로 동작하는지 확인

  • API 요청 상태에 따라 로딩, 성공, 실패 등 각 상태별로 올바른 컴포넌트가 렌더링되는지

  • Form의 다양한 input 요소들이 의도대로 상호작용하는지 (ex: 입력, 선택, 비활성화 조건, 유효성 검사 등)

  • 사용자의 특정 액션(ex: 버튼 클릭, form 제출 등)에 따라 이후 기대 동작(UI 변경, 알림 노출, 라우팅 등)이 제대로 수행되는지

왜 통합테스트가 중요한가?

E2E 테스트의 한계

E2E 테스트는 프론트엔드와 백엔드 등 전체 시스템을 실제처럼 실행하여 실사용자 환경(브라우저)에서 테스트

  • 비교적 테스트 환경 구축이 복잡하고, 구현 및 유지보수에 비용이 많이 듬

  • 테스트 환경이 네트워크, API 서버 등 다양한 외부 요인에 의존 → 기능은 잘 작동하지만 테스트는 실패하는 경우 발생

  • 서비스 기능이 추가될수록 기존 E2E 테스트를 수정해야 하는 일이 잦아지며, 테스트 양도 함께 증가함

    • 점점 관리와 유지보수가 어려워지고 테스트 속도도 느려짐

단위 테스트의 한계

단위 테스트는 개별 함수나 컴포넌트 단위의 로직이 정상적으로 동작하는지를 빠르게 검증할 수 있는 테스트

  • 실제 앱은 여러 컴포넌트와 함수가 상호작용하며 동작하므로, 단위 테스트만으로 전체 기능이 잘 작동한다고 보장할 수 없음

  • 작은 단위에 집중 → 전체 흐름(UX, 상태 전이 등)을 커버하기 어려움

  • 사용자 관점의 흐름을 파악하기 어렵기 때문에 UI 버그나 통합 이슈를 놓칠 수 있음

통합 테스트 장점

단위 테스트보다 현실적인 흐름을 확인할 수 있고, E2E보다 비용이 적어 유지보수 효율이 높음

  • 핵심 기능 위주로 테스트하므로 테스트 범위를 전략적으로 좁힐 수 있음

  • 실제 UI 흐름을 따라가기 때문에 사용자 경험 중심의 문제를 잘 커버함

  • 모킹을 통해 외부 의존성을 커버하여 독립적으로 테스트 가능

  • 빠르고 상대적으로 신뢰성 높은 테스트를 통해 적은 비용으로도 안정성을 확보

Last updated