반응형
✅ **📌 테스트 더블 (Test Double)**란?
테스트를 쉽게 만들기 위해 실제 객체를 흉내 낸 가짜 객체들
영화에서 대역 배우(double) 쓰는 것처럼,
→ 테스트에서도 진짜 객체 대신 **“가짜 객체”**를 쓰는 거임.
🧩 테스트 더블의 5가지 유형
종류설명대표 특징
Dummy | 값 전달만 하고 사용되지 않음 | 쓰이진 않지만 인자 채우기용 |
Stub | 미리 정해진 값 반환 | 로직 없이 값만 반환 |
Mock | 메서드 호출 여부 등 행동 검증 | assert_called 등 사용 |
Spy | 진짜 객체를 감시, 일부만 가짜로 대체 | 실제 동작 + 호출 기록 |
Fake | 진짜처럼 동작하지만 단순한 구현체 | 예: 메모리 DB |
💡 정리하자면:
- 🔹 이것들은 테스트 자체가 아니라, 테스트를 "도와주는 역할자"
- 🔹 Mock, Stub, Spy → 전부 Test Double의 종류
✅ 📌 테스트 더블을 쓰는 이유
1️⃣ 외부 시스템 없이 테스트하려고
- DB, 네트워크, API 등 진짜 시스템은 느리고 불안정해
➡ **가짜 객체(Test Double)**로 대신해서 빠르고 안정적인 테스트 가능
2️⃣ 테스트를 더 “예측 가능하게” 만들기 위해
- 진짜 시스템은 응답이 다를 수도 있음
➡ Stub/Mock으로 고정된 결과를 리턴해서 결과 예측 가능
3️⃣ 아직 구현되지 않은 모듈도 테스트하기 위해
- 다른 팀의 기능이 아직 없을 수도 있음
➡ 대신 임시로 Fake나 Stub 만들어 먼저 개발 가능
4️⃣ 행동을 검증하고 싶을 때
- 함수가 몇 번 호출됐는지, 올바른 인자로 불렸는지 확인하려면
➡ Mock / Spy가 필수
💡 한 줄 요약
“외부에 의존하지 않고, 빠르고 정확하게, 내가 원하는 대로 테스트하려고 쓰는 도구!”
✅ 1. Stub (스텁)
미리 정해둔 값만 돌려주는 단순한 가짜 객체
- 입력 → 출력만 고정
- 내부 동작은 관심 없음
- 주로 데이터 반환용
📌 예시:

✅ 2. Mock (목 객체)
행동까지 검증 가능한 가짜 객체
- Stub 기능 포함 + 행동(호출 여부, 횟수) 검증
- 메서드가 정확히 몇 번 호출됐는지 확인 가능
- 테스트 실패 원인 파악에 유리

✅ 3. Spy (스파이)
진짜 객체를 감시 + 일부만 가짜로 바꿈
- 진짜 객체처럼 동작하면서, 호출 여부 확인 가능
- 실제 메서드를 호출하면서도 감시(Spy) 가능
- 부분 Mock 느낌
📌 예시 (Java / Mockito):

🆚 한눈에 비교
구분StubMockSpy
반환 값 설정 | ✅ | ✅ | ✅ |
호출 확인 | ❌ | ✅ | ✅ |
진짜 메서드 호출 | ❌ | ❌ | ✅ |
목적 | 값 고정 | 행동 검증 | 감시 + 부분 테스트 |
💡 요약 한줄:
Stub은 값만 줘, Mock은 행동도 확인해, Spy는 진짜처럼 감시함.
#테스트더블 #TestDouble #Mock #Stub #Spy #Dummy #Fake #단위테스트 #유닛테스트 #TDD #테스트자동화 #개발자팁 #소프트웨어테스트 #QA테스트 #행위기반테스트 #의존성제거 #테스트전략 #테스트코드 #파이썬테스트 #자바테스트
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
java 자바로 알고리즘을 만들 수 있을까 ? (0) | 2025.04.08 |
---|---|
깃발 변수(Flag Variable) (0) | 2025.04.08 |
테스트 더블(Test Double)-> 목 객체(Mock Object) (0) | 2025.04.08 |
단위 테스트 (0) | 2025.04.08 |
화이트박스 테스트 or 블랙박스 테스트 (0) | 2025.04.08 |