[Testing] E2E 테스트

Bewell·2024년 3월 18일
0

테스팅

목록 보기
1/1

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

0개의 댓글