반응형
1️⃣ 테스트 피라미드란 무엇인가?
테스트 피라미드는
테스트의 종류를 계층화하여 비율과 역할을 구분한 개념.
- 단위 테스트는 많고 빠르게,
- 통합 테스트는 적절히
- E2E 테스트는 최소한으로 유지
이렇게 밸런스를 맞추는 것이 테스트 피라미드의 핵심.
2️⃣ 구글의 테스트 피라미드
구글은 테스트를 크기 기준으로 구분함.
| 구분 | 이름 | 의미 |
| Small Test (소형 테스트) | 단일 클래스, 함수 단위 테스트 | 빠름, 결정적, 외부 의존 X |
| Medium Test (중형 테스트) | 여러 컴포넌트 간 연동 테스트 | DB, 네트워크 등 일부 의존 |
| Large Test (대형 테스트) | 시스템 전체 통합 테스트 | 느림, 환경 의존, 복잡함 |
3️⃣ 테스트를 구분하는 두 가지 핵심 기준
① 테스트가 결정적인가? (Deterministic)
테스트는 언제 실행해도 결과가 같아야 함.
랜덤 값, 현재 시간, 외부 API 등은 테스트를 불안정하게 만듦.
✅ 좋은 예시
@Test
void add_shouldReturnSum() {
assertEquals(5, calculator.add(2, 3));
}
❌ 나쁜 예시
@Test
void add_shouldReturnSum() {
assertEquals(LocalDate.now().getDayOfMonth(), calculator.add(2, 3)); // ❌ 매일 달라짐
}
② 테스트가 빠른가? (Fast)
좋은 테스트는 개발 주기에 통합될 만큼 빠름.
즉, 코드를 저장하고 → 테스트 돌리고 → 바로 결과 확인할 수 있어야 함.
| 테스트 종류 | 실행 속도 | 권장 비율 |
| Small | 0.01~0.1초 | 70~80% |
| Medium | 1~10초 | 15~20% |
| Large | 수십 초~분 | 5% 이하 |
4️⃣ 소형 테스트(Small Test)의 중요성
소형 테스트는 단일 함수, 단일 객체 단위로 동작을 검증함.
즉, 외부 시스템에 의존하지 않아야 함.
✅ 특징
- DB, 네트워크, 파일 I/O 없음
- 빠르고 안정적
- 로직 변경 시 바로 피드백 가능
⚠️ 실수
- “Mocking을 안 해서 DB까지 연결” → 이미 Medium Test
- “외부 설정 파일을 읽음” → 환경 의존성 발생
반응형
'Java & Spring Boot' 카테고리의 다른 글
| 🧩 도메인 vs 도메인 서비스 vs 애플리케이션 서비스 (0) | 2025.12.02 |
|---|---|
| 🔄 순환 참조, 왜 생기고 어떻게 끊어야 할까 (0) | 2025.11.28 |
| 🧩 이펙티브 자바 item 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라 (0) | 2025.10.24 |
| ⚙️ 이펙티브 자바 item 48. 스트림 병렬화는 주의해서 사용하라 (0) | 2025.10.22 |
| 🧩 이펙티브 자바 item 41. 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라 (0) | 2025.10.21 |