InfoQ

News

WebサービスのMock

作者 Boris Lublinsky, 翻訳者 編集部 投稿日 2008年5月16日 午前12時56分

コミュニティ
SOA,
Architecture
トピック
Webサービス
タグ
Best Practices,
テスト,
Apache Synapse,
developerWorks,
Mocks

Webサービスのテストアプローチについては、以前InfoQで取り扱った(参考記事)。それらはWeb ServicesのMockを使用することで、最近拡張された。

Mockオブジェクトは、ユニットテストには非常にポピュラーで一般的なアプローチである。Wikipediaによると、以下のとおりである。

Mockオブジェクトは、 制御された方法でRealオブジェクトの振る舞いを模倣するシミュレートされたオブジェクトである。…Mockオブジェクトは複雑で、Real(Mock ではない)オブジェクトの振る舞いをシミュレートすることができ、それゆえに、Realオブジェクトをユニットテストに統合するのが困難であったり、不可 能であったりする場合に便利である。以下のいずれかの特徴にオブジェクトが当てはまる場合、Mockオブジェクトを使用すると便利である。

  • 非決定性結果(例:現在の時刻や気温)
  • 作成や再現が困難な状態がある(例:ネットワークエラー)
  • 遅い(例:完全なデータベースであるがゆえ、テスト前に開始する必要がある)
  • 未だなかったり、振る舞いが変わる場合
  • (実際のタスク目的ではなく)専らテスト目的の情報やメソッドを含む必要がある場合

Webサービスは、その他にMockアプローチを使えば非常に便利な状況を導入している。

  • 1つ以上のリモートWebサービスに依存するプログラムを記述することが必要である。そのリモートWebサービスはプロダクションサーバで実行可能であ り、テストサーバやカスタマーのファイアウォールの裏で実行されているサードパーティーサービスでは容易に利用できず、テストにも利用できない。
  • たとえば自宅や出先でのオフライン開発は、実装をテストできるように、オフラインで完全なワーキングWebサービスが必要になる場合がある。
  • リモートWebサービスが利用できず、つねに実行していない時のオフラインデモ。上記のすべての状況において、デモが適切に振る舞うようにすることが必要である。

開発およびテストでWebサービスを真似するためには、どのようにApache Synapseを使用するべきかは、Upul Godage氏による新たなチュートリアル(source)を見れば分かる。Apache Synapseは、単純で軽量、高性能なエンタープライズサービスバス(ESB)である。Apache Synapseを使用して、SOAP、バイナリ、XMLおよびHTTP、 HTTPSおよびJava、Message Service(JMS)、Simple Mail Transfer Protocol(SMTP)、Post Office Protocol Version 3(POP3)、FTPファイルシステムおよびその他多くのトランスポートメディアで提供されるプレーンテキストメッセージをフィルター、変換、送付、操作およびモニターすることができる。

単純な構成XMLファイルを使用したサービスからの固定か制御応答のどちらか一方を定義し、変換を定義し、指定された応答(応答のセット)をビルド するために、Synapseの使用方法がチュートリアルで説明されている。また、同様の構成に基づいたアプローチを用いたMockメディエーターへのアプ ローチも説明されている。

WebサービスのMockの別のアプローチは、Crosscheck Networksから新たにリリースされたSOAPSimulator(source)を使用することである。その機能はSynapseによって提供されるものと同様であるが、その他に以下の機能がある。

  • グラフィカルポイントおよびクリックSOAPおよびXMLシミュレーション。
  • WSDLおよびXSDスキーマの包括的なサポート。
  • 動的WSDLおよびシミュレーションインスタンスからのスキーマリトリーブ。
  • リアルタイムシミュレーショントランザクションのモニタリング。
  • 企業のベストプラクティスを測るWSDLおよびXSDレポートカード。
  • カスタマイズ可能なランタイムメッセージングガバナンス分析ルール。
  • 複数同時のサービスシミュレーション。
  • ランタイム可変状態マシンでの複雑なビジネスロジックシミュレーション。
  • WS-SecurityおよびWS-Identity拡張性。
  • データベースおよびプラグインAPI拡張性。

クロスチェックネットワークも同様に、製品の使用に関する包括的なチュートリアル(PDF・英語)を提供している。

「Accelerate your SOA Projects through Service Simulation」ホワイトペーパー(PDF・英語)には、以下のように定義されている。

SOAプロジェクトに示されたビジネス目標を満たす取り組みの中では、サービスの構築やデプロイに関して時間からくる極度のプレッシャーにより、エラーが 入り込む余地がほとんどない。絶え間ないプレッシャーのもとでのIT予算、きつい納品スケジュールの締め切りおよび取引相手とのシステム統合の推進意欲により、SOAプロジェクトはそれぞれの環境内にサービスシミュレーションを導入する必要がある。サービスシミュレーションは、顧客と生産者の従属関係を分 断し、それぞれ単独で実装することを可能にする。WebサービスのMockソリューションは、「箱入りのリファレンスシステム」を提供し、デベロッパの利 益を考慮するため、生産システムの実寸大のレプリカの構築に関わる費用を削減する。

原文はこちらです:   http://www.infoq.com/news/2008/05/WSMock

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。

Google Chartとgchartrbの紹介

Google Chartは、チャートを作成するためのWebサービスです。本稿では、Google Chartのインターフェースと、Rubyコードから簡単にチャートを生成することができるgchartrbライブラリの説明をします。

SOAを超えて: 動的な業務アプリケーションのための新しいエンタープライズアーキテクチャフレームワーク

全二回からなるこの記事では、ダイナミックビジネスアプリケーション(Dynamic Business Applications:DBAs)の開発についての全体的な眺望を、アーキテクチャと方法論の観点から見ていくことになります。我々のゴールは、「ビジネスの変化や、その他に必要とされる変更に対して、いかにして容易に適応できるアプリケーションを構築していくか」を導きだすことです。

ESB接続形態のオルタナティブ

本稿では、Adrien Louis氏がESBベースのSOAに対する2つの接続形態についての賛否について説明しています。その2つとは、会社での単一のESB対「部門毎」に相互接続するESBによるシステムです。

AjaxプログラマのためのJavaOne2008 -GrizzlyでComet!-

誕生から2年を経てCometは「何が出来るのか」という議論から、「いかに実現するか」という議論に関心が移ってきたように見えます。そこで本稿では同じくJavaOneで数多く取り上げられたNetBeans 6.1とGlassFish v3を使いながら、サンプルを交えてCometを解説していく事にします。

SharePoint Webサービスを始めましょう

この記事では、WSS3とMOSS 2007に難しい設定など一切せず、すぐに利用可能なWebサービスと、Javaと.NETからそのWebサービスを消費する方法に目を向けます。

レトロスペクティブのプライムディレクティブに対する問い

この記事の始まりは、知的で思慮深い人たちの魅力的なグループが食事会を終えて話をしているところです。話はレトロスペクティブ(振り返り)プロセスの要であるプライムディレクティブ(最初の指示)に及んでいます。