連載
» 2006年10月21日 00時00分 公開

Eclipseで使えるテストツールカタログ(5):Eclipseで使える機能テストツール (3/3)

[小堀一雄, 岡本隆史,株式会社NTTデータ]
前のページへ 1|2|3       

Webサービスをテストする「WSUnit」

ツール名:WSUnit

URL:https://wsunit.dev.java.net/

ライセンス:LGPL


特徴

 WSUnitは、SOAPリクエストを受け付けるWeb サービスのMockとして振る舞います(図1)。

図1 WSUnitの振る舞い 図1 WSUnitの振る舞い

 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]を押せば設定完了です。

図2 WSUnitサーバが使用するWebサービスの設定 図2 WSUnitサーバが使用するWebサービスの設定

(3)WSUnitサーバの設定

 次に、WSUnitサーバが利用するポート番号を設定します。ツールバーから[ウインドウ]→[設定]→[WSUnit]のツリーを展開し、[Server Preferences]を選択するとポート番号設定の画面(図3)が表示されます。ここで、[Server Port]に任意の空きポート番号(図3では7080)を設定して[OK]ボタンを押してください。

図3 サーバが使用するポート番号の設定 図3 サーバが使用するポート番号の設定

(4)WSUnitビューの設定

 次にWSUnitのビューを表示します。ツールバーから[ウィンドウ]→[ビューの表示]→[その他]を選択するとビューの表示画面が表示されますので、[WSUnit]→[WSUnit Console]を選択して[OK]ボタンを押してください。(図4

図4 WSUnitビューの表示 図4 WSUnitビューの表示

 すると、「WSUnit Console」ビューが表示されるので、上部にある緑色のスタートボタン(図5)を押してWSUnitサーバを起動してください。

 WSUnit Server Startedという表示(図6)が表示されれば、成功です。

図5 WSUnitサーバのスタートボタン 図5 WSUnitサーバのスタートボタン
図6 WSUnitサーバの起動ログ 図6 WSUnitサーバの起動ログ

 以上で、Webサービスの機能テストが可能な環境が整いました。

(5)WSUnitTestCaseの作成

 次に、テストコードを作成します。今回は、パッケージ・エクスプローラから[com.jpeople.wsunit.test]→[src]→[com.jpeople.wsunit.test]を選択すると1つのTestSuiteクラス(AllTests.java)と9つのTestCaseクラスがすでに用意されています。

 今回は、この中からConcatResponseTestクラスを用いたテストについて解説します。

 テストケースコードは図7のようになっています。コード中の各行で行われる処理の概要は、以下のとおりです。

  • 4行目:WSUnitTestCaseを継承したテストクラスを宣言する
  • 10行目:テストメソッドを宣言する
  • 11行目:sendXMLメソッド(第1引数:Web ServiceのURI、第2引数:リクエストとして送信するXMLファイル名)を用いてWeb Serviceに対してリクエストを送信する。レスポンスは返り値のStringオブジェクトに格納される
  • 12行目、14行目:StringクラスのindexOfメソッドを利用して、レスポンスの文字列内において期待する部分文字列(「response1」や「response2」)が最初に出現する位置のインデックスを調べる(出現しない場合は「−1」が返る)
  • 13行目、15行目:レスポンスの文字列内に、期待する部分文字列が存在したかどうかの検証を行う
図7 WSUnitで用いるテストコード 図7 WSUnitで用いるテストコード

 続いて、このテストケースでテストされる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のようになっています。

図8 リクエストとして送信されるXMLファイル 図8 リクエストとして送信されるXMLファイル

 ここでは、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のような実行ログを表示後、テストは成功します。

図9 WSUnitテストの実行ログ 図9 WSUnitテストの実行ログ

まとめ

 このように、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のアプリケーションの機能試験を効率化することができます。これらのツールについても機会があれば、またご紹介したいと思います。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。