1. 탄생 배경
기존의 단위 테스트(Unit Testing)와 통합 테스트(Integration Testing)가 가진 한계를 극복하기 위해 만들어졌습니다.
- 단위 테스트(Unit Testing) : 개별 함수나 클래스 등 작은 코드 단위를 테스트
- 한계점
- 시스템 전체의 흐름이나 상호작용을 확인하기 어려움
- 실제 사용자 시나리오를 반영하지 못함
- 한계점
- 통합 테스트(Integration Testing): 여러 모듈이나 컴포넌트를 통합한 테스트
- 한계점
- 전체 시스템 관점에서의 테스트 부족
- 외부 시스템과의 연동 문제를 발견하기 어려움
- 한계점
두 테스트의 주요 문제점
- 전체 시스템 흐름 검증 부족
- 사용자 관점 부재
- 시스템 간 의존성 문제 - 외부 시스템, API, 데이터베이스와의 연동에서 발생하는 의존성 문제
- 데이터 무결성 확인 어려움 - 시스템 전반에 걸친 데이터 흐름을 확인하기 어려움
- 복잡한 버그 미검출 - 여러 모듈과 컴포넌트의 상호 작용에서 발생하는 복잡한 버그
# 모듈(Module)
- 여러 개의 함수나 클래스를 모아 특정 기능을 수행하는 코드의 단위
(예시) 사용자 관리 모듈: 회원가입, 로그인, 비밀번호 변경 등과 관련된 기능들을 모아 놓은 것
# 컴포넌트(Component)
- 시스템에서 특정 기능이나 역할을 수행하는 독립적인 단위
- 독립적이고 재사용 가능한 단위로, 하나 이상의 모듈로 구성
(예시) 인증 컴포넌트 : 사용자의 신원을 확인하고, 인증된 사용자에게 접근 권한부여 (jwt 토큰 발급, 검증 등)
2. 사용하는 이유
- 전체 시스템 검증: E2E 테스트는 전체 애플리케이션의 기능을 검증하여 시스템이 통합적으로 잘 작동하는지를 확인
- 사용자 경험 반영: 실제 사용자 행동을 시뮬레이션 및 검증하여 시스템의 품질 보장
- 시스템 간 의존성 문제 해결 : 외부 시스템과의 연동에서 발생하는 문제를 효과적으로 테스트
- 데이터 무결성 확인 : 데이터가 시스템 전반에 걸쳐 올바르게 전달되고 처리되는지 검증.
- 복잡한 워크플로우 테스트: 단순한 기능 테스트로는 발견하기 어려운 복잡한 시나리오나 예외 상황을 테스트
즉, 프로덕션 환경에서 발생할 수 있는 문제를 미리 발견하여 배포 후의 리스크를 감소시키기 위해서다.
3. 장점과 단점
장점:
- 사용자 중심의 테스트: 실제 사용자의 행동을 기반으로 테스트하여 사용자 경험을 향상
- 높은 신뢰성: 전체 시스템의 기능을 검증하기 때문에 배포 전에 시스템의 안정성을 높일 수 있습니다.
- 문제 조기 발견: 통합된 환경에서의 문제점을 미리 발견하여 수정 비용을 줄입니다.
- 비즈니스 로직 검증 : 실제 시나리오를 테스트함으로써 비즈니스 로직이 의도한 대로 동작하는지 확인할 수 있습니다.
단점:
- 시간과 비용 소모: 테스트 범위가 넓어 실행 시간과 유지 보수 비용이 증가할 수 있습니다.
- 복잡성 증가: 다양한 시나리오를 커버하려면 테스트 스크립트가 복잡해질 수 있습니다.
- 테스트 불안정성: 작은 UI 변화나 환경 변화에도 테스트가 실패할 수 있어 민감하게 반응합니다.
- 테스트 유지보수 어려움 : 작은 변경에도 테스트 스크립트 수정이 필요할 수 있습니다.
4. 요약
E2E 테스트
- 기존 테스트 방식의 한계를 보완하여 전체 시스템 동작과 사용자 경험을 종합적으로 검증
도입 효과
- 더 나은 품질의 소프트웨어 개발 가능.
- 사용자에게 안정적이고 신뢰성 있는 서비스 제공.
E2E 테스트는 시스템 전체의 품질을 보장하기 위한 중요한 도구이지만, 효율적인 테스트 전략을 수립하여 단점을 최소화하는 것이 중요
'기술 이해하기' 카테고리의 다른 글
[ Docker ] Docker 이해하기: 탄생배경과 장단점 (2) | 2024.10.10 |
---|