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

18
1 Jenkins × Selenium 最最最 最最最最 @nkns165 最 1 最 最最 Selenium 最最最最最最最最最最最最

Upload: hiroko-tamagawa

Post on 28-May-2015

27.307 views

Category:

Technology


0 download

TRANSCRIPT

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

1

Jenkins × Selenium 最初の一歩

玉川紘子@nkns165

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

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

2

自己紹介

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

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

3

Selenium で CI (継続的インテグレーション)

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

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

■Selenium のテストを作成しただけでは…• 誰かがそのテストを実行しなければいけない• テスト結果の確認、実行履歴の管理など周辺作業が残る• 仕様が変わったらテストのメンテナンスが必要→  チームの意識が高くないと、すぐにテストが陳腐化してしまう

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

4

テストレポートを表示

自動テスト担当

バージョン管理

コミット

画面キャプチャ

テストレポート

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

テストコード

テスト環境 本番環境

テストコードを含むリソースを集約

開発担当

テスト用クライアント

テスト指示

実行環境のイメージ

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

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 月のダウンロード数

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

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 (不明)

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

7

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

*firefox

http://example.com

suite/01.html

result/01.html

-userExtensions userextensions.js -port 4445

IDE でプラグインを使っている場合は対応する JavaScript の設定が必要。

その他、ポートの設定など

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

8

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

青: OK赤: NG

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

9

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

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

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 用のプラグインは不要

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

11

xUnit 形式のテスト結果を生成すれば自動的にテストレポートが出来る

Java の場合は Ant, Maven などのビルドツールから起動 他の言語でもたいていはプラグインが存在する なければシェルスクリプト or Windows バッチで代替

Maven の場合

テスト実行

レポート生成

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

12

xUnit 形式で出力することの利点

「いつからそのテストが失敗しているのか」すぐに分かる

Seleniumhq plugin では出来ない機能 ソースコードの変更履歴と比較すれば、どのコミットで

問題が起きたかも分かる

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

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 (不明)

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

14

テスト用クライアント

Jenkins のマスタ - スレーブ機能× Selenium Grid

Selenium Hub

Node

テスト用クライアント

テスト用クライアント

テスト用クライアント

たくさんの Node を管理し、いちいちサーバ起動するのは面倒

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

15

Selenium plugin を使った設定

「 selenium-client 」というラベルをつけたスレーブをSelenium の Node にする

そのスレーブではFirefox を 3 インスタンス

起動する

ブラウザの種類などを設定するだけで、簡単に Selenium Grid が完成

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

16

Jenkins で Selenium のテストをするときに気をつけること

テスト環境はなるべく専用のものを用意する繰り返しテスト実行しても問題ないように、データの初

期化の仕組みを作る ジョブは機能のカテゴリごとに小分けにして作る

失敗したときに修正のモチベーションが湧きやすい 失敗の解析がしやすいよう、スクリーンショットをとる

JUnit の場合  http://softwaretest.jp/labo/tech/labo-298/

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

17

まとめ

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

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

OS/ マルチブラウザテスト

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

18

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