2015-12-10 (Thu)
■[pc]JenkinsからSelenium IDEのテストケースを使って自動テストを行う

この記事はNSEGアドベントカレンダーの10日目の記事と、
Selenium/Appium Advent Calendar 2015の22日目の記事です。
概要
Selenium IDEというWeb UIの自動テストを行うツールで作ったテストケースを、Jenkinsというビルドやテストの自動化を行うCI(継続的インテグレーションツール)から呼び出して、定期的にWeb UIのテストを行う環境を構築します。
JenkinsとSeleniumでJavaScriptのテスト自動化、最初の一歩。第1回 日本Seleniumユーザーコミュニティ勉強会 − Publickey
のエントリーを読んで、JenkinsからSelenium IDEを使ったWeb UIのテストの定期実行できるということを知りました。
普通JenkinsからはSelenium Web Driverを利用すると思いますが、テストプログラムを書けなくてもSelenium IDEなら使えるという層がいる場合、Selenium IDEでのテストを使えるのは大きいです。
なのでこれはぜひ導入したいと思いました。
しかし、このエントリーではSeleniumhq Pluginを入れれば簡単に出来そうな感じに見えたのですが、実際に導入しようとすると結構色々とノウハウが必要でした。
そこで、Jenkins + Selenium IDEの導入方法と、その環境へのジョブの投入方法について説明します。
導入環境
注意点
- Firefoxでテスト、selenium-serverでテスト、Jenkinsで順を追って動作確認する
- Xvfbのインストールが必要
- XMODIFIERS="@im=scim" 設定無いと途中で止まる
- jenkinsアカウントでFirefoxのプロフィールを生成しておく
- 「テストケース」でなく「テストスイート」を与える
- resultは別ディレクトリに生成する
環境構築
Jenkinsのインストール
- yum install jenkins
- /var/lib/jenkins 以下にjenkinsのシステムが存在している。
- オーナー、グループは「jenkins.jenkins」
- jenkinsアカウントのシェル変更
- jenkinsアカウントのパスワード設定
selenium serverの準備
- Seleniumのダウンロードサイト http://www.seleniumhq.org/download/ から「Selenium Server」をダウンロードする。
- 「selenium-server-standalone-2.42.2.jar」のようなファイルを取得
- sftp等で「/var/lib/jenkins/」以下に「selenium-server-standalone-2.42.2.jar」配置
- バージョン名なしのシンボリックリンクを作成
% cd /var/lib/jenkins % ln -s selenium-server-standalone-2.42.2.jar selenium-server.jar
Jenkinsの設定
システム設定
- 「Jenkinsの管理」→「システムの管理」選択
- 「グローバルプロパティ」→「環境変数」をチェック
- 「Xvfb installation」選択
- Name:Xvfb
- ジョブ作成時に利用するXvfbを指定するための名前なので適当でよい。
- 「Selenium Remote Control」
サーバ側Firefoxの準備
% yum install firefox xorg-x11-server-Xvfb
クライアント側(Windows)でXの表示可能にする
- MobaXTerm (http://mobaxterm.mobatek.net/)を導入
動作テスト
サーバのFirefoxを起動してプロファイル生成と表示の確認
- Windows上でMobaXTermを起動
- サーバに「jenkins」アカウントでsshで接続
- 「firefox」でWindows上にサーバ上で起動されたFirefoxの画面が表示されるか確認
- 外部サイトが見えるか確認
サーバのFirefoxにSelenium IDEプラグインを導入
- サーバ上のFirefoxからSeleniumのダウンロードサイト http://www.seleniumhq.org/download/ を開く
- Selenium IDEのlatestを選択してプラグインのインストール
テストケース内のパスの違いやFirewallの問題のため、Windows上では問題なかったテストケースがサーバ上では動作しない場合がある。
そのため、サーバ上のFirefoxでもテストケースがきちんと動くか確認する。
- /var/lib/jenkins などにテスト的に作成したテストスイート「example_suite_1.html」とテストケース「example_test_1.html」のようなファイルをアップロード
- サーバ上のfirefoxを起動してSelenium IDEを開く(検索バー横に「Se」と書いてあるアイコンか「Tools」→「Selenium IDE」)
- テストスイート「example_suite_1.html」を読み込み(Selenium IDEの「File」→「テストスイートを開く」)
- テストスイート実行(「アクション」→「テストスイート全体を実行」)
selenium-server経由で自動テスト可能か確認
$ export XMODIFIERS="@im=scim"
$ java -jar selenium-server-standalone.jar -htmlSuite *firefox http://www.example.com example_suite_1.html example_result_1.html
画面出力をXvfbにして自動テスト可能か確認
- Windows上でMobaXTermを起動
- Xvfbを起動する
$ Xvfb :99 -ac -screen 0 1024x768x24 &
- 環境変数を設定
$ export DISPLAY=:99 $ export XMODIFIERS="@im=scim"
$ java -jar selenium-server-standalone.jar -htmlSuite *firefox http://www.example.com example_suite_1.html example_result_1.html
- コンソールに何行かINFOが表示され最後に「15:09:34.372 INFO - Killing Firefox...」と出て終了し、「example_result_1.html」にテスト結果が書かれていることを確認
自動テスト項目の作成
大まかな流れ
新規ジョブ作成
- Jenkinsのダッシュボードから「新規ジョブ作成」
- ジョブ名:
- 「フリースタイル・プロジェクトのビルド」を選択。
- 「OK」を押すと詳細設定ページヘ遷移。
- ソースコード管理
- 「なし」を選択。
- ビルド・トリガ
- 一旦、なしで設定。
- テストして問題なく動いたら「定期的に実行」で定時テストにする。
- ビルド環境
- 「Start Xvfb before the build, and shut it down after.」をチェック。
- 「高度な設定」を選択
- Xvfb screen:「1024x768x24」
- スクリーンショット撮ることを考えて画面サイズと色数の指定をする。
- 「ビルド手順の追加」→「SeleniumHQ htmlSuite Run」を選択
- 「ビルド後の処理の追加」→「Publish Selenium Report」
- 「SeleniumHQ htmlSuite Run」の「resultFile」と同じものを指定。
- この例では「result/example_result_1.html」とする。
- 「ビルド後の処理の追加」→「Publish Selenium Html Report」
- 「保存」を押すとプロジェクトのページヘ遷移。
テストスイート・テストケースファイルの登録
- プロジェクトのページの「ビルドの実行」を押してワークスペースを作成
- sshやsftpなどでサーバに入って「/var/lib/jenkins/workspace/example_test」内に下記例のようにディレクトリ作成
- sftpでテストスイートとテストケースを保存
テストの動作確認と定期実行設定
- テストの動作確認
- 定期実行の設定
- 2202 https://www.google.co.jp/
- 335 https://www.google.co.jp
- 92 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=12&ved=0ahUKEwj4-bvv--TJAhUjUaYKHcgSCtQ4ChAWCB8wAQ&url=http://d.hatena.ne.jp/stealthinu/200807&usg=AFQjCNHB78gvCKgFswO-2VIhhZ1jKXZ90g&bvm=bv.110151844,d.dGY&cad=rja
- 83 http://qiita.com/advent-calendar/2015/selenium
- 61 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwj5-Y3qk8nKAhUhrqYKHcEXA2oQFggiMAE&url=http://d.hatena.ne.jp/stealthinu/20151210/p1&usg=AFQjCNEspGMelMrbUDNb5jpbi3lqL7PBfA
- 44 https://www.google.com/
- 42 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0ahUKEwi5_K6H-f3JAhUm5KYKHaUAD1gQFggvMAI&url=http://d.hatena.ne.jp/stealthinu/20151210/p1&usg=AFQjCNEspGMelMrbUDNb5jpbi3lqL7PBfA&bvm=bv.110151844,d.dGY
- 37 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=42&cad=rja&uact=8&ved=0ahUKEwjc3MHQ1uzKAhUiHaYKHc3rDN84KBAWCCEwAQ&url=http://d.hatena.ne.jp/stealthinu/20151210/p1&usg=AFQjCNEspGMelMrbUDNb5jpbi3lqL7PBfA&sig2=sNycYSIDiJKKTsayXaeeD
- 36 http://www.adoc.co.jp/blog/e000352.html
- 30 http://search.yahoo.co.jp/