Download - Selenide or Geb 〜あなたはその時どちらを使う〜
![Page 1: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/1.jpg)
Selenide or Geb?〜あなたはその時どちらを使う〜
JJUG CCC Fall 2017@shimashima35 & @PoohSunny
![Page 2: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/2.jpg)
このセッションでは
![Page 3: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/3.jpg)
Seleniumを使う上で、Selenide, Gebどっちを使えばいいの?を考えます。
● とはいえ最初はそれぞれの概略から
● それぞれの推しポイント
● 使った際のメリット、デメリット
● で、どういう時にどちらを使えばいいの?
途中の質問&ご意見大歓迎です!!
![Page 4: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/4.jpg)
自己紹介:Selenide担当
● Bio○ 名前 島根義和
○ ピクシブ (New! 2017年11月から)○ Twitter : @shimashima35○ 15年以上Javaエンジニア、でもテストも好き。本当はソフトウェア工学が好き。
○ JaSST Tokyo実行委員 / JSTQB AL テストマネージャー取得 (New!)● Selenideとのかかわり
○ 前職でSelenideを使い始めた
○ WebDriver初経験がSelenide○ 生のWebDriverは使ったことがない
○ 「SelenideによるDSL風E2E自動テスト基盤開発の実例 」
![Page 5: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/5.jpg)
自己紹介:Geb担当
● @PoohSunny○ ある事業会社の開発リーダー
○ Java, Swift, Groovy● Gebとのかかわり
○ 前職でGeb使い始める
○ 現職では紹介したり廃止したり
○ コントリビューター
○ CodeZineの連載Geb担当
![Page 6: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/6.jpg)
好評連載中!
![Page 7: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/7.jpg)
好評連載中!
最新化して
書籍化決定!
〜デブサミ〜
![Page 8: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/8.jpg)
よろしくお願いします
![Page 9: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/9.jpg)
まずは概略
![Page 10: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/10.jpg)
![Page 11: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/11.jpg)
紹介:Selenide
● エストニアのCodeborne社 Andrei Solntsev氏によって開発
が行われているJava製WebDriverラッパー。
○ GitHub上で積極的に開発が行われている。
○ 現在 Ver 4.8○ 1,2 ヶ月毎にバージョンアップ
● DSLを用いたjQuery風セレクタなどを提供。
● IDEによる補完を積極的に利用することで、容易に利用するこ
とができる。
● 要素取得時の待ち暗黙的に行う。
○ AJAXなどの非同期処理の返りの処理記述が容易。
![Page 12: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/12.jpg)
![Page 13: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/13.jpg)
紹介:Geb
● Groovy製のSeleniumラッパー
○ 現在のバージョンは2.0● DSLを用いたjQuery風セレクタなどを提供。(Selenideと一緒)● Groovyの機能をふんだんに利用した、超簡潔な記述がウリ
○ 柔軟なwaitも使いやすい
![Page 14: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/14.jpg)
![Page 15: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/15.jpg)
![Page 16: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/16.jpg)
Pros and Cons
![Page 17: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/17.jpg)
Pros/Cons : Selenide
● Pros○ 簡単に利用できる/学習コストが低い
○ Seleniumの知識はほぼ不要
○ IDEとの親和性が高い
○ 標準でAjaxなどの待ち処理対応
○ Enterprise Support (New!)○ Java
● Cons ○ 日本語情報が(まだ)少ない
○ 対話的に使うことができない
■ IDE上のデバッグで代用
■ Java9 JShell で可能かも
![Page 18: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/18.jpg)
Pros/Cons : Geb
● Pros○ 簡潔な記述
○ 豊富な機能群
○ 豊富なエコシステム
○ 日本語情報はSelenideに比べると多め
○ 簡単に利用できる
● Cons ○ 学習コストが高め
■ Gebそのものもそうだが、GroovyやGradleも手を出す
と大変
○ IDEの補完が効きづらい
■ IntelliJ IDEAを利用したり、多少補完を効かせる方法
はある
![Page 19: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/19.jpg)
いくつかの体験談
![Page 20: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/20.jpg)
経験談:初めてのSelenium(Selenide)
● SeleniumでのE2Eテスト導入を担当
○ Selenium、Selenideとも未経験
○ SelenideはWebサイトを見ていただけ
Selenideのサンプル通りに書き何も躓かずに動いた。
そのまま1週間程度で簡単なシナリオ完成。
![Page 21: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/21.jpg)
経験談:Jenkinsで不安定
● Jenkinsで不安定
○ 手元で通るのにJenkinsに載せると失敗する
○ デフォルトで待ち処理が入っているのに……○ 録画機能などを使わないと原因追及が困難
生のSeleniumよりはましかもしれないが、安定化はやはり大変
![Page 22: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/22.jpg)
経験談:マルチブラウザテストの導入
● マルチブラウザのテストがしたい
○ でも最初に辛い思いはしたくない
■ 開発時にphantomjsを利用
○ Chrome -> Firefox、と展開
● クラウド上のブラウザでやりたい
○ Sauce labsを利用
GebConfigの書き換え(Driverの生成処理の変更)で実現でき、
対応が楽だった。
![Page 23: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/23.jpg)
経験談:運用が始まってからテストが落ちる→記述の簡潔さに助かるimport geb.Pageimport 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 }}
![Page 24: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/24.jpg)
Selenide or Geb?
![Page 25: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/25.jpg)
外的要因
● Groovyが使えるか
● 知名度/利用実績
○ Selenideは弱い
● 商用サポートの有無
○ Selenideは日本語ではないが、商用サポート
が始まった
![Page 26: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/26.jpg)
内的要因:読むか書くか
● 記述量/記述性 どちらを優先させるか
○ Gebは記述量が少ない
○ Selenideは記述性(IDEによる補完)がよい
![Page 27: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/27.jpg)
内的要因:学習コスト
● SelenideはIDEの力を借りやすく、初見でもある程
度書ける
● Gebは相対的に習得コストは高め。ただし機能は
豊富なので慣れると便利。
![Page 28: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/28.jpg)
内的要因:テスティングフレームワーク
● テストティングフレームワーク
○ GebはGroovyなのでSpockが使える
○ SelenideはJUnit/TestNGなど
■ アサーションもある程度同梱
○ データ駆動などをするならSpockが優位
![Page 29: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/29.jpg)
内的要因:さくっと動かす
● 対話環境
○ Gebはgroovysh○ SelenideはJShellがもしかしたら使えるかも……
■ IDE+Debugで似たようなことは今までもな
んとかできた
● Groovyはスクリプトとして動かすという手も
![Page 30: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/30.jpg)
まとめに変えて
![Page 31: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/31.jpg)
あなたは「その時」どちらを使う?
● コンテクストは様々
○ その時々で良し悪しは変わる
![Page 32: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/32.jpg)
タイミングを味方にして良いSelenide or Gebライフを!
![Page 33: Selenide or Geb 〜あなたはその時どちらを使う〜](https://reader034.vdocuments.pub/reader034/viewer/2022052117/5a6478c77f8b9a2c568b465f/html5/thumbnails/33.jpg)
おしまい