본문 바로가기
기타

[MSA] 테스트 범위

by Nhahan 2025. 5. 7.

마이크 콘의 테스트 피라미드

 

 

UI 테스트 = 엔드투엔드(e2e) 테스트라고 봐도 무방

 

 

단위 테스트 (Unit Tests):

  • 가장 작은 범위의 테스트로, 일반적으로 단일 함수나 메서드를 검증한다
  • 외부 의존성을 배제하고 매우 빠르게 실행되어야 하며, 개발자에게 즉각적인 피드백을 제공하는 것을 목표로 한다
  • TDD(Test-Driven Design)를 통해 생성되는 테스트들이 여기에 해당한다

 

서비스 테스트 (Service Tests):

  • 개별 마이크로서비스의 기능을 UI를 거치지 않고 직접 테스트한다.
  • 테스트 대상 서비스 외의 외부 협력자(다른 마이크로서비스, 데이터베이스 등)는 스텁(Stub)이나 모의 객체(Mock)로 대체하여 해당 서비스만을 격리하여 테스트한다.
  • 단위 테스트보다 범위가 넓지만, 엔드-투-엔드 테스트보다는 훨씬 적은 부분을 다루어 더 빠르고 안정적인 피드백을 제공한다.

 

엔드-투-엔드 테스트 (End-to-End Tests):

  • 여러 서비스가 연동되어 사용자에게 제공되는 전체 시스템의 흐름을 검증합니다. 주로 GUI를 통해 실제 사용자 시나리오를 시뮬레이션한다.
  • 가장 넓은 범위를 포괄하므로 테스트 통과 시 시스템 전체 기능에 대한 높은 신뢰도를 제공하지만, 실행 시간이 길고, 실패 지점 파악이 어려우며, 테스트 환경 구축이 복잡하고 깨지기 쉬운(brittle) 단점이 있다.
  • 샘 뉴먼은 이 테스트의 수를 최소화하고, 핵심적인 사용자 여정(journeys)에 대해서만 수행할 것을 권장한다.

 


 

 

  • 스텁 (Stub): 테스트 중에 호출되는 의존성의 실제 구현을 대체하는 간단한 가짜 구현이다. 미리 정해진 응답을 반환한다. (호출되었는지에 대한 여부는 관심 없음)
  • 모의 객체 (Mock Object): 스텁과 유사하지만, 호출되었는지 여부와 호출 방식(메서드, 파라미터 등)에 대한 기대를 명시하고 이를 검증하는 데 사용된다.

 

댓글