Code

[단위 테스트] 2-2. 단위 테스트란 무엇인가: 런던파와 고전파

noahkim_ 2025. 1. 7. 11:40

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.

 

2. 런던파와 고전파

  • 격리 특성에 따라 나뉨

 

런던파

  • 작은 코드 조각 단위
  • 테스트 대상 시스템을 협력자에게서 완전히 격리
  • 모든 의존성을 Mock으로 대체
    • 코드 조각을 테스트 대역으로 분리 (단, 불변 비공개 의존성은 제외)

 

하향식 TDD
  • 전체 설계와 인프라부터 준비하고, 이를 기반으로 상위 레벨 테스트 및 하위 레벨 구현

 

장점
  • 입자성
    • 테스트 실패 시, 코드베이스의 어느 부분이 고장 났는지 명확히 알 수 있음
    • 의존성에서 문제가 발생하면 테스트가 실패함
    • SUT의 문제인지 직관적으로 확인할 수 없음
  • 객체 그래프를 분할할 수 있음
    • 객체 그래프를 재생성하지 않아도 됨
    • 서로 연결된 클래스의 그래프가 커져도 테스트 용이

 

단점
  • 과잉 명세
    • 과도한 명세로 인해 테스트가 SUT의 세부 사항에 의존하게 됨
  • 코드 단위
    • 동작 단위가 아니여서 초점이 잘못됨

 

고전파

  • 단일 동작 단위로 검증
  • 공유 의존성만 테스트 대역을 설정하여 격리하는 방법
    • 모든 의존성을 Mock으로 대체하지 않아도 됨

 

단일 동작 단위
  • 테스트는 시스템의 개별 동작이나 기능을 검증하는데 초점을 맞춰야 함

 

상향식 TDD
  • 작은 단위부터 테스트를 작성한 후, 하위레벨 구현부터 상위레벨을 통합하는 순서

 

장점
  • 현실적인 테스트 가능

 

단점
  • 문제 위치 추적 난이도 상승