[TDD] 테스트 대역

so_doit·2022년 3월 7일
0

TIL

목록 보기
16/26

단위 테스트를 할 때 운영 코드를 대신하는 코드 대역을 사용하기도 한다. 이런 대역 코드를 테스트 대역이라고 부른다. 오늘은 테스트 대역이 사용되는 이유와 목적에 따른 테스트 대역 종류에 대해 강의를 통해 알아보자.

대역과 가정

  • DOC(depended-on component, 의존 구성 요소) 준비 비용이 큰 경우
    • 구동에 많은 자원이 필요하다.
    • 환경 제어가 어렵다.
  • DOC가 SUT(System under Test)에 제공하는 계약(인터페이스)을 준수하는 대역 코드를 사용한다.
  • 대역 코드가 계약을 DOC와 동일하게 준수할 것이라고 가정(assume)한다.

-> 운영 코드 대신 사용되는 대역이 운영 코드와 같은 인터페이스를 제공한다고 생각해야 한다. 운영서버, 운영DB가 아닌 대역이라도 최대한 운영 환경과 동일해야 한다.

Dummy

  • 테스트 대역 중에서 가장 단순한 형태이다.
  • SUT 준비를 위해 해결이 되어야 하는 의존성인데, 어떤 특정 테스트 시나리오에서는 실제로 사용되지 않는 경우에 만들어지는 대역이다.
  • SUT가 의존하고 있는 Dependency 추상화를 구현하되 실제론 쓰이진 않기 때문에 아무 동작을 하지 않아도 상관없다.

Stub

  • 간접 입력을 제공해주는 의존성의 대역이다.
  • 미리 준비된 답을 출력한다.
    즉 미리 정해둔 값을 이용해서 의존의 일부분을 작동하는 것처럼 꾸민다는 말이다.

Spy

  • 간접 출력을 제공해주는 의존성의 대역이다.
  • SUT의 간접 출력을 기록한다.

Mock

  • SUT 내부의 행위(상호작용) 검증한다.
  • 강의에서는 Test Double과 동일한 의미로 Mock을 사용하기도 한다.

Fake

  • 의존성 계약을 준수하는 가변운 구현체이다.
  • DOC보다 적은 부작용을 가지고 있다.
  • 인메모리 데이터베이스 등이 있다.

회고

단위 테스트가 어려울 때, 테스트 대역은 굉장히 좋은 도구인 것 같이 느껴졌다. 하지만 테스트 대역도 적절히 사용해야지만 이득을 얻을 수 있으니 주의를 해야겠다.

profile
백엔드 개발자

0개의 댓글