목차

런던파

주요 특징

  • Mock 사용: Mock 객체로 외부 의존성을 대체하여 단위 테스트를 독립적으로 수행
    • 특정 객체나 메서드의 동작을 검증하기 위해, 의존성을 실제 구현 대신 Mock 객체로 대체하여 테스트
  • 행동 기반 테스트 (Behavior Verification): 객체가 올바른 메서드를 호출했는지, 호출된 횟수는 적절한지 등을 확인
  • 격리성: 테스트 대상 객체는 의존성과 완전히 격리
  • 단위 테스트에 집중: 특정 기능이나 메서드의 동작을 작게 쪼개어 검증

장점

  • 다른 모듈/시스템의 변경에 영향을 받지 않음
  • 특정 메서드 호출이나 내부 동작 검증에 적합

단점

  • Mock이 많아지면 테스트 코드가 복잡해지고, 유지보수가 어려워질 수 있음
  • 실제 시스템과의 상호작용을 놓칠 가능성 있음
  • Mock 객체에 의존하여 테스트가 비현실적

고전파

주요 특징

  • 상태 기반 테스트 (State Verification): 테스트 결과로 반환된 상태나 값을 검증.
  • 실제 구현 사용: 의존성에 Mock을 사용하는 대신, 가능한 실제 구현체나 시스템을 사용
  • 결과 중심: 행동(메서드 호출)이 아닌 결과 상태(출력, 반환값 등)를 검증
  • 통합 테스트 지향: 시스템 전체 흐름을 테스트하는 데 적합

장점

  • 실제 의존성을 사용하기 때문에 현실에 가까운 테스트를 수행가능
  • 시스템 전반의 통합 및 작동 여부를 확인하기에 적합

단점

  • 외부 시스템의 변경에 민감하며, 테스트의 안정성이 떨어질 수 있음
  • 특정 메서드 호출이나 내부 동작을 검증하기 어려움
  • 의존성 때문에 테스트 속도가 느려질 수 있음

 

런던파와 고전파의 비교

  런던파 고전파
핵심 특징 Mock을 사용하여 독립적이고 행동 중심의 테스트 수행 실제 의존성을 사용하여 상태 중심의 테스트 수행
검증 방식 메서드 호출, 행동 검증 상태와 출력검증
테스트 범위 작은 단위 (메서드 단위) 통합 또는 큰 단위
속도 빠름 ( 외부 시스템 미사용) 느림(외부 시스템 사용 시)
테스트 안정성 외부 변화에 둔감 외부 시스템 변경시 취약
유지 보수성 Mock 이 많아지면 복잡 간결하지만 외부 의존성 변경시 취약
적용 사례 단위 테스트, 서비스 내부 로직 테스트 통합 테스트, 시스템 흐흠 검증
적합한 경우 테스트 속도가 중요할 때
객체의 행동을 검증할 경우
외부 의존성이 복잡하거나 불안정한 경우
전체 시스템의 실제 동작과 통합을 검증할 경우
현실적인 테스트 환경을 유지하려는 경우
주요 관심사가 결과 상태와 출력 일때

 

현대적인 테스트 접근 방식에서는 두 방법론을 혼합하여 사용하는 경우가 많으며, 테스트의 목적과 환경에 따라 적절히 선택하는 것이 중요

'TDD > 개념' 카테고리의 다른 글

[ TDD ] [ Fixture ] Test Fixture?  (0) 2024.11.16

+ Recent posts