Suche senden
Hochladen
テスト自動化の様々な道具を使ってみた四方山話
•
13 gefällt mir
•
5,573 views
haljik Seiji
Folgen
Software
Melden
Teilen
Melden
Teilen
1 von 55
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
テスト自動化ツール[Selenium]を検討してみて
テスト自動化ツール[Selenium]を検討してみて
裕史 川松
Azureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめよう
Naoya Kojima
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
Takeshi Kondo
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界
Nozomi Ito
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
Selenium boot campの紹介
Selenium boot campの紹介
Nozomi Ito
20161218 selenium study4
20161218 selenium study4
Naoya Kojima
Selenium IDE for primer
Selenium IDE for primer
yasukoS
Empfohlen
テスト自動化ツール[Selenium]を検討してみて
テスト自動化ツール[Selenium]を検討してみて
裕史 川松
Azureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめよう
Naoya Kojima
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
Takeshi Kondo
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界
Nozomi Ito
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
Selenium boot campの紹介
Selenium boot campの紹介
Nozomi Ito
20161218 selenium study4
20161218 selenium study4
Naoya Kojima
Selenium IDE for primer
Selenium IDE for primer
yasukoS
Selenium2でつくるテストケースの構成について
Selenium2でつくるテストケースの構成について
yufu yufu
ハイパフォーマンスSeleniumテスト@サイボウズ
ハイパフォーマンスSeleniumテスト@サイボウズ
Jumpei Miyata
Appiumのテスト結果レポートをsahaginで作ってみる
Appiumのテスト結果レポートをsahaginで作ってみる
Nozomi Ito
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩
Satsuki Urayama
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
Yuki Okada
Selenium勉強会
Selenium勉強会
Tatsunori Nishikori
20141018 selenium appium_cookpad
20141018 selenium appium_cookpad
Kazuaki Matsuo
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。
Naoto Kishino
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
Hiroko Tamagawa
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
エンタープライズ開発でのSelenium活用事例
エンタープライズ開発でのSelenium活用事例
isaac-otao
Seleniumの薄っすい話 百八式 @ 第3回 日本Seleniumユーザーコミュニティ勉強会
Seleniumの薄っすい話 百八式 @ 第3回 日本Seleniumユーザーコミュニティ勉強会
Hiroshi Toda
テストの自動化を考える前に
テストの自動化を考える前に
bleis tift
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
yuichi_kuwahara
Selenium Antipatterns
Selenium Antipatterns
Jumpei Miyata
kintoneチームを支えるSeleniumテスト
kintoneチームを支えるSeleniumテスト
Jumpei Miyata
Fluentlenium
Fluentlenium
MathildeLemee
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
Toshiki Tsuboi
Weitere ähnliche Inhalte
Was ist angesagt?
Selenium2でつくるテストケースの構成について
Selenium2でつくるテストケースの構成について
yufu yufu
ハイパフォーマンスSeleniumテスト@サイボウズ
ハイパフォーマンスSeleniumテスト@サイボウズ
Jumpei Miyata
Appiumのテスト結果レポートをsahaginで作ってみる
Appiumのテスト結果レポートをsahaginで作ってみる
Nozomi Ito
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩
Satsuki Urayama
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
Yuki Okada
Selenium勉強会
Selenium勉強会
Tatsunori Nishikori
20141018 selenium appium_cookpad
20141018 selenium appium_cookpad
Kazuaki Matsuo
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。
Naoto Kishino
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
Hiroko Tamagawa
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
エンタープライズ開発でのSelenium活用事例
エンタープライズ開発でのSelenium活用事例
isaac-otao
Seleniumの薄っすい話 百八式 @ 第3回 日本Seleniumユーザーコミュニティ勉強会
Seleniumの薄っすい話 百八式 @ 第3回 日本Seleniumユーザーコミュニティ勉強会
Hiroshi Toda
テストの自動化を考える前に
テストの自動化を考える前に
bleis tift
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
yuichi_kuwahara
Selenium Antipatterns
Selenium Antipatterns
Jumpei Miyata
kintoneチームを支えるSeleniumテスト
kintoneチームを支えるSeleniumテスト
Jumpei Miyata
Was ist angesagt?
(20)
Selenium2でつくるテストケースの構成について
Selenium2でつくるテストケースの構成について
ハイパフォーマンスSeleniumテスト@サイボウズ
ハイパフォーマンスSeleniumテスト@サイボウズ
Appiumのテスト結果レポートをsahaginで作ってみる
Appiumのテスト結果レポートをsahaginで作ってみる
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
Selenium勉強会
Selenium勉強会
20141018 selenium appium_cookpad
20141018 selenium appium_cookpad
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
エンタープライズ開発でのSelenium活用事例
エンタープライズ開発でのSelenium活用事例
Seleniumの薄っすい話 百八式 @ 第3回 日本Seleniumユーザーコミュニティ勉強会
Seleniumの薄っすい話 百八式 @ 第3回 日本Seleniumユーザーコミュニティ勉強会
テストの自動化を考える前に
テストの自動化を考える前に
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
Selenium Antipatterns
Selenium Antipatterns
kintoneチームを支えるSeleniumテスト
kintoneチームを支えるSeleniumテスト
Andere mochten auch
Fluentlenium
Fluentlenium
MathildeLemee
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
Toshiki Tsuboi
Sikuli x 知っていますか?
Sikuli x 知っていますか?
Masuo Ohara
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
Nobuhiro Sue
「自動家(オートメータ)をつくる」-システムテスト自動化カンファレンス2014 「.reviewrc」枠発表-
「自動家(オートメータ)をつくる」-システムテスト自動化カンファレンス2014 「.reviewrc」枠発表-
Kazuhito Miura
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
Keizo Tatsumi
Selenium, Appium, and Robots!
Selenium, Appium, and Robots!
hugs
Andere mochten auch
(7)
Fluentlenium
Fluentlenium
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
Sikuli x 知っていますか?
Sikuli x 知っていますか?
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
「自動家(オートメータ)をつくる」-システムテスト自動化カンファレンス2014 「.reviewrc」枠発表-
「自動家(オートメータ)をつくる」-システムテスト自動化カンファレンス2014 「.reviewrc」枠発表-
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
Selenium, Appium, and Robots!
Selenium, Appium, and Robots!
Ähnlich wie テスト自動化の様々な道具を使ってみた四方山話
Selenium入門
Selenium入門
onozaty
WEB開発動作テストの自動化 を行うSeleniumの紹介
WEB開発動作テストの自動化 を行うSeleniumの紹介
Nobuhiko Futagami
Selenium入門(2023年版)
Selenium入門(2023年版)
onozaty
Selenium2(web driver)
Selenium2(web driver)
Tetsuya Hasegawa
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
Tadashi Nemoto
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
PHP agile test tips
PHP agile test tips
Tsutomu Chikuba
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Javaユーザに伝えたいselenide入門
Javaユーザに伝えたいselenide入門
snowhiro
Ja sst東北2013
Ja sst東北2013
勝信 今井
ローカル環境のテスト自動化【勉強会資料】
ローカル環境のテスト自動化【勉強会資料】
株式会社キャッチアップ
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
STYLY Studioのテストをブラウザ自動操作で効率化する
STYLY Studioのテストをブラウザ自動操作で効率化する
Segur Segur
Selenium
Selenium
takeuchi-tk
実践・ブラウザテスト自動化
実践・ブラウザテスト自動化
takahiro sakuma
Selenium2(web driver) ide編
Selenium2(web driver) ide編
Tetsuya Hasegawa
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
Munenori Sugimura
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
Selenium 触ってみよう
Selenium 触ってみよう
Oda Shinsuke
Ähnlich wie テスト自動化の様々な道具を使ってみた四方山話
(20)
Selenium入門
Selenium入門
WEB開発動作テストの自動化 を行うSeleniumの紹介
WEB開発動作テストの自動化 を行うSeleniumの紹介
Selenium入門(2023年版)
Selenium入門(2023年版)
Selenium2(web driver)
Selenium2(web driver)
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
PHP agile test tips
PHP agile test tips
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Javaユーザに伝えたいselenide入門
Javaユーザに伝えたいselenide入門
Ja sst東北2013
Ja sst東北2013
ローカル環境のテスト自動化【勉強会資料】
ローカル環境のテスト自動化【勉強会資料】
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
STYLY Studioのテストをブラウザ自動操作で効率化する
STYLY Studioのテストをブラウザ自動操作で効率化する
Selenium
Selenium
実践・ブラウザテスト自動化
実践・ブラウザテスト自動化
Selenium2(web driver) ide編
Selenium2(web driver) ide編
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Selenium 触ってみよう
Selenium 触ってみよう
テスト自動化の様々な道具を使ってみた四方山話
1.
テスト自動化の様々 な道具を使ってみた 四方山話 Selenium Webdriver, fuluentlenium,
geb, gebspec
2.
自己紹介 twitter: @haljik もうすぐフリーのプログラマーです。 JVM言語や、Java周りのエコシステムが好きで す。 関西Javaエンジニアの会,Devlove関西,京都アジ ャイル勉強会とかちらほらと参加
3.
今日紹介するツール 4 Selenium Webdriver 4
Fluentlenium 4 Geb/GebSpec
4.
全部WEBブラウザ の操作を自動化する ツールですが
5.
どれも出来ることは 変わらない
6.
違いは書きやすさと 表現力
7.
ということでそれぞ れ書くと
8.
Selenium WebDriver 一番低レベルな実装でこれでできない操作は他の でもできない public class
BingTest {//ドライバーのセットアップとかは省略 @Test public void title_of_bing_should_contain_search_query_name() throws Exception { driver.get("http://www.bing.com"); driver.findElement(By.id("sb_form_q")).sendKeys("automation"); driver.findElement(By.id("sb_form_go")).click(); assertThat(driver.getTitle(), containsString("automation")); } } (´・ω・`)
9.
Fluentlenium Javaで書ける範囲で頑張ったAPI。WebDriver のラッパー public class BingTest
extends FluentTest { @Test public void title_of_bing_should_contain_search_query_name() { goTo("http://www.bing.com"); fill("#sb_form_q").with("automation"); submit("#sb_form_go"); assertThat(title()).contains("automation"); } } (`・ω・´)
10.
Geb (「じぇぶ」と読む) Groovyで書ける。Spockで書ける。 WebDriver のラッパー class
BingSpec extends GebSpec { def "title_of_bing_should_contain_search_query_name"() { when: go "http://www.bing.com" $("#sb_form_q").value "automation" $("#sb_form_go").click() then: title.contains("automation") } } (・ ・)イイ!! ※但しIDEAに限る…
11.
で
12.
実際の開発で使って みた話
13.
Context 4 大規模エンタープライズプロジェクト向けの WEBアプリケーションフレームワーク 4 言語はJava やりたいこと 4
いつまでもリファクタリングし続けたい 4 要望へスピーディーに対応してリリースしたい
14.
でも大規模プロジェクトの 基盤って 4 一旦リリースした後の変更は膨大なテストをパ スさせないかぎり無理 4 基本的に嫌がられる
15.
でも変更し続けたい
16.
どうしよう
17.
前例を作ろう
18.
膨大なテストを自動 化し、リリース実績 を積んでゴリ押しす る感じでやってみま した
19.
テスト構成 4 ユニットテスト&コンポーネントテスト Junitで個々のコンポーネントをテスト 4 結合テスト Junit&Fluentleniumを使った機能別マルチ ブラウザテスト 4
総合テスト Junit&Fluentleniumを使ったブラウザテス トで実業務アプリを模したアプリのシナリオテ スト
20.
さらにこれらを Jenkinsで常時実行 する
21.
ブラウザテストを常 時実行する環境って
22.
Selenium Grid vs Jenkins
Slave
23.
Selenium Grid
24.
Selenium Gridの構成
25.
メリット 4 消費するクライアントリソースが少ない 4 テストが速い デメリット 4
ブラウザ実行ホストのアドレスをサーバが知っ ている必要がある 4 ブラウザ実行ホストにサーバを常駐させる必要 がある
26.
Jenkins Slave
27.
Jenkins Slaveの構成
28.
メリット 4 CIサーバはブラウザ実行ホストのアドレスを知 らなくても良い 4 WebBrowser実行ホスト側にサーバをセット アップしなくて良い デメリット 4
JenkinsのJobそのものを実行するため消費リ ソースが多い
29.
構成の簡単さで今回 はJenkins Slaveを選 択
30.
いざテストを始める と
31.
テストが不安定
32.
原因 1. CIサーバとWebBrowser実行ホスト間のネッ トワーク 2. WebBrowser実行ホストの物理的故障 3.
タイミングに依存したテスト
33.
1. CIサーバ、WebBrowser実行ホス ト間のネットワーク 4 ネットワークが切れやすくテストが失敗する connection
resetが頻発とか 4 ネットワークが遅すぎてテストが失敗する time outとか
34.
2. WebBrowser実行ホストの物理 的故障 4 電源周りとか壊れやすい 4
クライアントマシン(PC)は常時可動するよう に作られていない
35.
1.と2.の解決策
36.
仮想化 ネットワーク的に近い場所でJenkins Slaveや、 Seleniumサーバ複数を常時起動させられるため、 仮想化するのが理想 4 課題 WindowsやLinuxは簡単に仮想化できるが… Mac/IOSは…
37.
3. タイミングに依存したテスト 4 Thread.sleep()を使っている 1.
シンプルに作ったテストケースで何故か失 敗する場所をThread.sleep()を入れてごま かす 2. 成功したり失敗したりで安定しない 3. sleepする量や場所を増やす 4. 2と3を繰り返すも安定しないうえに、ひた すら遅いテストになる
38.
本当の原因 DOM構造の変わらない画面操作
39.
例 4 一覧表のページング 4 Ajaxによる値の書き換え
40.
解決策 アサートの成功を待つ
41.
アサートの成功を待つ 4 何らかの画面操作の後は必ず何らかの値のアサ ートを行っている 4 DOMの構造が変わらなくてもアサート対象の 値は変わっている なので…
42.
値が期待する値に変 わるのをタイムアウ ト値を指定して待ち タイムアウトしたら AssertionErrorとみ なす!
43.
どーやって待つのか
44.
Selenium WebDriverの場合 driver.findElement(By.id("updateButton")).click() new WebDriverWait(driver,
3).until( ExpectedConditions .textToBePresentInElementLocated(By.id("message"), "更新しました") ); Timeout時のメッセージ org.openqa.selenium.TimeoutException:Timed out after 3 seconds waiting for text ('更新しました') to be present in element found by By.id: message 思ったより良い感じ
45.
Fluentleniumの場合 click("#updateButton"); await().atMost(3, TimeUnit.SECONDS).until("#message").hasText("更新しました"); Timeout時のメッセージ org.openqa.selenium.TimeoutException: Timed
out after 3 seconds: Selector #message has not the text 更新しました. やっぱりこっちのが良い
46.
Gebの場合 $("#updateButton").click(); waitFor(3) { assert
$("#message").text() == "更新しました" } Timeout時のメッセージ assert $("#message").text() == "更新しました" | | | | "" false [[[[[FirefoxDriver: firefox on MAC (ry PowerAssertすごい ※但しIDEAに限る ※PowerAssertはGebというよりSpockの特徴
47.
こんな感じでやって みて大体のテストは 安定し、現時点では 1日でリリースがで きるようになった
48.
残る問題 1. 画面のテストは変更がめんどくさい 2. ファイルアップロードの自動化
49.
1. 変更が面倒
50.
Page Object Pattern で画面と対になる Page
Objectに画面構 造を隠 し、テスト を守る
51.
2. ファイルアップロ ード…
52.
最近のブラウザはセ キュリティが厳しく てプログラムからフ ァイル指定させてく れない
53.
ファイルアップロードの解決 策の候補たち 4 Wsh (Windowsでは定番っぽい?) 4
Sikuli (安定を望む) 4 java.awt.Robotで座標指定クリック (...なつ かしい) 4 アプリ側をHTML5のFileAPIとAjaxで実装す る (IEが…) ※試せていません…
54.
現状決定打になるも のがないのではと勝 手に思っている
55.
まとめ sleepダメ絶対
Jetzt herunterladen