20140118 selenium勉強会 - jenkins×selenium 最初の一歩-
TRANSCRIPT
1
Jenkins × Selenium 最初の一歩
玉川紘子@nkns165
第 1 回 日本 Selenium ユーザコミュニティ勉強会
2
自己紹介
名前:玉川 紘子(たまがわ ひろこ)所属:株式会社 SHIFT ソフトウェアテスト事業部 CI/ 自動テスト導入担当として活動コミュニティ: STAR (テスト自動化研究会) 日本 Jenkins ユーザ会
3
Selenium で CI (継続的インテグレーション)
■Jenkins とは• フリーの CI (継続的インテグレーション)ツール• GUI 中心の直観的な操作で様々な設定が可能• Selenium を始めとした様々なテストツールと連携が可能
→ 予めテストケースを登録しておくと、 定期的に自動実行・結果通知・レポートの出力・ 履歴管理まで行ってくれる
■Selenium のテストを作成しただけでは…• 誰かがそのテストを実行しなければいけない• テスト結果の確認、実行履歴の管理など周辺作業が残る• 仕様が変わったらテストのメンテナンスが必要→ チームの意識が高くないと、すぐにテストが陳腐化してしまう
4
テストレポートを表示
自動テスト担当
バージョン管理
コミット
画面キャプチャ
テストレポート
メールや Skype でフィードバック
テストコード
テスト環境 本番環境
テストコードを含むリソースを集約
開発担当
テスト用クライアント
テスト指示
実行環境のイメージ
5
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 月のダウンロード数
6
何だかんだ言ってまだ現役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 (不明)
7
IDE で記録・編集した HTML を設定するだけでテスト実行が可能
*firefox
http://example.com
suite/01.html
result/01.html
-userExtensions userextensions.js -port 4445
IDE でプラグインを使っている場合は対応する JavaScript の設定が必要。
その他、ポートの設定など
8
見慣れたテスト結果に加えて、OK/NG 数の遷移も見られる
青: OK赤: NG
9
TestSuite が多い場合は、seleniumhtmlreport plugin で見やすく表示
10
Selenium2(WebDriver) を使っている場合
• 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 (不明)
明示的な Selenium 用のプラグインは不要
11
xUnit 形式のテスト結果を生成すれば自動的にテストレポートが出来る
Java の場合は Ant, Maven などのビルドツールから起動 他の言語でもたいていはプラグインが存在する なければシェルスクリプト or Windows バッチで代替
Maven の場合
テスト実行
レポート生成
12
xUnit 形式で出力することの利点
「いつからそのテストが失敗しているのか」すぐに分かる
Seleniumhq plugin では出来ない機能 ソースコードの変更履歴と比較すれば、どのコミットで
問題が起きたかも分かる
13
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 (不明)
14
テスト用クライアント
Jenkins のマスタ - スレーブ機能× Selenium Grid
Selenium Hub
Node
テスト用クライアント
テスト用クライアント
テスト用クライアント
たくさんの Node を管理し、いちいちサーバ起動するのは面倒
15
Selenium plugin を使った設定
「 selenium-client 」というラベルをつけたスレーブをSelenium の Node にする
そのスレーブではFirefox を 3 インスタンス
起動する
ブラウザの種類などを設定するだけで、簡単に Selenium Grid が完成
16
Jenkins で Selenium のテストをするときに気をつけること
テスト環境はなるべく専用のものを用意する繰り返しテスト実行しても問題ないように、データの初
期化の仕組みを作る ジョブは機能のカテゴリごとに小分けにして作る
失敗したときに修正のモチベーションが湧きやすい 失敗の解析がしやすいよう、スクリーンショットをとる
JUnit の場合 http://softwaretest.jp/labo/tech/labo-298/
17
まとめ
Jenkins で、 Selenium の魅力を最大限に活用しよう!
Selenium IDE / WebDriver のテスト実行 レポート表示 Grid を使った並列テスト実行、マルチ
OS/ マルチブラウザテスト
18
ご清聴ありがとうございました!