[swift] 테스트 더블(Test Double)

테스트 더블(Test Double)은 소프트웨어 테스트에서 실제 의존성을 대신하는 객체를 가리키는 말입니다. 테스트 더블은 실제 개체를 대신하여 테스트 중에 상호작용하는 가짜 구현이며, 코드를 격리시키고 테스트의 예측 가능성과 신뢰성을 향상시키기 위해 사용됩니다.

테스트 더블의 종류

테스트 더블에는 다양한 종류가 있습니다.

  1. 테스트 스텁(Test Stub): 메서드 호출에 대한 미리 정의된 답변을 제공하는 더미 객체입니다. 특정 입력 값에 대해 고정된 출력을 반환하여 호출된 메서드를 대체할 수 있습니다.

  2. 테스트 스파이(Test Spy): 호출된 방법에 대한 정보를 기록하는 객체입니다. 특정 메서드가 호출될 때마다 그에 대한 정보를 기록하여 후속 테스트에서 검증에 활용합니다.

  3. 테스트 모의(Mock): 특정 동작을 가정하는 대리 객체로, 예상되는 상호 작용을 검증하기 위해 사용됩니다. 특정 메서드가 호출될 것으로 예상되는 상황을 특정 지점에서 검증할 수 있습니다.

  4. 테스트 더미(Test Dummy): 인스턴스가 전달되지만 사용되지 않는 객체입니다. 특정 메서드 호출이 특정한 인수를 전달하는지 확인하는 데 사용됩니다.

  5. 테스트 더미(Test Double): 테스트 중에 사용되는 다른 모든 테스트 더블의 일반적인 용어입니다.

테스트 더블의 활용

테스트 더블은 통합 테스트를 격리하고 의존성을 줄이는 데 도움을 줍니다. 또한 외부 리소스에 대한 종속성을 제거하고 테스트 실행 속도를 향상시키며, 테스트 중에 발생할 수 있는 예측이 불가능한 상황을 제어할 수 있습니다.

테스트 더블은 모의 객체 프레임워크(Mocking Framework)를 사용하여 구현할 수도 있습니다.

테스트 더블을 사용하여 테스트를 보다 효과적으로 작성하고 유지 보수하는 것이 중요합니다.

참고 자료

  1. 마틴 파울러의 “Mocks Aren’t Stubs” 블로그 글
  2. xUnit Test Patterns: Refactoring Test Code