목차
런던파
주요 특징
- Mock 사용: Mock 객체로 외부 의존성을 대체하여 단위 테스트를 독립적으로 수행
- 특정 객체나 메서드의 동작을 검증하기 위해, 의존성을 실제 구현 대신 Mock 객체로 대체하여 테스트
- 행동 기반 테스트 (Behavior Verification): 객체가 올바른 메서드를 호출했는지, 호출된 횟수는 적절한지 등을 확인
- 격리성: 테스트 대상 객체는 의존성과 완전히 격리
- 단위 테스트에 집중: 특정 기능이나 메서드의 동작을 작게 쪼개어 검증
장점
- 다른 모듈/시스템의 변경에 영향을 받지 않음
- 특정 메서드 호출이나 내부 동작 검증에 적합
단점
- Mock이 많아지면 테스트 코드가 복잡해지고, 유지보수가 어려워질 수 있음
- 실제 시스템과의 상호작용을 놓칠 가능성 있음
- Mock 객체에 의존하여 테스트가 비현실적
고전파
주요 특징
- 상태 기반 테스트 (State Verification): 테스트 결과로 반환된 상태나 값을 검증.
- 실제 구현 사용: 의존성에 Mock을 사용하는 대신, 가능한 실제 구현체나 시스템을 사용
- 결과 중심: 행동(메서드 호출)이 아닌 결과 상태(출력, 반환값 등)를 검증
- 통합 테스트 지향: 시스템 전체 흐름을 테스트하는 데 적합
장점
- 실제 의존성을 사용하기 때문에 현실에 가까운 테스트를 수행가능
- 시스템 전반의 통합 및 작동 여부를 확인하기에 적합
단점
- 외부 시스템의 변경에 민감하며, 테스트의 안정성이 떨어질 수 있음
- 특정 메서드 호출이나 내부 동작을 검증하기 어려움
- 의존성 때문에 테스트 속도가 느려질 수 있음
런던파와 고전파의 비교
런던파 | 고전파 | |
핵심 특징 | Mock을 사용하여 독립적이고 행동 중심의 테스트 수행 | 실제 의존성을 사용하여 상태 중심의 테스트 수행 |
검증 방식 | 메서드 호출, 행동 검증 | 상태와 출력검증 |
테스트 범위 | 작은 단위 (메서드 단위) | 통합 또는 큰 단위 |
속도 | 빠름 ( 외부 시스템 미사용) | 느림(외부 시스템 사용 시) |
테스트 안정성 | 외부 변화에 둔감 | 외부 시스템 변경시 취약 |
유지 보수성 | Mock 이 많아지면 복잡 | 간결하지만 외부 의존성 변경시 취약 |
적용 사례 | 단위 테스트, 서비스 내부 로직 테스트 | 통합 테스트, 시스템 흐흠 검증 |
적합한 경우 | 테스트 속도가 중요할 때 객체의 행동을 검증할 경우 외부 의존성이 복잡하거나 불안정한 경우 |
전체 시스템의 실제 동작과 통합을 검증할 경우 현실적인 테스트 환경을 유지하려는 경우 주요 관심사가 결과 상태와 출력 일때 |
현대적인 테스트 접근 방식에서는 두 방법론을 혼합하여 사용하는 경우가 많으며, 테스트의 목적과 환경에 따라 적절히 선택하는 것이 중요
'TDD > 개념' 카테고리의 다른 글
[ TDD ] [ Fixture ] Test Fixture? (0) | 2024.11.16 |
---|