このセクションでは、Web ブラウザーで記録されたアクションを表す JUnit テストの生成方法について説明します。
このセクションの内容:
JUnit テストの生成について
SOAtest では、新規または以前に記録した Web シナリオを表す JUnit テストを生成できます。Web アプリケーションに対して機能テストを設定し、生成された JUnit テスト ケースを使用して、JUnit フレームワークを使用するテスト結果を検証できます。これは、テスト スクリプトの柔軟性と SOAtest の使いやすいインターフェイスを提供します。新しいテスト スクリプト言語を学習する必要はありません。
結果として生じるクラス ファイルは JUnit ベースであり、次の JAR ファイルに依存します。
<Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version>/Parasoft から:
- grtlogger.jar
<Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version>/Parasoft から:
- application_api.jar
- autoconf.jar
- common.jar
- lic_client.jar
- preference_api.jar
- util.jar
<Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version> から:
- bcprov.jar
- commons-collections.jar
- commons-httpclient.jar
- commons-logging.jar
- mail.jar
- xercesImpl.jar
<Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version>/Parasoft から:
- logging_api.jar
<Parasoft SOAtest install dir>/eclipse/plugins/com.parasoft.xtest.libs.web_<version>/root/lib-java-mod から:
- FESI.jar
<Parasoft SOAtest install dir>/eclipse/plugins/com.parasoft.xtest.libs.web_<version>/root から:
- com.parasoft.api.jar
- parasoft.jar
- webking.jar
- wizard.jar
<Parasoft SOAtest install dir>/eclipse/plugins/com.parasoft.xtest.license.eclipse.core.web_<version>/lib から:
- license_web.jar
必要条件
JUnit テストの生成を始める前に、一度だけ次の設定を行います。
- [Java] パースペクティブに切り替えます ([ウィンドウ] メニューから [パースペクティブを開く] > [その他] > [Java] を選択します)。
- ワークスペースに新しいプロジェクトを作成し、MyJUnitTest という名前にします。
- [Package Explorer] で作成した MyJUnitTest プロジェクトを右クリックし、ショートカット メニューの [プロパティ] をクリックします。
- [Java Build Path] を選択し、 [Libraries] タブを開いて [Add External JARs] ボタンをクリックします。
- <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version> にあるすべての JAR ファイルを、プロジェクトのビルド パスに追加します。
- <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version>/Parasoft にあるすべての JAR ファイルを、プロジェクトのビルド パスに追加します。
- <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version> にあるすべての JAR ファイルを、プロジェクトのビルド パスに追加します。
- <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version>/Parasoft にあるすべての JAR ファイルを、プロジェクトのビルド パスに追加します。
- <Parasoft SOAtest installation dir>/eclipse/plugins/com.parasoft.xtest.libs.web_<version>/root にあるすべての JAR ファイルを、プロジェクトのビルド パスに追加します。
- /eclipse/plugins/com.parasoft.xtest.license.eclipse.core.web_<version>/lib にあるすべての JAR ファイルを、プロジェクトのビルド パスに追加します。
- [Java ビルド パス] > [ライブラリ] タブで、以下の操作を行います。
- [ライブラリの追加] をクリックします。
- [JUnit] を選択し、[次へ] をクリックします。
- [JUnit ライブラリ バージョン] を必ず [JUnit 4] に設定し、[終了] をクリックします。
シナリオを記録しながら JUnit テストを生成
シナリオを記録しながら、そのシナリオから JUnit テストを生成するには、次の操作を行います。
- [Parasoft SOAtest] パースペクティブに戻ります。
- 左上の [新規] ツールバー ボタンのプルダウン メニューを開き、[その他] をクリックします。[SOAtest] > [Web] > [Web ブラウザー記録から JUnit テスト] を選択し、[次へ] をクリックします。
- [JUnit テストの記録および生成] ウィザードの必要項目を入力します。
次から記録を開始: 機能テストを実行するサイトの URL を入力します。
SOAtest と同じマシン上にあるアプリケーションの記録
SOAtest と同じマシン上にあるアプリケーションを記録する際は、localhost を使用しないでください。代わりに、マシン名 (例: mymachine.parasoft.com) または IP アドレス (10.10.11.11) を指定してください。
- 次のブラウザーを使用して記録: テストを記録するブラウザーを指定します。
- クラス名: 生成された JUnit テスト クラスのクラス名を入力します (例: MyJUnit)。
- パッケージ名: この値は任意です。パッケージ名が出力先によって決まるフォルダー階層に一致しない場合、SOAtest は必要なサブ フォルダーを生成します。MyConvertedUnitTests と入力します。
- 生成出力場所: 生成されたテスト クラス ファイルの出力先フォルダーを指定します。${project_loc:MyJUnitTest}/src と入力します。
- [終了] ボタンをクリックします。選択したブラウザーに指定のスタート ページが表示されます。
キャプチャしたい機能をブラウザー上で操作して指定します。リンクのクリック、フォームの記入と送信、ナビゲーション バーに URL を入力して開く、ショートカットの使用、ページを戻る・進む、といった操作が可能です。
注意
正確に記録するために、毎回ページが完全に読み込まれるのを待ってから操作を実行してください。
ヒント - フォームの入力
フォームを入力するには、実際にサイト操作するように、直接 GUI に値を入力します。たとえば、名前とパスワードの入力、ラジオボタンの選択、チェックボックスのオン/オフなどの操作を直接行います。
セッションを記録する際の注意点:
- Internet Explorer のパスワードの記憶とオートコンプリート (インターネット オプションの詳細設定) は、記録中は対応していません。
- Google ツールバーの自動入力機能には対応していません。
- フィールドに値の途中までを入力し、ドロップダウンから候補をクリックして入力した場合、入力テストは記録されません。
6.ブラウザー ウィンドウを閉じます。
JUnit テスト クラスが指定した出力先に追加されます。新規プロジェクトはテスト ケース エクスプローラーに作成/追加されません。
以前記録したシナリオから JUnit テストを生成
以前に記録したシナリオを描写する JUnit テストを生成するには、次の操作を行います。
- [Parasoft SOAtest] パースペクティブに戻ります。
- テスト ケース エクスプローラーで、JUnit テストを生成したい Web シナリオを右クリックします。 ショートカット メニューから [JUnit テストの生成] をクリックします。
- [生成オプション] ダイアログを入力し、[終了] をクリックします。次のオプションが利用可能です。
- クラス名: 生成された JUnit テスト クラスのクラス名を入力します。 MyJUnit と入力します。
- パッケージ名: この値は任意です。パッケージ名が出力先によって決まるフォルダー階層に一致しない場合、SOAtest は必要なサブ フォルダーを生成します。MyConvertedUnitTests と入力します。
- 出力生成場所: 生成されたテスト クラス ファイルの出力先フォルダーを指定します。${project_loc:MyJUnitTest}/src と入力します。
ヒント - 複数のテストの管理
多くのユーザーは、すべてのテストを同じプロジェクトに入れておくと使いやすいと感じています。しかしながら、希望する場合は、複数のプロジェクトを作成することも可能です。
生成したテストの実行
生成したテストを実行するには、次の操作を行います。
- [Java] パースペクティブへ切り替えます。
- [MyJUnitTest] プロジェクトをリフレッシュします。生成されたテストを表すノードを確認できるはずです。
- [MyJunit.java] を右クリックし、 [実行] > [JUnit Test] をクリックします。
JUnit のドキュメントに記載のように、コマンドラインからこれらのテストを実行することも可能です。
JUnit テストを実行するためのライセンス情報の設定
SOAtest で生成された JUnit テストを実行するには、ライセンス情報が必要です。ライセンス情報の設定方法は 2 通りあります。
- ローカルにインストールされている SOAtest と同じライセンスを使用したい場合は、ライセンス情報が [Parasoft] メニューの [設定] > [Parasoft] > [ライセンス] に適切に設定されていることを確認してください。ライセンス情報は、コンストラクターへ渡されたインストール先のルート ディレクトリからウェブ ブラウザーによって検出されます。例:<SOAtest install root>/plugins/com.parasoft.xtest.libs.web_<version>/root/
SOAtest をインストールしていないマシンからテストを実行したい場合、またはローカルにインストールされている SOAtest で使用しているライセンスとは異なるライセンス情報を使用したい場合、SAOtest を開いて GUI で設定を変更する必要なく、ライセンス情報を操作できます。次のコンストラクターを使用してライセンス情報を渡します。
WebBrowser( String installRoot, int browserType, String ffExePath, String licenseServerLocation, int licenseServerPort, int licenseServerTimeout )
- ライセンス管理に Parasoft License Server を使用している場合、上記のコンストラクターを使用する必要があります。
生成したテストへのアサーション文の追加
SOAtest によって作成された各 JUnit クラスは、SOAtest テストのテスト シーケンスを模擬する 1 つのテスト関数から構成されます。サーバーがレスポンスを返すと、テストはテスト関数内で宣言されたレスポンス オブジェクトに代入します。サーバーからのレスポンスが見込まれていることを検証するために、これらの代入の後にアサーション文を挿入するべきです。
テスト関数内のアサーション挿入位置を推奨する場所にコメント ブロックを作成しました。
例:
public void testA() throws Exception { WebConversation wc = new WebConversation(); WebRequest req = new GetMethodWebRequest("http://mole/tests/"); WebResponse resp = wc.getResponse(req); //Begin assertions //End assertions WebLink link = resp.getLinkWith("popup.html"); link.click(); resp = wc.getCurrentPage(); //Begin assertions //End assertions WebForm form = resp.getFormWithName("childrenForm"); resp = form.submit(); //Begin assertions //End assertions }
上記の JUnit テスト関数では、WebResponse オブジェクトに新しい値が割り当てられるたびに、コメント ブロックを挿入しています。