What is it, naokirin?

モックオブジェクトとスタブ

私はテスト駆動開発初心者なので、テスト駆動開発の用語として色々と知らない用語があります。

例えば少し前までまったく知らなかった「モックオブジェクト」という概念。


モックオブジェクトというのはスタブの一種だと考えられますが、少々ちがう意味を持っているようです。

スタブの場合、中身の動き(振る舞いそのものの変化、例えば呼び出し順序や回数)の変化は意識しません。つまり、言ってしまえば、本当のモジュールでは1回しか呼ばないモジュールを数百回呼び出したところで戻り値を見ているだけなので最終的にうまく動いているように戻り値を見せていれば関係ありません。

しかし、モックオブジェクトは振る舞いの変化に関しても検証します。もちろん"検証"するためなのでソフトウェアテスト時などで用いることで初めて真価を発揮します。

モックオブジェクトはもちろんですが、使わなくていいのであれば使わない方が効率的です。
ただし、どうしても先に作ることのできないモジュール、また開発時にテストできないモジュールはモックオブジェクトにすると良いようです。
たとえば、従量課金制のシステムなどは、何度もテストをするテスト駆動開発では開発終了したころには大変なことになってしまいます。また外部の使用だけ分かっている公開前のモジュール、事情(金銭的など)によりテスト環境で使うことのできない環境などでもモックオブジェクトを代用のモジュールとして使うことができます。


スタブと違い、振る舞いもテストできるのがモックオブジェクトの強みです。モックオブジェクトを使う際の補助ツールとしてのフレームワークも存在するようなので、そういったものも活用しつつテスト駆動開発を進めていきたいですね。

もちろん、初心者である私にも言えることです。頑張れ私。