Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Selenide or Geb 〜あなたはその時どちらを使う〜

2,386 views

Published on

#jjug_ccc Fall 2017での発表資料です。 #ccc_c1
http://www.java-users.jp/ccc2017fall/

Published in: Technology
  • Be the first to comment

Selenide or Geb 〜あなたはその時どちらを使う〜

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

×