E2E 테스트란?
- End To End 테스트의 약자로 어플리케이션의 처음부터 끝까지 테스트하는 것을 의미
유닛/통합 테스트
는 모듈의 무결성
을 증명할 수 있지만, 어플리케이션의 무결성
을 증명할 수 는 없다
- E2E테스트를 통해 애플리케이션의 무결성을 증명할 수 있다
- 위 이미지와 같이 E2E테스트는
느리고, 값 비싼
과정이다
- 그래서 꼭 필요한 테스트만 수행하는것 이 좋다
E2E 테스트 장단점
장점
- 사용자경험 중시
- E2E테스트는 실제 사용자의 행동과 상호작용을 모방함으로써 사용자 경험에 중점을 둔다.
- 통합 오류 발견
- 여러 컴포넌트와 시스템이 통합될 때 발생할 수 있는 문제, 단위 테스트나 통합 테스트로는 파악하기 어려운 이슈들을 E2E 테스트를 통해 식별 할 수 있다
- 자동화 가능
- E2E테스트를 자동화하여 반복, 시간절약, 오류 가능성을 낮출 수 있다
- 실제 환경에서의 테스트
- 실제 운영 환경과 유사한 조건에서 어플리케이션을 테스트할 수 있어, 배포 전에 문제를 사전 발견 수정할 수 있다
단점
- 시간과 리소스 소모
- 복잡한 시나리오의 테스트 작성은 상당한 시간과 리소스가 소요된다
- 유지관리의 어려움
- UI기능이 변경될 때마다 E2E 테스트 스크립트로 업데이트가 필요하여, 유지관리의 부담을 증가시킨다
- 가끔의 비정확성
- 네트워크 지연, 타이밍 문제 등 외부 요인으로 테스트 결과가 비정확하게 나올 수 있어, 테스트의 신뢰성을 저하시킬 수 있다
- 디버깅 어려움
- 실패한 테스트의 문제를 해결하기 위해 여러 레이어에 걸처 분석해야할 수 있다
- 코드관리의 어려움
- 가뜩이나 유닛 테스트나 통합 테스트 같은 가벼운 테스트들도 관리하기 어려운데, 사용자의 동장을 테스트하는 E2E테스트를 수정하는 일은 상당히 어려운 일
- husky나 github action 등에 연결해서 E2E테스트를 통과한 경우에만 코드를 병합한다면, 개발자는 어쩔 수 없이 테스트를 수정하게 된다.
- 제대로된 E2E테스트를 원한다면 꾸준한 관리를 할 수 있는 방법을 준비해야 한다
E2E 테스트 도입
기획서 기반의 시나리오 작성
- E2E 테스트 시나리오 작성은 기획서에 정의된 동작을 옮겨 작성
- 기획서가 수정되는 시점에 테스트 시나리오를 최신화
- 이를 통해
테스트 코드 관리의 어려움
문제를 해결
Mock 데이터의 사용 지양
- 테스트의 모든 과정이 실제 환경과 동일해야 하기 때문에, Mock데이터 사용을 지양
- 이를 통해 E2E 테스트에 대한 신뢰성을 보장
Pre-Push 단계에서 E2E 검증(github action)
- 테스트코드 실패한 코드의 병합을 막기 위해 huskey pre-push단계에서 E2E 테스트를 통과한 코드만 push 되도록 작업
git hook?
- Git과 관련한 어떤 이벤트가 발생했을 때 특정 스크립트를 실행할 수 있도록 하는 기능
husky?
- git hook를 보다 쉽게 적용할 수 있는 npm 모듈
병렬 테스트
- E2E 테스트의 속도를 보완하기 위해 병렬 테스트는 필수적
- Sorry-Cypress를 쓰거나, 병렬 테스트를 기본적으로 제공하는 Playwright.js 사용
참고자료_1
참고자료_2