Android/Test

Test Stub이란 ?

봄석 2019. 10. 28. 14:15

Test Stub이란 ?

stub에  대하여 알아보도록 하겠습니다

 

 

 

stub이란 ?

stub이란 토막,꽁초,남은부분,몽당연필.. 이라는 뜻으로

dummy객체가 마치 실제로 동작하는 것 처럼 보이도록 만들어놓은 것입니다.

 

https://en.wikipedia.org/wiki/Test_stub

 

Test stub - Wikipedia

In computer science, test stubs are programs that simulate the behaviours of software components (or modules) that a module undergoing tests depends on. “ Test stubs provide canned answers to calls made during the test, usually not responding at all to any

en.wikipedia.org

 


위키피디아 에서는 test  stub을 아래와 같이 정의합니다.


Test stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what’s programmed in for the test.

 스텁은 ‘canned answer’를 호출한 쪽에 제공(provide) 한다는 것입니다.

 

여기서 ‘canned answer’은 무엇일까요 ?

canned answer은 바로 "미리 준비된 답변은 일반적인 질문에 대한 미리 정해진 답변"이라는 뜻입니다.

 

즉 ,stub은 실제코드나 아직 준비되지 못한 코드를 미리 정해진 답변으로 가장하는 매커니즘입니다.

 

 

 

Stub 특징

  • dummy객체가 실제로 동작하는 것처럼 보이게 만들어 놓은 객체
  • 실제 코드나 아직 준비되지 못한 코드의 행동을 가장하는 행위
  • 호출자를 실제 구현물로 부터 격리시키는 목적으로 사용가능
  • 인터페이스 or 기본클래스가 최소한으로 구현된 상태
  • 테스트에서 호출된 요청에 대해 미리 준비해둔 결과를 제공합니다.

 

 

Stub이 주로 사용되는 경우

  • 구현이 되지않은 함수나, 라이브러리에서 제공하는 함수를 사용하고자 할때
  • 함수가 반환하는 값을 임의로 생성하고 싶을 때
  • 복잡한 논리 흐름을 가지는 경우, 테스트를 단순화 하고 싶을 때
  • 의존성을 가지는 유닛의 응답을 모사하여 독립적인 시험 수행을 하고자 할 때

 

 

 

Test Stub을 사용하여 얻을 수 있는 이점

  • 의존하는것에 대하여 독립적으로 개발/테스트가 가능합니다.
    • interface만 존재하는 것을 stub으로 개발하고 테스트 할 수 있습니다.
  • 촘촘한 테스트가 가능합니다.
    • stub으로 다양한 응답결과(canned anwser) 케이스를 만들어 테스트 할 수 있습니다.