テストダブル

テストダブル (Test Double) とは、ソフトウェアテストにおいて、テスト対象が依存しているコンポーネントを置き換える代用品のこと。ダブルは代役、影武者を意味する。

テストを実行するには、被試験システムに加えて、テスト対象が依存するコンポーネント (DOC; Depend-On Component) が必要になる。しかし、依存コンポーネントは、常に利用できるとは限らない。依存コンポーネントがテスト環境で利用できない理由には、次のようなものが挙げられる[1]

  • 入手できない。
  • テストで使いたい結果を返さない。
  • 実行に時間がかかるなどの、望ましくない副作用がある。

こういった問題を回避するには、依存コンポーネントを、テスト用のコンポーネントと入れ替えるテクニックが利用できる。この代用のコンポーネントを、テストダブルと呼ぶ。

テストダブルのパターン

ジェラルド・メサローシュは、テストダブルのパターンとして、次の5つを挙げている[1][2]

  • テストスタブ (テスト対象に「間接的な入力」を提供するために使う。)
  • テストスパイ (テスト対象からの「間接的な出力」を検証するために使う。出力を記録しておくことで、テストコードの実行後に、値を取り出して検証できる。)
  • モックオブジェクト (テスト対象からの「間接的な出力」を検証するために使う。テストコードの実行前に、あらかじめ期待する結果を設定しておく。検証はオブジェクト内部で行われる。)
  • フェイクオブジェクト (実際のオブジェクトに近い働きをするが、より単純な実装を使う。例として、実際のデータベースを置き換えるインメモリデータベースが挙げられる。)
  • ダミーオブジェクト (テスト対象のメソッドがパラメータを必要としているが、そのパラメータが利用されない場合に渡すオブジェクト。)

モックオブジェクトやテストスパイは、テストスタブの機能を含む。

テストダブルにオープン標準は存在しないが、これらの用語を一貫して使用する機運がある。マーティン・ファウラーは、メサローシュの本に言及した「Mocks Aren't Stubs[3]」という記事で、これらの用語を使っている。また、マイクロソフトは「Exploring The Continuum Of Test Doubles[4]」と題する記事で、これらの用語と定義を使っている。

脚注

  1. Meszaros, Gerard. Test Double”. 2012年8月19日閲覧。
  2. Meszaros, Gerard (2007). xUnit Test Patterns: Refactoring Test Code. Addison-Wesley. ISBN 978-0-13-149505-0
  3. Fowler, Martin (2007年). Mocks Aren't Stubs”. 2012年8月19日閲覧。
  4. Seemann, Mark (2007年). Exploring The Continuum Of Test Doubles”. 2012年8月19日閲覧。

関連項目

外部リンク

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.