BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース WebサービスのMock

WebサービスのMock

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

この記事に星をつける

おすすめ度
スタイル

BT