そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

SOAP UIのMock Serviceを使った効率的なWebサービスのテスト

SOAP UI(http://www.soapui.org/)という便利なツールがありまして、5年くらい前から個人的にもよく使っており、いくつかのプロジェクトでも紹介して使ってもらっていますので、その紹介をしたいと思います。

SOAP UIの一番シンプルな使い方は、Webサービスに対して、SOAPメッセージを簡単に作ってリクエストを送ることができることです。今回は、一歩進んでMock Serviceという機能を使います。

Mock Serviceの必要性

SOAPやRESTなどのWebサービスを使うプロジェクトの場合、1つのWebアプリケーションの開発でやっていたテストと違う、気をつけなくてはいけない点がいくつかあります。

例えば、Webサービスを呼び出すために、Webサービス側ができあがるタイミングが依存する。
普通にやるとWebサービスができるまで、Webサービスのクライアントはテストすることができません。呼び出す先がいませんから当たり前ですね。


これは10年以上前のVBC++でやっていたクライアント・サーバー型のアーキテクチャだったときも同じ課題があったんですが、解決策としてはサーバ側のモックを作ります。モックは中身は無いけど、リクエストを受け取って、適当なテスト用のレスポンスを返してくれるプログラムです。

SOAP UIのMock Serviceは、このモックを簡単に用意する機能です。

Mock Serviceの設定手順


SOAP UIの初期画面です。まずはテストしたいWebサービスのWSDLを入手しておいて、新規プロジェクトを作成します。



次にWSDLファイルを選択します。後で、WSDLからテストメッセージをある程度自動生成してくれます。
デフォルトではCreate Requestsにしかチェックが入っていませんが、Create Mock Serviceにもチェックを入れます。



テストしたいWebサービスのオペレーションを選択します。
Mock Serviceはここで設定したURLとポート番号でリクエストを待ち受けます。



次にテスト用のレスポンスメッセージをセットします。
WSDL(XSD)を元に、メッセージの枠は自動生成されるので、後は値のみをテストしたい内容に合わせて埋めていきます。



準備ができたら、Mock Serviceをスタートさせます。
通常、ここまででMock Serviceの準備は完了です。後は開発したクライアントから呼び出して動作確認や、テストを行ってください。



ここでは、テスト用のプログラムは無いので、SOAP UIのテスト用リクエストを送る機能を使って、動作確認しました。
左側のリクエストを送ると、右側のレスポンスにMock Serviceで設定したメッセージが返ってきているのが分かります。
ここで送ったリクエストはMock Serviceの画面の左側のリクエストメッセージのエリアに表示されて、後で確認することができます。


最後に、SOAP UIには、画面下部にHTTPのログを表示させる機能がありますので、トラブル時にはそちらを見て解析することができます。


SoapUIについてはこのエントリにまとめています。