Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Selenium 0.7 TipsとExcelによるDB初期化

Seleniumによるテストの効率を上げるテクニック

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

Webアプリケーション用のテストツール「Selenium」(セレニウム)のTipsと、Excelを使ったDB初期化のノウハウを紹介します。Seleniumの基本的な使い方を説明した『Selenium 0.7利用手順書』(前編/後編)と併せて、テストの効率化に役立ててください。

目次

はじめに

 本稿は、Webアプリケーション用のテストツールSelenium(セレニウム)のTipsと、Excelを使ったDB初期化のノウハウを紹介するものです。Seleniumの基本的な使い方については、『Selenium 0.7利用手順書』(前編/後編)を参照してください。

読者対象

 プロジェクトの試験担当者で、Seleniumの基本的な利用手順を既に習得している人を想定しています。

使用したソフトウェア・環境

 Seleniumを動作させるにあたり、以下のソフトウェアを使用しました。本ドキュメントはこれらのソフトウェアを使用しているという前提で記述しています。

表1 使用したソフトウェア
カテゴリソフトウェアバージョンバージョン
OSWindows XP Professional2002 SP22002 SP2
JavaVMJDK(JRE)1.4.2_101.5.0_06
Web/APサーバTomcat5.0.285.5.16
RDBMSMySQL4.1.164.1.16
IDEEclipse3.0.13.1.1
Eclipse pluginsysdeo tomcat plugin3.0.03.1.0
ブラウザInternet Explorer(以下IE)6.0 SP26.0 SP2

 使用したSeleniumのバージョンは次のとおりです。

表2 本書におけるSeleniumのバージョン
カテゴリソフトウェアバージョン
SeleniumSelenium Core0.7.0
Selenium toolSelenium IDE0.7.2

 テストの環境としては、ローカルマシンにてWeb/APサーバ(Tomcat)を起動してテスト対象アプリケーションをデプロイしています。テスト対象のアプリケーションとして、プレゼンテーション層にStruts(1.2.7)を用いて作成されたJavaEE/Webアプリケーションを使用しました。

テストケースの書き方 Tips集(1/2)

 ここではテストケースの書き方のヒントや便利なコマンドの使い方などを紹介します。

openコマンドのURL指定

 Seleniumでは、URLを指定して、html(JSP)を開いたり、サーブレットを起動したりできます。URLは絶対パス、相対パスのいずれも指定可能です。しかし、絶対パス指定だと、アプリを起動するマシン(IP)が限られてしまいます。

 例えば、「http://localhost:8080/~」と指定した場合、自分のローカルマシンでしかテストを実行できません。172.16.0.1のサーバにデプロイしたアプリケーションに対して、リモートのPCからアクセスしてSeleniumでテスト実施する場合、ブラウザはテストケースで指定されたlocalhostを開こうとしてしまうため、localhostを172.16.0.1と書き換える必要があります。

openUrlSampleTestCase.html(修正前)
<!-- ログイン画面を開く -->
<tr>
    <td>open</td>
    <td>http://localhost:8080/MyApp/001_login.jsp</td>
    <td></td>
</tr><!-- DB初期化サーブレットを起動する -->
<tr>
    <td>open</td>
    <td>http://localhost:8080/SeleniumTest/dbinit?name=init_common</td>
    <td> </td>
</tr>

 従って、openコマンドのURLは相対パス指定が良いでしょう。相対パスを使用した場合のホストとポートは、Seleniumの起動しているWebサーバのものになります(一般的な相対URLの動作と同じです)。

openUrlSampleTestCase.html(修正後)
<!-- ログイン画面を開く -->
<tr>
    <td>open</td>
    <td>/MyApp/001_login.jsp</td>
    <td></td>
</tr><!-- DB初期化サーブレットを起動する -->
<tr>
    <td>open</td>
    <td>/SeleniumTest/dbinit?name=init_common</td>
    <td> </td>
</tr>

実行するURL(IPアドレス)を変更できるようにする

 Seleniumで実行(open)するURLを、試験環境に合わせて変更できるようにする方法です。絶対パス指定としても、相対パス指定としても使うことができます。open以外のコマンドでも使用することができるので、リンク(href属性)の絶対パスが環境によって変化する場合の検証に最適です。

 手順は次のとおりです。

1. user-extention.jsの拡張

 globalエクステンションを以下のURLからダウンロードし、その記述を自分の「userextention.js」に追記します。

2. storeGlobalコマンドでbaseURL変数を設定するテストケースを作成する

 テストケースのファイルに任意の名前を付けます。今回は「00_SetEnv.html」としました。テストケースの内容はstoreGlobalコマンドだけでよく、storeGlobalコマンドの引数には以下を設定します。

  • ターゲット…設定値にベースとなるURLを指定する。環境を変える場合、ここを変えれば良い。
  • バリュー…変数名(任意)を指定する。今回はbaseURLとする。
00_SetEnv.html
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">00 Set Environment Values</td></tr>
</thead>

<!-- 環境設定 -->
<!-- ここにテストサーバのIP/ベースURLを指定する -->
<tr>
    <td>storeGlobal</td>  …【1】
    <td>http://localhost:8080</td>  …【2】
        <!-- 他の環境の場合こちらを入れ替えて使用
        <td>http://172.16.0.5</td>
        <td>http://172.16.0.99:8080</td>
        -->
    <td>baseURL</td>  …【3】
</tr>
</table>
    【1】storeGlobalコマンド
    【2】環境に合わせて指定する。今回はlocalhostで設定。
    【3】baseURLという名前の変数に値(URL)を保持。

3. その他の各テストケースではbaseURL変数を使って記述

 変数名は手順2で設定したものを使用し、${変数名}と記述します。

01_Login_test001.html
<tr>
    <td>open</td>
    <td>${baseURL}/MyApp/001_login.jsp</td>  …【1】
    <td></td>
</tr>
<tr>
    <td>assertTitle</td>
    <td>MyApp -ログイン-</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>submit</td>
    <td></td>
</tr>
    【1】${変数名}で指定する。

4. TestSuiteの先頭に手順2で作成したテストケースを含める

 複数のTestSuiteでbaseURLを設定する場合、変数(baseURL)設定のテストケースはフォルダ構成上、各TestSuiteの上の階層に配置します。このようにすることで、複数のTestSuiteで変数設定テストケースを使いまわすことが可能になります。

図1 変数設定テストケースの配置場所
図1 変数設定テストケースの配置場所
01_Login_TestSuite.html
<table border="1">
<tr><td>01_Login_TestSuite</td></tr>
<tr><td>
<a href="../00_SetEnv.html">00_Set Environment value</a>  …【1】
</td></tr>
<tr><td>
<a href="./01_Login_Test_001.html">01_Login_Test_001 Normal login</a>  …【2】
</td></tr>
<tr><td>
<a href="./01_Login_Test_002.html">01_Login_Test_002 Text count</a>
</td></tr>
</table>
    【1】変数設定のテストケースを先頭(TestSuiteの一番上の行)に配置する(「..」は1つ上の階層を表す)。
    【2】通常のテストケースはTestSuiteと同じ階層(「.」は同じ階層を表す)。

 TestRunner画面でTestSuiteを見ると次のようになります。

図2 変数設定テストケースを先頭に配置したTestSuite(TestRunner画面)
図2 変数設定テストケースを先頭に配置したTestSuite(TestRunner画面)

5. テストの実行

 [Run All]でTestSuiteの全テストケースを実行する場合は、特に注意点はありません。個別のテストを実行する場合は、まず環境設定テストケースを実行(Selected)し、その後、対象のテストケースを実行します。設定されたbaseURL変数はTestRunnerのウィンドウを閉じる(更新する)まで有効です。

 storeGlobalを使用するに当たって、以下の注意点があります。

  • 通常は、外部URL(Seleniumをデプロイしているサーバ以外)を指定してもSeleniumが動作してくれません。例えば、ローカルPC上でSeleniumを起動して、リモートサーバ上のアプリに対して試験しようとした場合です。
  • 環境設定テストケースを実行しないで、その他のテストケースを実行した場合、エラー(404)になります。

 また、このbaseURL変数の利用として以下の応用が可能です。

  • 環境設定テストケースで値なしで設定すると、各テストケースでは相対パスとして扱われます。ただし、href属性の検証など絶対パスが必要な箇所では使えません(相対パスになってしまうので検証NGになってしまいます)。また、この場合も他のテストケース実行前に必ずこれを実行する必要があります。
00_SetEnv.html
<!-- 環境設定 -->
<!-- ここにテストサーバのIP/ベースURLを指定する -->
<tr>
    <td>storeGlobal</td>
    <td></td>  …【1】
    <td>baseURL</td>
</tr>
    【1】ターゲットを値なしで設定。

テストケースにコメントを記述する

 Seleniumのバージョン0.7.0から、テストケースのhtmlにコメントを記述することが可能になりました。コメントとして認識される記述方法は次のとおりです。

  • 1カラムの行
  • 4カラム目
TestCase_withComment.html
<tr>
    <td>open</td>
    <td>/MyApp/001_login.jsp</td>
    <td></td>
</tr>
<tr><td rowspan="1" colspan="3">*** ログイン画面 ****</td></tr>  …【1】
<tr>
    <td>assertTitle</td>
    <td>MyApp -ログイン-</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>id</td>
    <td>047403</td>
</tr>
<tr>
    <td>type</td>
    <td>password</td>
    <td>hoge#55</td>
    <td>コメント</td>  …【2】
</tr>
    【1】1カラムの行(=コメント)
    【2】4カラム目(=コメント)

 TestRunner画面では次のような見え方になります。

図3 コメント付きのテストケース。TestRunner での表示。
図3 コメント付きのテストケース。TestRunner での表示。

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:Selenium 0.7利用手順書
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5