본문 바로가기

컴퓨터과학/용어사전

스텁(Stub)

728x90
반응형
테스트에 필요한 간접 입력 값을 제공하기 위해 스텁(stub)을 추가하거나 간접 출력 값을 검증하기 위해 목 객체(mock object)를 사용하는 것은 객체와 협력해야 하는 협력자에 관해 고민한 결과를 코드로 표현한 것이다. 

 

"객체지향의 사실과 오해"를 읽다가 마주친 문장으로 4장 p.137 테스트-주도 개발에 대한 설명 중 나온 문장입니다. 테스트 코드 관련 경험과 개념이 부족하여 스텁이 테스트에 필요한 간접 입력 값을 제공하기 위한 것이구나라고 넘어갈 수 있었겠지만 예전에도 테스트 코드 작성과 관련하여 찾아볼 때 스쳐 지났던 개념인 것 같아 정리를 해보기로 했습니다. 

 

stub의 언어적 의미는 다음과 같습니다.

1. (쓰다 남은 물건의) 토막, (담배) 꽁초; 몽당연필

2. (표수표 등에서 한쪽을 떼어 주고) 남은 부분

a short part left after a larger part has been broken off or used up, 즉 전체에서 남은 일부분, 토막 정도로 생각할 수 있습니다. 

 

메서드 스텁(method stub) 혹은 간단히 스텁(stub)은 기존 코드를 흉내 내거나 아직 개발되지 않은 코드를 임시로 대치하여 다른 프로그래밍 기능을 대리하는 코드를 말합니다. 따라서 스텁은 일반 소프트웨어 개발과 테스팅에 사용이 되는데 테스팅에 사용되는 스텁을 테스트 스텁(test stub)이라고 부릅니다. 

 

테스트 스텁(test stub)은 테스트를 받는 모듈이 의존하는 소프트웨어 구성 요소의 동작을 시뮬레이션하는 프로그램입니다. 테스트 스텁은 테스트 중에 발생한 호출에 대한 사전에 정의된 이상적인 경우를 나타내는 응답을 제공하며, 일반적으로 테스트를 위해 프로그래밍된 항목 이외의 항목에는 전혀 응답하지 않습니다. 스텁은 호출된 모듈을 임시로 대체하는 역할을 하며 실제 제품 또는 소프트웨어와 동일한 출력을 제공하는 컴퓨터 프로그램입니다.

 

스텁은 주요 모듈을 테스트할 준비가 되어 있지만 하위 모듈은 아직 준비가 되지 않은 하향(top-down) 테스트 접근 방식에 사용됩니다. 따라서 간단하게 표현하면 스텁은 주요 모듈의 기능을 테스트하기 위해 호출되는 프로그램이라고 할 수 있습니다. 

 

만약, 로그인 기능의 Login() 모듈과 로그인 후에 메인 페이지를 로드하는 Home() 모듈, 그리고 로그인 후에 메인페이지에서 사용자 정보를 로드하는 User() 모듈의 3가지 모듈이 있다고 생각해 보겠습니다. 

 

Login() 모듈은 테스트할 준비가 되었지만 Login() 모듈로 인해 호출되는 Home()과 User()는 아직 테스트할 준비가 되어있지 않다면, Login() 모듈을 테스트하기 위해 호출된 모듈인 Home()과 User()를 실행시키는 더미 코드들이 작성될 것이고 이 더미 코드를 스텁(stub)이라고 합니다. 

 

Login()
    // Login logic
    Home()
    
Home()
    User()

User()
    // Load user profile dummy code
    name = James
    age = 26
    return User(name, age)

 

실제로 User() 모듈에서는 Login() 모듈을 실행할 때의 입력 값을 바탕으로 데이터베이스를 조회하여 갖고 온 사용자 정보를 로드해야겠지만, 임의 사용자를 가정하여 이상적인 경우로 시뮬레이션을 하여 Login() 모듈을 테스트하는 데 사용되는 더미 코드, 즉 스텁으로 사용한 것입니다.

 

https://ko.wikipedia.org/wiki/%EB%A9%94%EC%86%8C%EB%93%9C_%EC%8A%A4%ED%85%81

 

메소드 스텁 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 메소드 스텁(method stub) 혹은 간단히 스텁은 소프트웨어 개발에 쓰이고 다른 프로그래밍 기능을 대리하는 코드이다. 스텁은 기존 코드(예를 들어 원격 머신의 프

ko.wikipedia.org

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

 

Test stub - Wikipedia

From Wikipedia, the free encyclopedia In advanced polymorphism 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

en.wikipedia.org

 

728x90
반응형