8. さまざまなブラウザでテストする
これまで作成したSelenium2のテストでは、1つの環境を対象にしたテストについて説明してきましたが、せっかく作成した自動テストなのでさまざまな環境で実行したいと思います。効率良く複数のOS、バージョン違いのブラウザのテストなどを実施するにはどうすれば良いでしょうか。次はさまざまな環境でテストできる仕組み「Selenium Grid2」について説明します。
8.1. Selenium Grid2とは
Selenium2では、多様な実行環境でテストを実施するためのSelenium Grid2という仕組みが用意されています。
Selenium Grid2の利用価値があるのは下記のケースです。
- 複数の環境でテストしたい
- テスト実行時間短縮のため並列実行したい
Selenium Grid2では2つの役割が存在します。Selenium2のテストを実行するためのNodeとそのNodeを取りまとめるHubです。
テスト環境となるマシンをNodeとして登録することにより、複数のマシン環境でのテストを可能にしています。
8.2. マシン構成・実行環境
筆者が用意した環境は次のとおりです。
Selenium Grid2の役割 | テスト対象のブラウザ | |
---|---|---|
Mac | Hub | |
Node1 | FireFox、Safari | |
Windows | Node2 | Chrome、Internet Explorer |
Jenkinsの実行環境と同じマシンにSelenium Grid2のHubを用意しました。Nodeについては、Hubと同じマシンに1つ目のNodeを用意しFireFoxとSafariをテストします。もう一台のマシンに2つ目のNodeを用意し、ChromeとInternet Explorerをテストする環境を構築しました。
環境が異なる場合は、適宜読み替えていただければと思います。
8.3. Hubの準備
下記URLより、Selenium Serverをダウンロードします。
ダウンロードしたjarファイルを「selenium-server-standalone-2.xx.x.jar」をHubとするマシンに配置し下記のコマンドを実行します。
java -jar selenium-server-standalone-2.xx.x.jar -role hub
2.xx.xの部分にはバージョン番号が入りますので、適宜読み替えてください。筆者は2.35.0で動作確認を行っています。
8.4. Nodeの準備
Nodeとしてテストを実行するマシンにもHubと同じjarを配置し、下記コマンドを実行します。
1つ目のNodeではFirefoxとSafariをテスト対象にしています。
java -jar selenium-server-standalone-2.xx.x.jar -role node -hub http://xxx.xxx.xxx.xxx:4444/grid/register -browser "browserName=firefox,version=24,maxInstances=1,platform=MAC" -browser "browserName=safari,version=6,maxInstances=1,platform=MAC"
「xxx.xxx.xxx.xxx」の部分にはHubのマシンのIPアドレスを指定してください。Hubと同一マシンであれば「localhost」でも構いません(以降「xxx.xxx.xxx.xxx」はHubを実行しているマシンのIPアドレスとします)。
実行するコマンドは改行を入れずに1行で記述してください。
2つ目のNodeも同様です。Nodeとする実行環境に先ほどと同じjarを配置し、下記コマンドを実行します。
2つ目のNodeにはchromeとInternet Explorerを指定しています。
java -jar selenium-server-standalone-2.xx.x.jar -role node -hub http://xxx.xxx.xxx.xxx:4444/grid/register -browser "browserName=chrome,version=30,maxInstances=1,platform=WINDOWS" -browser "browserName=internet explorer,version=10,maxInstances=1,platform=WINDOWS"
Internet Explorer、Chromeをテストする場合には、それぞれInternet Explorer Driver Server、Chromedriverの用意が必要です。第2回の記事を参考に用意してください。ここではパスが通っている前提で説明します。
8.5. Hubに接続されたNodeを確認する
下記URLにアクセスすると、Hubに接続されたNodeの確認が可能です。
- http://xxx.xxx.xxx.xxx:4444/grid/console