study/소프트웨어 공학
테스트 코드: 단위 테스트, 통합 테스트, E2E 테스트
836586697769
2024. 6. 27. 18:24
좋은 디자인으로 구현된 코드는 대부분 테스트 하기가 쉽다.
단위 테스트 (Unit Test)
개별 함수나 메서드의 동작을 검증 (e.g. 재고 확인 함수, 주문 금액 계산 함수)
장점
- 테스트가 빠르게 실행되어 개발 중 자주 실행 가능
- 문제의 원인을 쉽게 파악 가능
단점
- 개별 구성 요소만 테스트하여 전체 시스템의 동작을 보장하지 않음
- 실제 데이터베이스나 네트워크와 같은 외부 의존성을 무시한 결과를 얻을 수 있음
통합 테스트 (Integration Test)
여러 모듈이 함께 작동할 때의 상호작용을 검증 (e.g. 주문 생성 및 저장, 결제 처리)
장점
- 개별 단위가 함께 작동할 때 발생하는 문제 발견 가능
- 데이터베이스, 파일 시스템 등 실제 환경과 유사한 조건에서 테스트 가능
단점
- 단위 테스트보다 시간이 더 오래 걸림
- 모듈 간의 상호작용에서 발생하는 문제를 추적하고 수정하기 어려움
- 데이터베이스 같은 외부 의존성 설정이 필요하므로 설정과 유지 관리가 복잡함
E2E 테스트 (End-to-End Test)
실제 사용자 시나리오를 통해 시스템 전체의 동작을 검증 (e.g. 전체 주문 프로세스)
장점
- 전체 시스템의 모든 부분이 함께 작동할 때의 동작을 확인할 수 있음 → 신뢰성 향상
- 실제 사용자 행동을 시뮬레이션하므로 사용자 경험을 향상시키는 데 도움됨
단점
- 실행 속도가 가장 느리고 테스트 시간이 긺
- 테스트 환경 설정과 유지 관리가 복잡함
- 시스템 전체의 흐름에서 발생하는 문제를 찾고 디버깅하는 데 시간이 많이 걸림
통합 테스트와 E2E 테스트의 차이점
- 통합 테스트는 시스템의 일부를 검증하고, E2E 테스트는 시스템의 시작부터 끝까지 전체 흐름을 테스트함
- 통합 테스트는 E2E 테스트보다는 설정과 유지 관리가 상대적으로 덜 복잡하며, 테스트 실행 시간이 짧음