30
Selenium Conference 参参参参 サササササササササ ササ ササ 2015/10/20 Selenium サササ サササササ

Selenium Conference 2015 参加報告

Embed Size (px)

Citation preview

Page 1: Selenium Conference 2015 参加報告

Selenium Conference 参加報告

サイボウズ株式会社 宮田 淳平2015/10/20 Selenium 勉強会@サイボウズ

Page 2: Selenium Conference 2015 参加報告

自己紹介

▌宮田 淳平

▌サイボウズ入社 7 年目生産性向上チーム所属

▌趣味:ランニング一昨日、四万十川ウルトラマラソン 100km 完走!

▌11/17 に『アジャイルアカデミー Selenium Boot Camp 』のチューターやりますテスト自動化入門者向けの有料講座

2

Page 3: Selenium Conference 2015 参加報告

今日の内容

▌Selenium Conference とは?

▌会場の雰囲気

▌おもしろかったセッション紹介

3

Page 4: Selenium Conference 2015 参加報告

Selenium Conference とは?

▌Selenium についてのカンファレンス

▌今年で 5 回目で、 9/8-9/10 にポートランドで開催開催地は毎年変わっており、過去にサンフランシスコ、ロンドン、

ボストン、バンガロールで開催されている

▌参加チケットは早く買うほど安い$249→$349→$449

4

Page 5: Selenium Conference 2015 参加報告

スケジュール

▌一日目がワークショップ型のセッション中心、二日目・三日目が通常のセッション自分は二日目からの参加

▌通常のセッションはすべてビデオが公開されているhttp://confengine.com/selenium-conf-2015/scheduleスライドも 9 割方公開されている

5

Page 6: Selenium Conference 2015 参加報告

Portland

▌街が綺麗で住みやすそう

6

Page 7: Selenium Conference 2015 参加報告

会場の様子

7

Page 8: Selenium Conference 2015 参加報告

8

Page 9: Selenium Conference 2015 参加報告

9

Page 10: Selenium Conference 2015 参加報告

全体の雰囲気

▌ 会場のほとんどの人は業務で Selenium を使っている

▌ いわゆる記録再生形式のツール (IDE/Builder) の話はほぼない一つだけあるけど辛い内容Why Building Record/Playback Tools Is So Hard

▌ 中級者以上向けセッションは Beginner, Intermediate, Advanced と分類されているけど、

Beginner と書かれているものでもある程度 Selenium の知識がないと厳しそう

▌ 質疑応答は活発で、食事中でも参加者同士の議論が行われてたり10

Page 11: Selenium Conference 2015 参加報告

おもしろかったセッション

11

Page 12: Selenium Conference 2015 参加報告

Selenium: State of the Union

▌WebDriver の生みの親 Simon Stewart(Facebook) によるKeynote

▌前半は Web のトレンドの移り変わり

▌後半はモバイルの自動テストの話Android は selendroid とか appium で OKiOS はフレームワークが変わったり速度が遅かったりで辛い

▌Facebook はこの問題を解決するために WebDriverAgent とFBSimulatorControl をオープンソースで公開

12

Page 13: Selenium Conference 2015 参加報告

WebDriverAgent

▌iOS 用の WebDriver サーバー実機じゃなくてシミュレータ用

▌アプリを横断してテスト可能

▌速いappium だと javascript を経由して操作するため遅いWebDriverAgent は private な API を直接呼び出すため速い

▌安定するという噂

13

Page 14: Selenium Conference 2015 参加報告

FBSimulatorControl

▌iOS シミュレータを管理するためのもの

▌シミュレータを複数起動できる実機は遅延があるこれまでシミュレータは一つしか起動できなかった

▌WebDriverAgent も FBSimulatorControl も appium に取り込まれそう

14

Page 15: Selenium Conference 2015 参加報告

Selenide: Concise UI Tests in Java

▌Selenide という Java で書かれたオープンソースのSelenium クライアントライブラリの紹介通常の Selenium クライアントのラッパーSelenium界の jQuery みたいなもの

▌通常の Selenium クライアントは冗長で不安定

▌Selenide は簡潔で安定テストを書く上ではまりがちな問題を気にしなくてよくなる

▌ビジネスロジックに集中できるようにするのが目的15

Page 16: Selenium Conference 2015 参加報告

Selenide: concise API@Testpublic void userCanLogin() {

open("http://localhost:8080/login"); $(By.name("user.name")).setValue("john"); $("#submit").click(); $(".menu").shouldHave(text("Hello, John!"));

}

https://docs.google.com/presentation/d/1ZksjuL2vPN_pkhMuon0HH4gm7KNmjU50pByRRGzgVko/edit#slide=id.ga5fa11dc4_033

Page 17: Selenium Conference 2015 参加報告

1. smart waiting

$(".loading_progress").shouldBe(visible);

$("#menu").shouldHave(text("Hello, John!"));

$(By.name("gender")).shouldNotBe(selected);

$(By.name("gender")).should(disappear);forget the

ajax!https://docs.google.com/presentation/d/1ZksjuL2vPN_pkhMuon0HH4gm7KNmjU50pByRRGzgVko/edit#slide=id.ga5fa11dc4_033

Page 18: Selenium Conference 2015 参加報告

3. Collections$$(“#employees tbody tr”).shouldHave( texts( “John Belushi”, “Bruce Willis”, “John Malkovich” ));

https://docs.google.com/presentation/d/1ZksjuL2vPN_pkhMuon0HH4gm7KNmjU50pByRRGzgVko/edit#slide=id.ga5fa11dc4_033

Page 19: Selenium Conference 2015 参加報告

4. Automated screenshots

https://docs.google.com/presentation/d/1ZksjuL2vPN_pkhMuon0HH4gm7KNmjU50pByRRGzgVko/edit#slide=id.ga5fa11dc4_033

Page 20: Selenium Conference 2015 参加報告

9. sizzle selectors

https://docs.google.com/presentation/d/1ZksjuL2vPN_pkhMuon0HH4gm7KNmjU50pByRRGzgVko/edit#slide=id.ga5fa11dc4_033

Page 21: Selenium Conference 2015 参加報告

10. Selenide profilerReport for userCanReplyToIncomingMessages(ui.BankMessagesSpec)+----------------------+---------------------------------------------+--------+----------+|Element |Subject |Status |ms. |+----------------------+---------------------------------------------+--------+----------+|open |http://localhost:2070/ |PASSED |4669 ||open |http://localhost:2070/fakeLogin?username=bob |PASSED |1324 ||By.linkText: Quicky |click() |PASSED |793 ||#btn-message-reply |click() |PASSED |1002 ||By.name: message.text |should be(focused) |PASSED |57 ||By.name: message.text |should have(text 'long thread') |PASSED |47 ||By.name: message.text |set value(Hello world!) |PASSED |69 ||#send-button |click() |PASSED |1051 ||.alert-success |should be(visible) |PASSED |71 |+--------------------+-----------------------------------------------+--------+----------+

https://docs.google.com/presentation/d/1ZksjuL2vPN_pkhMuon0HH4gm7KNmjU50pByRRGzgVko/edit#slide=id.ga5fa11dc4_033

Page 22: Selenium Conference 2015 参加報告

11. fast set valueProblem:

WebElement.sendKeys() is slow

Solution:mvn -Dselenide.fastSetValue=true

https://docs.google.com/presentation/d/1ZksjuL2vPN_pkhMuon0HH4gm7KNmjU50pByRRGzgVko/edit#slide=id.ga5fa11dc4_033

Page 23: Selenium Conference 2015 参加報告

Selenide: Concise UI Tests in Java

▌部分的に導入できるので、 Selenium テストを一から始めるチームはもちろん、既に Selenium 書いてるチームでも使えそうJava限定だけど・・・

▌誰か実際の運用体験談お願いします!

23

Page 24: Selenium Conference 2015 参加報告

Distributed Automation Using Selenium Grid / AWS / Autoscaling

▌Expedia が autoscale する Selenium Grid を AWS 上で構築している話

▌構成と費用感、ハマリポイントなど並列数を増やしていくと jenkins側や帯域などが問題になってくるChrome より Firefox の方が消費するリソースが少ないらしい

24

Page 25: Selenium Conference 2015 参加報告

GRID TOPOLOGy - 1

HUB

Jenkin s Job

• parallel execution for small projects• 1 executor - 1 hub - 11 nodes• eg: c3.8xlarge can execute 250*+ tests in parallel• Test run would finish in ~5mins

c3.8xlarge

c3.8xlarge

c3.xlarge

25

….

https://www.slideshare.net/slideshow/embed_code/key/H7QmI1pAf2r9u7

Page 26: Selenium Conference 2015 参加報告

GRID TOPOLOGy - 2

HUB

Job Execut or

Job Execut or

• Suitable for medium size projects (500+ tests)• More tests by adding one more executor (2

executors 1 hub and 22 node),this could double your parallel execution cases

c3.8xlarge

c3.8xlarge

c3.xlarge

26

….

….

https://www.slideshare.net/slideshow/embed_code/key/H7QmI1pAf2r9u7

Page 27: Selenium Conference 2015 参加報告

GRID TOPOLOGy - 4

HUB

HUB

• Use two hubs to double

the tests (1000+)• But speed is same as

topology 2 (~5mins)• Double the cost

c3.8xlargec3.xlarge

27

https://www.slideshare.net/slideshow/embed_code/key/H7QmI1pAf2r9u7

Page 28: Selenium Conference 2015 参加報告

Distributed Automation Using Selenium Grid / AWS / Autoscaling

▌ちょうど Selenium Grid をクラウドに移動しようとしてたのでとても参考になった

▌うらやましい環境ではあるけど、正直がんばりすぎ&コストかけすぎ感jenkins と hub は常時立ち上げてないといけないので、どう考えて

も月に数千ドル〜数万ドルのコスト

▌UI テストの数は極力減らしましょうみたいな話もあってやはりどこも苦労してる印象

Page 29: Selenium Conference 2015 参加報告

まとめ

▌取り上げたセッション以外にも性能テストやビジュアルテストの話など話題が豊富でした

▌個人的には自分の業務に関係あるトピックが多く、会場の盛り上がりなどからもとてもよい刺激を受けることができました

▌資料は後からでも手に入るので、 Selenium コミュニティの人とコミュニケーションできるのが最大のメリット自分は議論するのは厳しかったので、語学力向上したらまた行って

みたいです 29

Page 30: Selenium Conference 2015 参加報告

WE ARE HIRING!

30

Selenium を探求したい方はぜひサイボウズへ!http://cybozu.co.jp/company/job/recruitment/