UI 테스트 = 엔드투엔드(e2e) 테스트라고 봐도 무방
단위 테스트 (Unit Tests):
- 가장 작은 범위의 테스트로, 일반적으로 단일 함수나 메서드를 검증한다
- 외부 의존성을 배제하고 매우 빠르게 실행되어야 하며, 개발자에게 즉각적인 피드백을 제공하는 것을 목표로 한다
- TDD(Test-Driven Design)를 통해 생성되는 테스트들이 여기에 해당한다
서비스 테스트 (Service Tests):
- 개별 마이크로서비스의 기능을 UI를 거치지 않고 직접 테스트한다.
- 테스트 대상 서비스 외의 외부 협력자(다른 마이크로서비스, 데이터베이스 등)는 스텁(Stub)이나 모의 객체(Mock)로 대체하여 해당 서비스만을 격리하여 테스트한다.
- 단위 테스트보다 범위가 넓지만, 엔드-투-엔드 테스트보다는 훨씬 적은 부분을 다루어 더 빠르고 안정적인 피드백을 제공한다.
엔드-투-엔드 테스트 (End-to-End Tests):
- 여러 서비스가 연동되어 사용자에게 제공되는 전체 시스템의 흐름을 검증합니다. 주로 GUI를 통해 실제 사용자 시나리오를 시뮬레이션한다.
- 가장 넓은 범위를 포괄하므로 테스트 통과 시 시스템 전체 기능에 대한 높은 신뢰도를 제공하지만, 실행 시간이 길고, 실패 지점 파악이 어려우며, 테스트 환경 구축이 복잡하고 깨지기 쉬운(brittle) 단점이 있다.
- 샘 뉴먼은 이 테스트의 수를 최소화하고, 핵심적인 사용자 여정(journeys)에 대해서만 수행할 것을 권장한다.
- 스텁 (Stub): 테스트 중에 호출되는 의존성의 실제 구현을 대체하는 간단한 가짜 구현이다. 미리 정해진 응답을 반환한다. (호출되었는지에 대한 여부는 관심 없음)
- 모의 객체 (Mock Object): 스텁과 유사하지만, 호출되었는지 여부와 호출 방식(메서드, 파라미터 등)에 대한 기대를 명시하고 이를 검증하는 데 사용된다.
'기타' 카테고리의 다른 글
CORS( Cross‑Origin Resource Sharing ) 간단 정리 (0) | 2025.05.07 |
---|---|
[MSA] 소비자 주도 계약 테스트(Consumer-Driven Contract Test, CDC) (0) | 2025.05.07 |
[MSA] 테스트 유형 (1) | 2025.05.07 |
[MSA] 시간적 결합 (0) | 2025.05.07 |
[MSA] 2페이즈 커밋(2PC) 쓰지 말자 (0) | 2025.05.05 |
댓글