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