X
STEN 회원이 되시면 테스팅에 관한 많은 정보와 자료를 공유할 수 있도록 저희가 돕겠습니다.
아이디
패스워드
자동로그인 사용
 
아직 회원이 아니십니까?    
아이디/패스워드를 잊으셨습니까?    

     
   
Stub과 Driver의 차이점이 뭔가요?
글쓴이 : 블랙진 날짜 : 08-10-15 09:17 조회 : 11412
Stub과 Driver의 차이점이 뭔가요?

두 개의 정의를 읽어봐도 이해가 잘 되지 않아서요.

실제 구별될 수 있는 사용 예가 있는가요?
잘 아시는 분의 조언을 부탁드립니다.

To test a fuction, the programmer has to write a ____, which calls the function and passes it test data.
Driver 가 맞다고 하는데 Stub이 아닌 이유는 ??

문제를 위해서 공부한다기 보다 이해를 하고 싶어서 많은 분들께 문의드립니다 ^^
[이 게시물은 스텐님에 의해 2009-11-25 10:35:42 자유게시판에서 이동 됨]

seopro97 08-10-15 10:49
간략하게 Server / Client의 예로 본다면, 내가 Server를 만들어놓고 이것을 시험하기 위해서 Client를가상으로 만들어서 Test 한다면 바로 Client에 해당하는 것이 Stub입니다. 반대로 내가 Client를 만든상태에서 Server가 없어서 Server를 가상으로 만들어서 Test 한다면 Server에 해당하는 것이 바로 Driver겠죠. Top Down이냐, Bottom Up에 따라 구분도 할 수 있습니다. 쉽게 생각하면 됩니다. ^^
Cats 08-10-15 11:51
약간 거짓말이 섞여있는지 모르지만 일단 언어적 측면에서 상상해 보면요..^^
driver 는 운전하는 드라이버를 생각해 보세요.. 무언가를 이끌고 나가는 거죠..
stub 은 담배꽁초나, 티켓의 나머지 같은 부분을 말해요..

이미지 적으로 driver 는 무언가를 끌고가는데 그게 바로 테스트 하려는 기능이고, Stub 은 어딘가에 매달려 있는데, 그것도 역시 테스트 하려는 기능이예요.
일단 요건 두개가 의미상으로 혼동되는걸 방지하기 위한 개념으로 받아들이고요.


다음엔 실제 상황에서 두개의 역활에 대한 상상을 해보면요.
DVD 플레이어의 컨트롤러를 만들었는데, 아직 실제 버튼이 있는 앞 판넬 쪽이 만들어 지지 않고, 반대로 실제 DVD 를 돌리는 장치 부분에 대한 부분도 완성이 안된 상태라고 가정해 봐요.

버튼이 눌리면, 컨트롤러에서 해당 기능에 대한 로직이 수행되는거는 거를 테스트 하고 싶은데, 버튼이 아직 없으니까, 가상의 버튼이 눌려진 거 처럼 흉내내는 프로그램을 만들면 그게 driver 가 되요. 앞의 이미지와 같이 테스트 하려는 기능을 가짜로 이끌져.

반대로 컨트롤러에서 DVD 장치를 실제로 돌리게 하는 코드를 테스트 해보고 싶은데.. 실제 장치가 없잖아요.. 그 장치인척 속여서, 해당 명령을 받고, 성공했다거나 실패했다고 리턴값을 주는 프로그램을 만든다면 stub 이 되요. 역시 내 기능에 매달려 있죠?

현실의 프로그램을 생각해보면, 가상 CD 있죠? 그게 시스템의 요구에 대해 물리 장치를 흉내내니 stub 이랑 비슷하다 생각해도 되겠네요, 실행되는 게임 입장에서는 그게 driver 일테구요.. 원래 씨디가 없음 안되는데, 씨디 흉내를 내주니... 물론 실제상으로는 게임이 호출 하는 걸테니, stub 이라 생각할수도 있겠네요. 가상 OS 도 실행되는 프로그램 입장에선, driver 라구 우김 될듯하고. stub, driver는 기준에 따라서 서로 상대적으로 바뀔수도 있는거 같아요. 어쩔땐 서로 driver 인 동시에 stub 이 될수도 있고요... 앞의 가상 CD 같이...

보통 이건 완전한 전체 모듈이 완성되기 전에 테스트를 하기 위해서 많이 쓰는 기법이라네요. 손놓고 있을순 없으니... 완전한 모델에서도 스콥을 축소한 유닛테스트나, 전체 환경을 구성해서 기본 테스트 불가능한 영역 같은데선 많이 쓰일것 같구요.

아래 참고하시고 구글에서 'driver stub' 으로 검색하심 여러 측면에서 설명해 주는 글 많네요..
http://galileo.cs.uwindsor.ca:8000/60-322/extra/drivers_stubs.htm
     
최피디 09-01-06 21:37
스텁, 드라이브에 대한 최고의 설명이 아닐까 생각해봅니다. Cats님은 가르치는 능력이 있으시네요.
          
Cats 09-07-09 10:08
늦게나마 분에 넘치는 말씀 감사드려요..~
곰미남 08-10-15 12:37
Stub과 Driver에 대해선 seopro97님과, Cats님이 상세하게 설명해주신 것 같습니다.

[문제]
To test a fuction, //기능을 테스트하기 위해
the programmer has to write a ____,//프로그래머는 ??? 작성한다
which calls the function and passes it test data. //기능을 부르고, 테스트 데이터를 통과시키는(?)

Driver는 상위모듈 , Stub은 하위모듈이라 봤을때 문제에 해당하는 답은 Driver가 아니겠는지요.

[Driver]  [Stub]
  @        ㅁ
┌  |  ┐  ┌  |  ┐
ㅁㅁ ㅁ @ @ @  (....죄송 허접한 그림... @가 각각 Driver와 Stub이라 생각하는 1명이...)
Cats 08-10-15 13:18
driver 를 끌고 가는 개념도 괜찮지만 -> control 하는 개념으로 생각하면, 프린터 드라이브랑도 매칭이 되고 조금 더 의미가 명확하게 되겠네요.. 테스트 대상을 컨트롤 or 동작하게 하는 하는 개체로.... 무언가를 끌고 어딘가로 가는건 컨트롤 하는거도 되니까 ^^
블랙진 08-10-16 10:08
답변주신분들께 감사드립니다. 개념을 이해하는데 많은 도움이 되었습니다.

공부해서 지식을 익히고 경험을 항상 공유하고 이해하기 쉽게 가르치려 하시는 분들은

항상 앞서나가시는 분들이라 생각합니다.

하시는 분야에 최고가 되시길 바랍니다. 좋은 하루 되세요 ^^v