- PR -

スタブとモックの違いについて

投稿者投稿内容
P駆け出し
会議室デビュー日: 2007/02/27
投稿数: 7
投稿日時: 2007-05-17 18:49
少し、Javaとは離れてしまいますが、どなたか御教授頂けたらなと思います。

只今、Junitを使用した単体テストについて勉強していますが、
どうしても、「スタブ」と「モック」についての違いがわかりません。
リンク先のページを参考にしてみたものの、
モックとスタブは使用するケースが違うというようなことが書かれていましたが、
理解するまでには至りませんでした。

どなたか、噛み砕いた形で説明して下さる方がいらっしゃいましたら、
御教授して頂けないでしょうか?

よろしくお願い致します。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-17 19:14
文脈によって意味がちょっと変わってくるかもしれませんが、私が受ける印象は

スタブ:Java では RMI でリモートのオブジェクトを表現するローカルのプロキシオブジェクトを指すことが多い。実際の処理はリモートの実体に委譲する。

モック:テストやコンパイル用に用意されたダミーのクラス。実際に処理は行わず、場合によっては呼び出しが行われたかどうか、どんな引数で呼び出されたかなどを記録している

実際に処理をしてくる人:スタブ、ただのハリボテ:モック、といったところでしょうか。
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2007-05-17 19:20
 見た目が同じなのがスタブ、動きが同じなのがモック、かな。
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2007-05-17 19:20
引用:

インギさんの書き込み (2007-05-17 19:14) より:
実際に処理をしてくる人:スタブ、ただのハリボテ:モック、といったところでしょうか。


 あれ、逆なのかな?
P駆け出し
会議室デビュー日: 2007/02/27
投稿数: 7
投稿日時: 2007-05-17 19:55
インギ様、lalupin4様、ご回答ありがとうございます。

引用:

実際に処理をしてくる人:スタブ、ただのハリボテ:モック、といったところでしょうか。



分かり易いご回答ありがとうございます。
検討が外れていましたら、ご指摘して頂きたいのですが、単体テストを行なう上で、
スタブは、あらかじめ決まったダミーのデータを返すなり、処理を行なうといったことをし、
モックは、テストケースによって返す値を設定しておいて、モックのメソッドが呼ばれたら設定されている値を返すというようなものと解釈しました。

朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-17 19:56
スタブ:http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%96


public int sum(int a, int b) { return a + b; }
が実際の動作だとしましょう。
同時進行でどうしても別のクラスのそのメソッドが必要になった場合、
実際に同一の処理を書くと時間の無駄です。
そのときに作成するプログラムの適当なオブジェクトをかえすのがスタブです。

public int sum (int a, int b) { return 5; } の用に書きます。

モックはなんだkっけか・・・・ 実際の意味は木型だったはずだけど・・




STUB(切り株)
sawat
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 112
投稿日時: 2007-05-18 09:13
これが参考になるかな?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?TestDouble
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-05-18 11:43
wikipediaでは

スタブ
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%96

モック
http://ja.wikipedia.org/wiki/%E6%9C%A8%E5%9E%8B

なんとなく、機能の代替品がスタブで、外見の代替品がモックなのかなぁ。
携帯電話の店頭デモ品とかはモックアップ(モック)というけどスタブとは言わない。
車などの工業製品のデザインの検討用の実物模型もモックアップですよね。

モックアップは製造業全般の用語で、スタブはソフト業界の用語のようです。

スキルアップ/キャリアアップ(JOB@IT)