キーワード
» 2011年11月07日 00時00分 公開

情報システム用語事典:モックオブジェクト(もっくおぶじぇくと)

mock object

[@IT情報マネジメント編集部,@IT]

 自動化されたユニットテストにおいて、テスト対象オブジェクトが呼び出し先のオブジェクトと意図したとおりに協調動作するかどうかを検証するために、呼び出し相手に換えて使用するテスト用のオブジェクトのこと。

 オブジェクト指向に基づいて作られたソフトウェアは、オブジェクト同士が相互作用を持つ。また、ビジネスアプリケーションの場合、外部データベースやWebサービスへのアクセスを行うことも多い。このようなソフトウェアをテストするとき、依存関係にある相手が未実装だったり、テスト環境からは接続不可だったりすると、システムが実行できないため、テストも不可となる。

 こうしたとき、いかにも本来の連携相手であるかのように振る舞う仮のオブジェクトを使ってテストを行う方法がある。このときに使われる疑似的な仮実装を「モックオブジェクト」という。

 モックオブジェクトはテスト対象がコード内部で使用している呼び出し先と同じインターフェイスを持ち外からは正しく動くように見えるが、内部ロジックは実装されておらず引数の検証とテストに必要な最低限の出力のみを行う。モックオブジェクトが未実装のクラスの振る舞いをまねることで、それに依存するクラス(開発中のクラス)の振る舞いを検証することができる。

 モックオブジェクトはテスト駆動開発におけるテクニックとして提唱された。テスト駆動開発におけるテストの基本はメソッドの振る舞いを設計・検証することだが、詳細設計(構造)だけではなく外部設計(機能)も考慮すれば、オブジェクトの振る舞いも定義・評価する必要がある。

 モックオブジェクトを定義する作業は、実装中のオブジェクトが参照しているオブジェクトやメソッドの機能設計を行うことと事実上同義である。この設計はオブジェクトが相互にどのようなやり取りを行っているか、という観点で行われる。この点でモックオブジェクトは、機能や振る舞いを中心に概要設計を行い、内部設計や実装は時間を掛けてリファクタリングするというテスト駆動開発を補完するものである。

 今日、ほとんどの言語にモックオブジェクトのフレームワークがあり、広く利用されている。これらのフレームワークでは、エクスペクテーション(期待される呼び出され方と、そのときの挙動)を設定することでモックオブジェクトの振る舞いを定義し、テスト対象オブジェクトからの呼び出しを記録して、エクスペクテーションどおりに呼び出されているかを検証する機能を提供する。

参考文献

▼『Endo-Testing: Unit Testing with Mock Objects』 Tim Mackinnon、Steve Freeman、Philip Craig=著/2001年5月[PDFPDF

▼『JUnit イン・アクション』 ビンセント・マソル、テッド・ハスティード=著/クイープ=訳/ソフトバンクパブリッシング/2004年5月(『JUnit in Action』の邦訳)

▼『Webアプリケーションテスト手法――テストの基礎と主要開発環境における実践メソッド』 水野貴明、石井勇一、新藤愛大、岸田健一郎、荻野淳也、安井力、田中慎司=著/毎日コミュニケーションズ/2008年8月

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

Special

- PR -

ここで問題です。ある日、突然にネットワークが停止して大騒ぎ。無線LANアクセスポイントやスイッチに異常なし。次に確認すべき「ネットワークの重要サービス」とは?

まだ“現役”で動いているのに、サポート切れになってしまった! そんなハードウェアの延命もおまかせください――創業20年、老舗のMSPが始めたサービスが大人気?

2020年1月にWindows 7の延長サポートが終了します。Windows 10に順次移行する必要がありますが、そのためには準備が必要です。何をすればいいのか確認しましょう。

働き方の可視化、顔認証によるセキュリティ向上施策など、情シスが今押さえるべき最新ニュースを紹介

「パスワードが1個になったら危ない」「パスワードはたくさんあった方が安全だ」――。これ、完全に誤解なんです。その理由は……。

オンプレミスからのクラウド移行で失敗しないためには、「目的を見極めること」「変えないものは変えないこと」「戻れること」が大切。それが実現できるクラウドは?

Web上に公開されている数百億単位のデータを自動収集して解析――京都大学が取り組む日本の先端研究に耐え得るクラウド基盤に求められる4つのポイントを解説!

販売パートナーを大切にすることで、クラウドサービス市場でのプレゼンスを拡大する日本マイクロソフト。AWSやGCPとどう戦っていくのか、今後の展望に迫る

IFRS最新基準の強制適用まで残り1年半。「決算開示は3倍、仕訳パターンは4倍以上」という開示項目の増加に対応するために情シスがすべきことは。

手ぶらでもOK。セキュアな入退管理のほか、勤怠管理に、マーケティングに、さまざまなソリューションを組み合わせた顔認証の新たな活用方法をご紹介。

地味で工数がかかるうえ、少しのミスでコンプライアンス違反につながる「IT資産管理」。「それならいっそプロに任せよう」――東京スター銀行が選んだ相手とは?

Special

- PR -

数百億単位のデータを解析、京都大学の先端研究に耐え得るクラウド基盤の要件

日本MSが競合と戦っていくカギはパートナーにあり! これからの戦略とは

入退管理だけじゃない。勤怠管理に、マーケティングに、顔認証の今をご紹介。

2020年1月に延長サポートが終了。今からWindows 10移行を着実に進めよう。

面倒な「IT資産管理」をアウトソーシング。コストも減るし、リスクも減る!

「現代の魔法使い」と呼ばれる落合陽一氏の『超AI時代の生存戦略』とは

IFRS最新基準の強制適用まで残り1年半!情シスがすべきことは。

デンソー デジタルイノベーション室に聞いた、アジャイル開発チームの作り方

「HPE Gen10 サーバー プラットフォーム」の真の価値をじっくり解説

大きな騒ぎとなった「WannaCry」。「鉄壁の防御」が被害の原因に?

ランサムウェア対策、市場動向など、セキュリティに関する最新情報をチェック

パスワードが1個になるのはセキュリティ的に危ない? それ、間違ってますよ

働き方の可視化で生産性を向上!顔認証など最新技術のニュースをお届けします

メーカー以外の事業者が保守を行う「第三者保守」、そのメリットと品質とは

サポートが終了したハードウェアの“延命”もおまかせ。資産管理の“裏ワザ”

今あるシステムを「本当にそのまま」移行できるんです―それ、どういう意味?

IoTを推進するには、避けて通れないセキュリティ 支援してくれるのは……!?

オンプレ環境の移行で失敗しないためのポイント 実現できるクラウドは?

企業活動はネットワークの安定あればこそ。厄介なDNS/DHCPどうする?

何がスゴいの? 何に使える? エバンジェリストが分かりやすく解説します

アプリケーション単位のきめ細かな制御で、高度化するサイバー攻撃に対応!!

ピックアップコンテンツ

- PR -

注目のテーマ