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 테스트보다는 설정과 유지 관리가 상대적으로 덜 복잡하며, 테스트 실행 시간이 짧음