WSUnitは、SOAPリクエストを受け付けるWeb サービスのMockとして振る舞います(図1)。
SOAP requestとして送信するXMLファイルを編集できたり、SOAP responseとして返信されてくるXMLファイルを編集できるのが特徴です。
WSUnitを利用する場合は、Eclipseのアップデート機能を用いたインストールを行います。下記のURLをリモート・サイトに設定し、com.jpeople.wsunit.feature_1.0.0を選択します。
[ウィンドウ]→[設定]でEclipseの設定画面を開き、ツリーの部分に[WSUnit]が表示されればインストールが成功しています。
WSUnitの使い方について、下記の手順で解説します。
(1)テストプロジェクトの作成
(2)Webサービスの設定
(3)WSUnitサーバの設定
(4)WSUnitビューの設定
(5)WSUnitTestCaseの作成
(6)WSUnitTestCaseの実行
(1)テストプロジェクトの作成
WSUnit用のテストプロジェクトがWeb上に用意されているので、それを利用して使い方を説明します。
以下のサイトからwsunit-test-project.zipをダウンロードし、Eclipseの[plugins]ディレクトリ配下の[com.jpeople.wsunit.ui_1.0.0]ディレクトリ直下にコピーしてください(Eclipse3.0系以前をご利用の方はここでzipを展開しておく必要があります)。
コピーが終わったら、メニューバーから[ファイル]→[インポート]でインポート画面を開き、[既存プロジェクトをワークスペースへ]→[アーカイブ・ファイルの選択]にて、先ほどダウンロードしてきたwsunit-test-project.zipを選択します。
(2)Webサービスの設定
次に、WSUnitサーバが使用するWebサービスに関するデータの場所を設定します。
今回は、先ほどダウンロードしてきた「wsunit-test-project」ディレクトリ直下の「data」ディレクトリ配下に、テスト用のWebサービスのデータが置かれていますので、こちらを利用します。
ツールバーから[ウインドウ]→[設定]→[WSUnit]を選択し、[Add]ボタンを押してフォルダの参照画面(図2)を開き、ワークスペース直下の[com.jpeople.wsunit.test]→[data]フォルダを選択して[OK]を押せば設定完了です。
(3)WSUnitサーバの設定
次に、WSUnitサーバが利用するポート番号を設定します。ツールバーから[ウインドウ]→[設定]→[WSUnit]のツリーを展開し、[Server Preferences]を選択するとポート番号設定の画面(図3)が表示されます。ここで、[Server Port]に任意の空きポート番号(図3では7080)を設定して[OK]ボタンを押してください。
(4)WSUnitビューの設定
次にWSUnitのビューを表示します。ツールバーから[ウィンドウ]→[ビューの表示]→[その他]を選択するとビューの表示画面が表示されますので、[WSUnit]→[WSUnit Console]を選択して[OK]ボタンを押してください。(図4)
すると、「WSUnit Console」ビューが表示されるので、上部にある緑色のスタートボタン(図5)を押してWSUnitサーバを起動してください。
WSUnit Server Startedという表示(図6)が表示されれば、成功です。
以上で、Webサービスの機能テストが可能な環境が整いました。
(5)WSUnitTestCaseの作成
次に、テストコードを作成します。今回は、パッケージ・エクスプローラから[com.jpeople.wsunit.test]→[src]→[com.jpeople.wsunit.test]を選択すると1つのTestSuiteクラス(AllTests.java)と9つのTestCaseクラスがすでに用意されています。
今回は、この中からConcatResponseTestクラスを用いたテストについて解説します。
テストケースコードは図7のようになっています。コード中の各行で行われる処理の概要は、以下のとおりです。
続いて、このテストケースでテストされるWebサービスと、リクエストとして送信されるXMLファイルについて解説します。
(6)テスト対象のWeb サービス
sendXMLメソッドの第1引数において、テスト対象のWebサービスのURIには「/ws/concat」が指定されています。
これは、図1で指定した「data」フォルダを基底としたURIとなっていますので、実際にはワークスペース配下のcom.jpeople.wsunit.test/data/ws/concatを指しています。
このconcatというWebサービスは、リクエストとして送信されてきたXMLファイルに格納されているKey(propertyエレメントの文字列)と同じ名前のレスポンス用XML内に記述されている文字列を連結して返信する機能を持っています。
・リクエストとして送信されるXMLファイル
また、第2引数で指定されているXMLファイルはcom.jpeople.wsunit.test/test-src直下にあり、内容は図8のようになっています。
ここでは、Keyは「response1」と「response2」、「missing-key」の3つなので、Webサービスではこれらの名前に対応したレスポンス用XMLファイル「response1.xml」と「respons2.xml」と「missing-key.xml」の内容を連結します。
しかし、「missing-key.xml」だけは「data」ディレクトリ配下に存在しないので実際には「response1.xml」と「response2.xml」の内容が連結されて返信されます。
具体的には、“<content> <test>response2</test> <test>response1</test> </content>” というレスポンスがあり、この中には“response1”も“response2”も部分文字列として存在するので、テストは成功するはずです。
・WSUnitTestCaseの実行
最後に、WSUnitのテストケースを実行します。まず、Javaパースペクティブのパッケージ・エクスプローラから、[com.jpeople.wsunit.test]プロジェクトを選択します。
次に、[src]→[com.jpeople.wsunit.test]→[ConcatResponseTest.java]を選択して右クリックし、[実行]→[JUnitテスト]を選択します。すると図9のような実行ログを表示後、テストは成功します。
このように、WSUnitはSOAP通信によって送受信されるXMLファイルの内容を検証することで、Webサービスをテストします。
リクエストとして送信されるXMLファイルや、レスポンス用のXMLファイルの内容を書き換えることにより、さまざまなパターンの機能テストが可能となります。
また、WSUnitで作成したテストケースはJUnitを利用して実行しているので、TestSuiteを用いた一括テストや、回帰テストも容易に行うことが可能です。
本連載では5回にわたってEclipseで使えるテストツールの紹介をしてきました。連載で紹介してきたテストツール自身、Eclipseがなくても単独でテストできるものも多いですが、Eclipseから利用することにより、よりテストを効率化することができます。ただし、Eclipse上から利用した場合はレポートが豊富とはいえず、ビルドサーバ上でテストを実行し、実行結果をマネージャが確認するような作業も必要となってきます。状況に応じて、Eclipse上からだけでなく、AntやMaven等のスクリプトからの実行も検討に入れるといいでしょう。
Eclipseに対応していないテストツールとしては、Webアプリケーションの回帰テストを行うSelenium、SwingのGUIアプリケーションの回帰試験を行うAbbotなどがあります。これらのツールを利用すると、WebやSwingのアプリケーションの機能試験を効率化することができます。これらのツールについても機会があれば、またご紹介したいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.