モーグルとカバとパウダーの日記 このページをアンテナに追加 RSSフィード Twitter

モーグルやカバ(EXカービングスキー)、山スキー(BC)の山行記録などがメインの日記です。
いろんな条件のいろんなところを、その時々の条件にあった滑り方で楽しむ、フリースキーをして遊んでいます。

検索で来られた方は、上の検索窓から再度検索していただくか、右サイドバーのカテゴリーやトピックスの項目で絞り込んでみてください。
仕事柄、コンピュータ系のネタも多いので、スキー関連ネタだけ読みたい方は[ski]、コンピュータ関連ネタは[pc]、スパム関連ネタは[spam]で絞り込んでください。

2015-12-10 (Thu)

[]JenkinsからSelenium IDEテストケースを使って自動テストを行う JenkinsからSelenium IDEのテストケースを使って自動テストを行うを含むブックマーク JenkinsからSelenium IDEのテストケースを使って自動テストを行うのブックマークコメント

この記事はNSEGアドベントカレンダーの10日目の記事と、

Selenium/Appium Advent Calendar 2015の22日目の記事です。

概要

Selenium IDEというWeb UIの自動テストを行うツールで作ったテストケースを、Jenkinsというビルドやテストの自動化を行うCI継続的インテグレーションツール)から呼び出して、定期的にWeb UIのテストを行う環境を構築します。


以前、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の導入方法と、その環境へのジョブの投入方法について説明します。

導入環境
注意点

環境構築

Jenkinsのインストール
selenium serverの準備
% cd /var/lib/jenkins
% ln -s selenium-server-standalone-2.42.2.jar selenium-server.jar
Jenkinsの設定

プラグインインストール

システム設定

  • 「Jenkinsの管理」→「システムの管理」選択
  • 「グローバルプロパティ」→「環境変数」をチェック
    • 日本語変換指定
      • CentOS5の場合XMODIFIERSの設定をしないとFirefoxの動作がうまくいかない
      • キー:XMODIFIERS
      • 値:@im=scim
    • Javaエンコーディング指定
      • レポートページの日本語が文字化けを防ぐ
      • キー:_JAVA_OPTIONS
      • 値:-Dfile.encoding=8859_1
  • 「Xvfb installation」選択
    • Name:Xvfb
    • ジョブ作成時に利用するXvfbを指定するための名前なので適当でよい。
  • Selenium Remote Control」
    • htmlSuite Runner:/var/lib/jenkins/selenium-server-standalone.jar
サーバFirefoxの準備
% yum install firefox xorg-x11-server-Xvfb

クライアント側(Windows)でXの表示可能にする
動作テスト

サーバFirefoxを起動してプロファイル生成と表示の確認

サーバFirefoxSelenium IDEプラグインを導入

サーバFirefoxからテストケースが実行可能か確認

テストケース内のパスの違いや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"
    • CentOS5の場合、XMODIFIERSの設定をしないとFirefoxの動作がうまくいかなかったので注意
  • selenium-server経由でテストケースを実行
$ java -jar selenium-server-standalone.jar -htmlSuite *firefox http://www.example.com example_suite_1.html example_result_1.html
  • サーバ上のfirefoxの画面でテストが正常に動作し、終了後自動的にfirefoxが閉じられることを確認
    • テストが終了してもfirefoxが閉じられない場合、テストスイートではなくテストケースを実行していないか確認する。

画面出力を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の管理画面から自動テストの「ジョブ」を作成する
  • テストで使われるSelenium IDEのテストファイルをsftpで置く
  • 動作確認と定期実行指定
新規ジョブ作成
  • Jenkinsのダッシュボードから「新規ジョブ作成」
  • ジョブ名:
    • 半角英数の他のジョブ名と重ならない適当な名前
    • サーバ上のworkspaceディレクトリ名がそのままその名前で付けられるため、日本語ではなく半角英数で付けることを推奨。
    • この例では「example_test」とする。
  • フリースタイル・プロジェクトのビルド」を選択。
  • 「OK」を押すと詳細設定ページヘ遷移。
  • ソースコード管理
    • 「なし」を選択。
  • ビルド・トリガ
    • 一旦、なしで設定。
    • テストして問題なく動いたら「定期的に実行」で定時テストにする。
  • ビルド環境
    • 「Start Xvfb before the build, and shut it down after.」をチェック。
    • 「高度な設定」を選択
    • Xvfb screen:「1024x768x24」
    • スクリーンショット撮ることを考えて画面サイズと色数の指定をする。
  • ビルド手順の追加」→「SeleniumHQ htmlSuite Run」を選択
    • browser:Firefoxでテストする場合は「*firefox
    • startURL:対象となるサーバURLhttp://www.google.com/」など
    • suiteFile:Selenium IDEで作った『テストスイート』ファイル。テストケースでは『ない』ことに注意。
    • この例では「selenium/example_suite_1.html」とする。
    • resultFile:テスト結果が書かれるHTMLファイル名。レポート生成のため別フォルダにすること。
    • この例では「result/example_result_1.html」とする。
  • ビルド後の処理の追加」→「Publish Selenium Report」
    • 「SeleniumHQ htmlSuite Run」の「resultFile」と同じものを指定。
    • この例では「result/example_result_1.html」とする。
  • ビルド後の処理の追加」→「Publish Selenium Html Report」
    • 「SeleniumHQ htmlSuite Run」の「resultFile」の『ディレクトリのみ』であることに注意。
    • この例では「result/」とする。
    • ここで間違ってresultFileと同じものを指定するとぬるぽを吐いてしまうため要注意。
    • またresultフォルダを別にせずテストケースと同じところに出力していると、そちらも解析しようとして失敗する。
  • 「保存」を押すとプロジェクトのページヘ遷移。
テストスイート・テストケースファイルの登録
テストの動作確認と定期実行設定
  • テストの動作確認
    • Jenkinsのダッシュボードに先ほど登録した「example_test」プロジェクトが出ているので選択。
    • ビルドの実行」を選択すると自動テストが開始する。
    • ビルド履歴」に出てくる日時の横▼から「Console Output」を見るとテストの実行状況が確認出来る。
    • Selenium Report」を見ると各テストの結果詳細を確認できる。
    • ワークスペース」からファイルを確認出来るため、スクリーンショットの確認も可能。
  • 定期実行の設定
    • プロジェクトの「設定」を選択
    • ビルドトリガ」→「定期的に実行」をチェック
    • スケジューリング:毎日早朝4時にテストする例「H 4 * * *」

*1CentOSは諸事情により6ですらなく5です。しかし6でもあまり変わらないと思います。

トラックバック - http://d.hatena.ne.jp/stealthinu/20151210/p1