Submit Search
Upload
Selenide or Geb 〜あなたはその時どちらを使う〜
•
2 likes
•
4,815 views
Youtarou TAKAHASHI
Follow
#jjug_ccc Fall 2017での発表資料です。 #ccc_c1 http://www.java-users.jp/ccc2017fall/
Read less
Read more
Technology
Report
Share
Report
Share
1 of 33
Download now
Download to read offline
Recommended
Tddbc sapporo 2_0
Tddbc sapporo 2_0
irasally omuko
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
Takaaki Kasai
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
Kazuhiro Sera
Jenkins & Test
Jenkins & Test
irof N
スクラムマスター1年生⇒2年生
スクラムマスター1年生⇒2年生
Taichi Watanabe
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
SHIFT Inc.
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
虎の穴 開発室
特大のヤラカシからの復活 -俺とみんながテストコードを書き出すまで-
特大のヤラカシからの復活 -俺とみんながテストコードを書き出すまで-
Taichi Watanabe
Recommended
Tddbc sapporo 2_0
Tddbc sapporo 2_0
irasally omuko
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
Takaaki Kasai
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
Kazuhiro Sera
Jenkins & Test
Jenkins & Test
irof N
スクラムマスター1年生⇒2年生
スクラムマスター1年生⇒2年生
Taichi Watanabe
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
SHIFT Inc.
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
虎の穴 開発室
特大のヤラカシからの復活 -俺とみんながテストコードを書き出すまで-
特大のヤラカシからの復活 -俺とみんながテストコードを書き出すまで-
Taichi Watanabe
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
Ryosuke Uchitate
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
aha_oretama
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
プロジェクト名は重要 ~一度浸透したプロジェクト名を変える話~ #opendevcon
プロジェクト名は重要 ~一度浸透したプロジェクト名を変える話~ #opendevcon
ik-fib
青空文庫のWebアプリ(月8000万PV)への活用事例
青空文庫のWebアプリ(月8000万PV)への活用事例
pawa_
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Kohei Saito
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座
Yusuke Suzuki
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
Java9を迎えた今こそ!Java本格(再)入門
Java9を迎えた今こそ!Java本格(再)入門
Takuya Okada
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
tty fky
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
Yuki Morishita
将来 自分で サービスを持ちたいエンジニアの葛藤
将来 自分で サービスを持ちたいエンジニアの葛藤
Yoshio Kajikuri
高速なソートアルゴリズムを書こう!!
高速なソートアルゴリズムを書こう!!
masakazu matsubara
Javaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチ
CData Software Japan
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
CData Software Japan
JVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメ
Yoshiaki Shibutani
すし × TDD #sushiruit
すし × TDD #sushiruit
Youtarou TAKAHASHI
What makes Geb groovy?
What makes Geb groovy?
Youtarou TAKAHASHI
More Related Content
Viewers also liked
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
Ryosuke Uchitate
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
aha_oretama
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
プロジェクト名は重要 ~一度浸透したプロジェクト名を変える話~ #opendevcon
プロジェクト名は重要 ~一度浸透したプロジェクト名を変える話~ #opendevcon
ik-fib
青空文庫のWebアプリ(月8000万PV)への活用事例
青空文庫のWebアプリ(月8000万PV)への活用事例
pawa_
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Kohei Saito
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座
Yusuke Suzuki
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
Java9を迎えた今こそ!Java本格(再)入門
Java9を迎えた今こそ!Java本格(再)入門
Takuya Okada
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
tty fky
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
Yuki Morishita
将来 自分で サービスを持ちたいエンジニアの葛藤
将来 自分で サービスを持ちたいエンジニアの葛藤
Yoshio Kajikuri
高速なソートアルゴリズムを書こう!!
高速なソートアルゴリズムを書こう!!
masakazu matsubara
Javaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチ
CData Software Japan
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
CData Software Japan
JVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメ
Yoshiaki Shibutani
Viewers also liked
(20)
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
プロジェクト名は重要 ~一度浸透したプロジェクト名を変える話~ #opendevcon
プロジェクト名は重要 ~一度浸透したプロジェクト名を変える話~ #opendevcon
青空文庫のWebアプリ(月8000万PV)への活用事例
青空文庫のWebアプリ(月8000万PV)への活用事例
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
Java9を迎えた今こそ!Java本格(再)入門
Java9を迎えた今こそ!Java本格(再)入門
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
将来 自分で サービスを持ちたいエンジニアの葛藤
将来 自分で サービスを持ちたいエンジニアの葛藤
高速なソートアルゴリズムを書こう!!
高速なソートアルゴリズムを書こう!!
Javaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチ
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
JVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメ
More from Youtarou TAKAHASHI
すし × TDD #sushiruit
すし × TDD #sushiruit
Youtarou TAKAHASHI
What makes Geb groovy?
What makes Geb groovy?
Youtarou TAKAHASHI
普通のエンジニアがテストエンジニアに助けてもらいたかったこと #automatornight
普通のエンジニアがテストエンジニアに助けてもらいたかったこと #automatornight
Youtarou TAKAHASHI
レガシーコードでTDD力を高めよう #agilesamurai
レガシーコードでTDD力を高めよう #agilesamurai
Youtarou TAKAHASHI
ペアプロデモの裏話 #tddbc
ペアプロデモの裏話 #tddbc
Youtarou TAKAHASHI
TDDでレガシーコードに立ち向かう
TDDでレガシーコードに立ち向かう
Youtarou TAKAHASHI
Db unitを使って なれる! レガシーコードメンテナー
Db unitを使って なれる! レガシーコードメンテナー
Youtarou TAKAHASHI
More from Youtarou TAKAHASHI
(7)
すし × TDD #sushiruit
すし × TDD #sushiruit
What makes Geb groovy?
What makes Geb groovy?
普通のエンジニアがテストエンジニアに助けてもらいたかったこと #automatornight
普通のエンジニアがテストエンジニアに助けてもらいたかったこと #automatornight
レガシーコードでTDD力を高めよう #agilesamurai
レガシーコードでTDD力を高めよう #agilesamurai
ペアプロデモの裏話 #tddbc
ペアプロデモの裏話 #tddbc
TDDでレガシーコードに立ち向かう
TDDでレガシーコードに立ち向かう
Db unitを使って なれる! レガシーコードメンテナー
Db unitを使って なれる! レガシーコードメンテナー
Recently uploaded
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Recently uploaded
(9)
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Selenide or Geb 〜あなたはその時どちらを使う〜
1.
Selenide or Geb? 〜あなたはその時どちらを使う〜 JJUG
CCC Fall 2017 @shimashima35 & @PoohSunny
2.
このセッションでは
3.
Seleniumを使う上で、Selenide, Gebどっちを使えばい いの?を考えます。 ● とはいえ最初はそれぞれの概略から ●
それぞれの推しポイント ● 使った際のメリット、デメリット ● で、どういう時にどちらを使えばいいの? 途中の質問&ご意見大歓迎です!!
4.
自己紹介:Selenide担当 ● Bio ○ 名前
島根義和 ○ ピクシブ (New! 2017年11月から) ○ Twitter : @shimashima35 ○ 15年以上Javaエンジニア、でもテストも好き。本当はソフトウェア工学が好き。 ○ JaSST Tokyo実行委員 / JSTQB AL テストマネージャー取得 (New!) ● Selenideとのかかわり ○ 前職でSelenideを使い始めた ○ WebDriver初経験がSelenide ○ 生のWebDriverは使ったことがない ○ 「SelenideによるDSL風E2E自動テスト基盤開発の実例 」
5.
自己紹介:Geb担当 ● @PoohSunny ○ ある事業会社の開発リーダー ○
Java, Swift, Groovy ● Gebとのかかわり ○ 前職でGeb使い始める ○ 現職では紹介したり廃止したり ○ コントリビューター ○ CodeZineの連載Geb担当
6.
好評連載中!
7.
好評連載中! 最新化して 書籍化決定! 〜デブサミ〜
8.
よろしくお願いします
9.
まずは概略
10.
11.
紹介:Selenide ● エストニアのCodeborne社 Andrei
Solntsev氏によって開発 が行われているJava製WebDriverラッパー。 ○ GitHub上で積極的に開発が行われている。 ○ 現在 Ver 4.8 ○ 1,2 ヶ月毎にバージョンアップ ● DSLを用いたjQuery風セレクタなどを提供。 ● IDEによる補完を積極的に利用することで、容易に利用するこ とができる。 ● 要素取得時の待ち暗黙的に行う。 ○ AJAXなどの非同期処理の返りの処理記述が容易。
12.
13.
紹介:Geb ● Groovy製のSeleniumラッパー ○ 現在のバージョンは2.0 ●
DSLを用いたjQuery風セレクタなどを提供。(Selenideと一緒) ● Groovyの機能をふんだんに利用した、超簡潔な記述がウリ ○ 柔軟なwaitも使いやすい
14.
15.
16.
Pros and Cons
17.
Pros/Cons : Selenide ●
Pros ○ 簡単に利用できる/学習コストが低い ○ Seleniumの知識はほぼ不要 ○ IDEとの親和性が高い ○ 標準でAjaxなどの待ち処理対応 ○ Enterprise Support (New!) ○ Java ● Cons ○ 日本語情報が(まだ)少ない ○ 対話的に使うことができない ■ IDE上のデバッグで代用 ■ Java9 JShell で可能かも
18.
Pros/Cons : Geb ●
Pros ○ 簡潔な記述 ○ 豊富な機能群 ○ 豊富なエコシステム ○ 日本語情報はSelenideに比べると多め ○ 簡単に利用できる ● Cons ○ 学習コストが高め ■ Gebそのものもそうだが、GroovyやGradleも手を出す と大変 ○ IDEの補完が効きづらい ■ IntelliJ IDEAを利用したり、多少補完を効かせる方法 はある
19.
いくつかの体験談
20.
経験談:初めてのSelenium(Selenide) ● SeleniumでのE2Eテスト導入を担当 ○ Selenium、Selenideとも未経験 ○
SelenideはWebサイトを見ていただけ Selenideのサンプル通りに書き何も躓かずに動いた。 そのまま1週間程度で簡単なシナリオ完成。
21.
経験談:Jenkinsで不安定 ● Jenkinsで不安定 ○ 手元で通るのにJenkinsに載せると失敗する ○
デフォルトで待ち処理が入っているのに…… ○ 録画機能などを使わないと原因追及が困難 生のSeleniumよりはましかもしれないが、安定化はやはり大変
22.
経験談:マルチブラウザテストの導入 ● マルチブラウザのテストがしたい ○ でも最初に辛い思いはしたくない ■
開発時にphantomjsを利用 ○ Chrome -> Firefox、と展開 ● クラウド上のブラウザでやりたい ○ Sauce labsを利用 GebConfigの書き換え(Driverの生成処理の変更)で実現でき、 対応が楽だった。
23.
経験談:運用が始まってからテストが落ちる →記述の簡潔さに助かる import geb.Page import geb.spock.GebSpec class
LoginSpec extends GebSpec { def "login to admin section"() { given: to LoginPage when: loginForm.with { username = "admin" password = "password" } and: loginButton.click() then: at AdminPage } }
24.
Selenide or Geb?
25.
外的要因 ● Groovyが使えるか ● 知名度/利用実績 ○
Selenideは弱い ● 商用サポートの有無 ○ Selenideは日本語ではないが、商用サポート が始まった
26.
内的要因:読むか書くか ● 記述量/記述性 どちらを優先させるか ○
Gebは記述量が少ない ○ Selenideは記述性(IDEによる補完)がよい
27.
内的要因:学習コスト ● SelenideはIDEの力を借りやすく、初見でもある程 度書ける ● Gebは相対的に習得コストは高め。ただし機能は 豊富なので慣れると便利。
28.
内的要因:テスティングフレームワーク ● テストティングフレームワーク ○ GebはGroovyなのでSpockが使える ○
SelenideはJUnit/TestNGなど ■ アサーションもある程度同梱 ○ データ駆動などをするならSpockが優位
29.
内的要因:さくっと動かす ● 対話環境 ○ Gebはgroovysh ○
SelenideはJShellがもしかしたら使えるかも…… ■ IDE+Debugで似たようなことは今までもな んとかできた ● Groovyはスクリプトとして動かすという手も
30.
まとめに変えて
31.
あなたは「その時」どちらを使う? ● コンテクストは様々 ○ その時々で良し悪しは変わる
32.
タイミングを味方にして 良いSelenide or Gebライフを!
33.
おしまい
Download now