第1回

日本Seleniumユーザコミュニティ勉強会

Jenkins × Selenium 最初の一歩

玉川紘子
@nkns165

1
自己紹介
名前:玉川 紘子(たまがわ ひろこ)
所属:株式会社SHIFT ソフトウェアテスト事業部
CI/自動テスト導入担当として活動
コミュニティ:STAR(テスト自動化研究会)
日本Jenkinsユーザ会

2
SeleniumでCI(継続的インテグレーション)
■Seleniumのテストを作成しただけでは…
•
•
•

誰かがそのテストを実行しなければいけない
テスト結果の確認、実行履歴の管理など周辺作業が残る
仕様が変わったらテストのメンテナンスが必要

→ チームの意識が高くないと、すぐにテストが陳腐化してしまう
■Jenkinsとは
•
•
•

→

フリーのCI(継続的インテグレーション)ツール
GUI中心の直観的な操作で様々な設定が可能
Seleniumを始めとした様々なテストツールと連携が可能

予めテストケースを登録しておくと、
定期的に自動実行・結果通知・レポートの出力・
履歴管理まで行ってくれる

3
実行環境のイメージ
テストコードを含む
リソースを集約

コミット
テスト
コード
自動テスト担当

テスト
指示

バージョン管理

画面
キャプチャ

メールやSkypeで
フィードバック

テスト
レポート

テスト用
クライアント

テストレポートを表示

開発担当

テスト環境

本番環境

4
Seleniumのテストを補助してくれる
様々なプラグイン
•
•
•
•
•
•
•
•
•

Selenium AES plugin(549)
Seleniumhq plugin(1712)
Selenium Builder plugin(251)
TestingBot Selenium plugin(105)
seleniumhtmlreport plugin(1404)
Selenium RC plugin(643)
Selenium plugin(1118)
Selenium Axis plugin(33)
Selenium Grails plugin(不明)

※()内は2013年12月のダウンロード数
5
何だかんだ言ってまだ現役
Selenium IDEを使っている場合
•
•
•
•
•
•
•
•
•

Selenium AES plugin(549)
Seleniumhq plugin(1712)
Selenium Builder plugin(251)
TestingBot Selenium plugin(105)
seleniumhtmlreport plugin(1404)
Selenium RC plugin(643)
Selenium plugin(1118)
Selenium Axis plugin(33)
Selenium Grails plugin(不明)

6
IDEで記録・編集したHTMLを
設定するだけでテスト実行が可能

*firefox

http://example.com
suite/01.html
result/01.html

IDEでプラグインを使っている場合は
対応するJavaScriptの設定が必要。
その他、ポートの設定など

-userExtensions userextensions.js -port 4445

7
見慣れたテスト結果に加えて、
OK/NG数の遷移も見られる
青:OK
赤:NG

8
TestSuiteが多い場合は、
seleniumhtmlreport pluginで見やすく表示

9
Selenium2(WebDriver)を使っている場合
•
•
•
•
•
•
•
•
•

Selenium AES plugin(549)
Seleniumhq plugin(1712)
Selenium Builder plugin(251)
明示的なSelenium用のプラグインは
TestingBot Selenium plugin(105)
不要
seleniumhtmlreport plugin(1404)
Selenium RC plugin(643)
Selenium plugin(1118)
Selenium Axis plugin(33)
Selenium Grails plugin(不明)

10
xUnit形式のテスト結果を生成すれば
自動的にテストレポートが出来る
 Javaの場合はAnt, Mavenなどのビルドツールから起動
 他の言語でもたいていはプラグインが存在する
 なければシェルスクリプト or Windowsバッチで代替
Mavenの場合
テスト実行

レポート生成

11
xUnit形式で出力することの利点
 「いつからそのテストが失敗しているのか」すぐに分かる
 Seleniumhq pluginでは出来ない機能
 ソースコードの変更履歴と比較すれば、どのコミットで問
題が起きたかも分かる

12
Selenium Gridを使って並列テストを実行したい
•
•
•
•
•
•
•
•
•

Selenium AES plugin(549)
Seleniumhq plugin(1712)
Selenium Builder plugin(251)
TestingBot Selenium plugin(105)
seleniumhtmlreport plugin(1404)
Selenium RC plugin(643)
Selenium plugin(1118)
Selenium Axis plugin(33)
Selenium Grails plugin(不明)

13
Jenkinsのマスタ-スレーブ機能
× Selenium Grid
たくさんのNodeを管理し、
いちいちサーバ起動するのは面倒

Node

テスト用
クライアント

テスト用
クライアント

テスト用
クライアント

Selenium Hub

テスト用
クライアント

14
Selenium pluginを使った設定
ブラウザの種類などを設定するだけで、
簡単にSelenium Gridが完成
「selenium-client」という
ラベルをつけたスレーブを
SeleniumのNodeにする

そのスレーブでは
Firefoxを3インスタンス
起動する

15
JenkinsでSeleniumのテストをするときに
気をつけること
 テスト環境はなるべく専用のものを用意する
 繰り返しテスト実行しても問題ないように、データの初期
化の仕組みを作る
 ジョブは機能のカテゴリごとに小分けにして作る
 失敗したときに修正のモチベーションが湧きやすい

 失敗の解析がしやすいよう、スクリーンショットをとる
 JUnitの場合 http://softwaretest.jp/labo/tech/labo-298/

16
まとめ

Jenkinsで、Seleniumの魅力を
最大限に活用しよう!

 Selenium IDE / WebDriverのテスト実行
 レポート表示
 Gridを使った並列テスト実行、マルチOS/
マルチブラウザテスト

17
ご清聴ありがとうございました!

18

20140118 selenium勉強会 - Jenkins×Selenium 最初の一歩-