はじめに
「Selenium Auto Exec Server」(以降、Selenium AES)は、Seleniumによる継続的なリグレッションテストを行うことを目的としたツールです。
本記事では、実際のプロジェクトを想定し、Selenium AESを使ったリグレッションテストの運用方法について説明します。Selenium AESで提供される機能などについては、前回の記事『Selenium AES入門』を参照してください。
対象読者
Webアプリケーションの開発者を対象としています。
本記事で説明するリグレッションテストの内容
下記のような運用を想定し、Selenium AESの導入方法を説明していきます。
毎日決められた時刻にSeleniumによるテストを実行
Seleniumによるリグレッションテストを、毎日決められた時刻に実施します。定期的にアプリケーションの正常性を確認することにより、デグレなどの問題の有無を、すぐに検出することができます。
本記事では、対象アプリケーションの定期的なビルド方法については触れませんが、Selenium AESでテストを実行する前に、CI(Continuous Integration)ツールなどの、最新のソースコードでアプリケーションをビルドする仕組みを導入しておくと良いと思います。
テスト結果をメールで通知
テスト結果をメールで通知することにより、いちいちSelenium AESにアクセスせずとも、テスト結果を参照することができます。
テストケースをSubversionで管理
ソースコードと同様に、テストケースもバージョン管理の対象としておく(ソースコードと同期をとっておく)のが望ましいと考えます。
Selenium AESでは、Subversionのリポジトリからテストケースを取得し、テストを実行することができます。これにより、テスト用のPC上に手動でテストケースを配置するようなことをせずに、常に最新のテストケースでテストを実行できます。
他のバージョン管理システムを利用している場合には、設定項目の「beforeCommand」(テスト実行前に実行するコマンドを指定)で対応可能な場合もあると思いますので、ご確認ください。
Selenium AESのダウンロード
テストを実行するPC上に、Selenium AESをダウンロードします。Selenium AESは、公式サイト「Selenium Auto Exec Server(AES)」からダウンロードできます。執筆時点の最新バージョンは0.5です。
ダウンロードファイル(selenium-autoexec-server-0.5.zip)は、ZIP形式で圧縮されているので、ダウンロードして適当なディレクトリに解凍します。
Selenium AESの設定
解凍したディレクトリにある「setting.properties」を編集し、各種設定を行います。以降、必要最低限の設定を記載しますが、他にも様々な設定がありますので、設定できる内容については、一度目を通しておくことをお奨めします。
テストを実行するブラウザを設定
「browser」にテストを実行するブラウザを設定します。
browser=*firefoxproxy,*iexploreproxy
テスト対象のドメインを設定
「startURL」にテスト対象のドメインを指定します。
startURL=http://example.com/
定期的に実行する時間を設定
「autoExecTime」に実行する時刻を指定します(hh:mmで時分を指定)。
autoExecTime=2:00
テストケースを取得するリポジトリを設定
「suiteRepo」に、テストケースの取得先となるSubversionのリポジトリURLを指定します。
suiteRepo=http://example.com/svnrepo/selenium-test/
Subversionで認証が必要な場合には、「suiteRepoUsername」、「suiteRepoPassword」に、ユーザ名とパスワードを指定します。
# 認証ユーザ名 suiteRepoUsername=username # 認証パスワード suiteRepoPassword=password
テストケースの管理方法
Seleniumでは、複数のテストケースをまとめたテストスイート単位にテストを実行します。そのため、テストケースを増やす場合、テストスイートも変更する必要があり、筆者はとても面倒だと感じています(テストスイートへの追加漏れなどのミスが発生しやすい)。
このような手間が省けるよう、Selenium AESでは、テストスイートの自動作成機能を提供しています。指定ディレクトリ配下に、決められたルールでテストケースを配置しておくだけで、実行時にテストスイートを作成し、実行してくれます。
下記のようなディレクトリ構成の場合、テストケースのディレクトリとして「test」を指定すると、配下のディレクトリ毎にテストスイートを作成し、実行してくれます(Regist.html、Update.html、Delete.htmlといった3つのテストスイートが作成される)。
test +- Regist/ … 機能毎にディレクトリを作成 | +- Case1.html … ディレクトリ配下にテストケースを配置 | +- Case2.html +- Update/ | +- Case1.html | +- Case2.html | +- Case3.html +- Delete/ +- Case1.html +- Case2.html +- Case3.html
詳しくは、公式サイトの設定ファイルに関する記述の「suiteDir」の部分をご参照ください。
メール送信の設定
「mail.host」「mail.port」にメールサーバ名とポート番号を指定します。
# サーバ名 mail.host=smtp.example.com # ポート番号(25の場合は省略可) mail.port=925
「mail.to」「mail.from」に送信先/送信元アドレスを指定します。
# 送信先アドレス mail.to=dev-ml@example.com # 送信元アドレス mail.from=report@example.com
認証ありの場合、「mail.username」と「mail.password」も指定します。
# 認証ユーザ名 mail.username=username # 認証パスワード mail.password=password
SSLを利用する(SMTP over SSL)場合、「mail.ssl」にtrueを指定します。
mail.ssl=true
プロキシの設定(必要な場合)
テスト対象のアプリケーションに対して、プロキシを経由してアクセスする必要がある場合、「proxyHost」「proxyPort」を設定します。
# プロキシのホスト名 proxyHost=proxy.example.com # プロキシのポート番号 proxyPort=3122