【短縮版】ossのブラウザ自動テストツール「selenium」を使った、開発・テストの効率化...

45
OSSのブラウザ自動テストツール Selenium」を使った、 開発・テストの効率化 2014/02/28 日本Seleniumユーザーコミュニティ 伊藤望

Upload: nozomi-ito

Post on 14-Dec-2014

983 views

Category:

Technology


4 download

DESCRIPTION

http://www.slideshare.net/NozomiIto/osssselenium の短縮版です。(実際に発表に使用したのはこちらの短縮版です)

TRANSCRIPT

Page 1: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

OSSのブラウザ自動テストツール「Selenium」を使った、 開発・テストの効率化

2014/02/28

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

伊藤望

Page 2: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

自己紹介

伊藤 望

コミュニティ

「日本Seleniumユーザーコミュニティ」を主宰

テスト自動化研究会

会社

株式会社TRIDENT 代表取締役

テスト自動化の支援を行うベンチャー

www.trident-qa.com

Page 3: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

今日はこんなことをお話します

ビジネスにおけるテスト自動化の価値

Seleniumと関連ツール群の紹介

テスト自動化を成功させるために

Page 4: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

なぜテストを自動化するのか

Page 5: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

近年のビジネスのトレンド

変化のスピードが早くなっている

トレンドを象徴するキーワード

<リーンスタートアップ>

<アジャイル>

<DevOps>

Page 6: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Webシステムはどうあるべきか?

変化にいち早く対応するために

すばやく改善したい

絶えず改善したい

このようなシステムが実現できれば、

競争優位に立てる

Page 7: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

テストはどうあるべきか?

自動テストの場合なら

手動よりも短時間で実行可能!

低コストで何度でも実行可能!

スピードと品質の両立

システムをすばやく改善したい

システムを絶えず改善したい

Page 8: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

さまざまな「自動テスト」の種類

自動テスト

人間の手を介さず、テストプログラムによってテストを行う

要件定義

詳細設計

基本設計

実装

結合テスト

単体テスト

総合テスト

画面テスト

• 画面からのテストを自動化

• Selenium

ユニットテスト

• 関数やクラスのテストを自動化

• JUnit, PHPUnit, などなど

Page 9: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

ユニットテスト

public int add(int arg1, int arg2) {

return arg1 + arg2;

}

assertEquals(2, add(1, 1));

テストしたいプログラム

テストプログラム

あとで「add」メソッドの実装を変更しても、

正しく動いているかチェックできる

Page 10: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

画面テスト

ブラウザ画面を操作するSeleniumスクリプト (例)

driver.get("http://google.co.jp"); driver.findElement(By.id("search")) .sendKeys("HTML5 カンファレンス"); driver.findElement(By.id("go_button")).click(); assertEquals(driver.getTitle(), "検索結果");

Page 11: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium

Page 12: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium

オープンソースの画面テストツール

仕組み

Webサーバー

クライアント端末

Selenium ブラウザ

HTTP通信 操作

Page 13: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium クロスブラウザ 特徴 その1

1つのテストスクリプトを様々なブラウザで

Webサーバー

HTTP通信

クライアント端末

操作

Page 14: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

様々なOS・デバイスから

Webサーバー

デスクトップ

モバイル

Selenium マルチプラットフォーム 特徴 その2

Page 15: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

テストスクリプトはお好みの言語で

Webサーバー

Selenium マルチプログラミング言語 特徴 その3

ブラウザ操作を記録してスクリプトを生成することも

Page 16: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium

誕生は2004年

今やブラウザテストの世界標準

W3C Working Draftとして、標準化も始まっている

Chrome、Operaは、

ブラウザ開発チームがメンテナンス http://docs.seleniumhq.org/download/ より

Page 17: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium

Selenium利用トレンド

順調に伸びている

Page 18: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

様々なSelenium

Selenium WebDriver

プログラミング言語のコードから実行

Selenium IDE

ブラウザ操作の記録・再生ができるFirefoxプラグイン

Page 19: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium WebDriver

Page 20: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium WebDriver

プログラミング言語からブラウザ操作

例) Java

driver.get("http://google.co.jp"); driver.findElement(By.id("search")) .sendKeys("HTML5 カンファレンス"); driver.findElement(By.id("go_button")).click();

例) Ruby

@driver.get "http://google.co.jp" @driver.find_element(:id, "search") ¥ .send_keys "HTML5 カンファレンス" @driver.find_element(:id, "go_button").click

Page 21: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium WebDriver

デモ (Java)

Page 22: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium WebDriver

使い慣れた言語でスクリプトを書ける

if文、for文、変数が使える

プログラム共通化で、メンテナンスコスト削減

Page 23: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium WebDriver 操作対象を指定する方法

要素のidやname

リンクのテキスト

CSSセレクター

HTMLツリーの階層(xPath)で指定

By.cssSelector("#search div")

By.xpath("//input[@id='search']/div")

Page 24: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium WebDriver 値をチェックする方法

例) 表示テキストの値をチェック

assertEquals( driver.findElement(By.id("total")).getText(), "100円");

様々な情報をチェックできる

チェックボックス・ラジオボタンの選択状態

要素の表示・非表示

要素のグレーアウト

Page 25: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium WebDriver 様々な機能

Wait処理

AJAX非同期処理の待機などに

スクリーンショット

エラー原因の調査

多数の端末を利用した並列実行

テスト実行時間の短縮

Page 26: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium IDE

Page 27: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium IDE

ブラウザ操作の記録・再生ができる、

Firefoxプラグイン

Page 28: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium IDE

活用方法 その1

記録したブラウザ操作から、

Selenium WebDriverのスクリプトを生成(エクスポート)

スクリプトの作成が楽になる

活用方法その2

Selenium IDEの画面でスクリプトを管理

プログラマーでなくてもメンテナンスできる

Page 29: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

デモ

Page 30: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Selenium 関連トピック ※特に断りがない限り、全てオープンソース

Page 31: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

モバイルテスト

Seleniumプロジェクト公式ドライバー

iPhoneDriver

AndroidDriver

サードパーティ製ドライバー

Appium

ios-driver

Selendroid

Selenium次期バージョン(Selenium3)

Appium, ios-driver, SelendroidのAPIを、

モバイルのSelenium APIとして統合へ

サポート終了へ

Seleniumプロジェクト推奨

http://www.selenium.jp/translation/androidtoiosnosapoto より

Page 32: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

モバイルテスト Appium [アピウム]

Seleniumと同じようなコマンド体系

iOS、Anroid

ネイティブ、ハイブリッド、ブラウザ

エミュレータ、実機

Page 33: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

HTML5

画面テストに関係するところ

inputの新しいtype

Web Storage

video

canvas

ドラッグ&ドロップ

sendKeysコマンドやJavaScript関数呼び出しで、たいてい扱える

専用のコマンドは用意されていない(今後の課題?)

ブラウザごとに対応状況にばらつき

Page 34: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Seleniumと同時に よく利用されるツール

DBデータチェック

DBUnit

Excelからのテストデータ読み込み

JUnitの@Parameters機能

テストのスケジュール実行・結果集計

Page 35: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

Seleniumと同時に よく利用されるツール

クラウドのSelenium実行環境(有料サービス)

SauceLabs

TestingBot

Scirocco Cloud(モバイル)

Seleniumスクリプトをもっと書きやすく

Capybara(Ruby)

Geb(Groovy)

画面描画を行わないブラウザ

Page 36: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

テスト自動化を 成功させるために

Page 37: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

記録機能で、誰でも

簡単にスクリプトが作れる!

全テストを

Seleniumで自動化すればいい!

自動化すれば、

テストのコストがかからない!

テスト自動化マネジメント3つの誤解

誤解 その1

誤解 その2

誤解 その3

Page 38: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

自動化すれば、テストのコストがかからない

スクリプト作成にはコストがかかる

作った後の方もメンテナンスコストがかかる

誤解 その1

メンテナンスのコストは

発生し続けると考える

Page 39: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

全テストをSeleniumで自動化すればいい

画面テストはメンテナンスのコストが高い

諸事情でユニットテストが書けない場合は、

誤解 その2

ユニットテストでできるだけカバーする

メンテナンスできない量のテストを作らない

Page 40: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

記録機能で、誰でも簡単にスクリプトが作れる

記録しただけでは安定したスクリプトにならない

画面変更に強いスクリプト

データ変更に強いスクリプト

不安定なスクリプトだと

不具合でもないのに頻繁に失敗する

誰も見なくなる

誤解 その3

それなりのスキルが必要

Page 41: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

なんのためにテストを自動化するのか

コスト削減のため

デグレードをなくすため

すばやく、絶えずソフトウェアを改善し続けるため

攻めの自動化!

Page 42: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

最後になりましたが..

Seleniumコミュニティのご紹介

Page 43: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

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

2013年7月設立

メンバーは250名を突破

オンラインフォーラム 翻訳記事 勉強会資料

www.selenium.jp

困った時に質問できる場所

最新情報や様々なノウハウが得られる

Page 44: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

今日のメッセージ

変化にいち早く対応するために

すばやく改善

絶えず改善

テストの自動化で品質を担保

スピードと品質を両立し、競争に勝つ!

Page 45: 【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化

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