Upload
jumpei-miyata
View
3.571
Download
0
Embed Size (px)
Citation preview
Selenium Conference 参加報告
サイボウズ株式会社 宮田 淳平2015/10/20 Selenium 勉強会@サイボウズ
自己紹介
▌宮田 淳平
▌サイボウズ入社 7 年目生産性向上チーム所属
▌趣味:ランニング一昨日、四万十川ウルトラマラソン 100km 完走!
▌11/17 に『アジャイルアカデミー Selenium Boot Camp 』のチューターやりますテスト自動化入門者向けの有料講座
2
今日の内容
▌Selenium Conference とは?
▌会場の雰囲気
▌おもしろかったセッション紹介
3
Selenium Conference とは?
▌Selenium についてのカンファレンス
▌今年で 5 回目で、 9/8-9/10 にポートランドで開催開催地は毎年変わっており、過去にサンフランシスコ、ロンドン、
ボストン、バンガロールで開催されている
▌参加チケットは早く買うほど安い$249→$349→$449
4
スケジュール
▌一日目がワークショップ型のセッション中心、二日目・三日目が通常のセッション自分は二日目からの参加
▌通常のセッションはすべてビデオが公開されているhttp://confengine.com/selenium-conf-2015/scheduleスライドも 9 割方公開されている
5
Portland
▌街が綺麗で住みやすそう
6
会場の様子
7
8
9
全体の雰囲気
▌ 会場のほとんどの人は業務で Selenium を使っている
▌ いわゆる記録再生形式のツール (IDE/Builder) の話はほぼない一つだけあるけど辛い内容Why Building Record/Playback Tools Is So Hard
▌ 中級者以上向けセッションは Beginner, Intermediate, Advanced と分類されているけど、
Beginner と書かれているものでもある程度 Selenium の知識がないと厳しそう
▌ 質疑応答は活発で、食事中でも参加者同士の議論が行われてたり10
おもしろかったセッション
11
Selenium: State of the Union
▌WebDriver の生みの親 Simon Stewart(Facebook) によるKeynote
▌前半は Web のトレンドの移り変わり
▌後半はモバイルの自動テストの話Android は selendroid とか appium で OKiOS はフレームワークが変わったり速度が遅かったりで辛い
▌Facebook はこの問題を解決するために WebDriverAgent とFBSimulatorControl をオープンソースで公開
12
WebDriverAgent
▌iOS 用の WebDriver サーバー実機じゃなくてシミュレータ用
▌アプリを横断してテスト可能
▌速いappium だと javascript を経由して操作するため遅いWebDriverAgent は private な API を直接呼び出すため速い
▌安定するという噂
13
FBSimulatorControl
▌iOS シミュレータを管理するためのもの
▌シミュレータを複数起動できる実機は遅延があるこれまでシミュレータは一つしか起動できなかった
▌WebDriverAgent も FBSimulatorControl も appium に取り込まれそう
14
Selenide: Concise UI Tests in Java
▌Selenide という Java で書かれたオープンソースのSelenium クライアントライブラリの紹介通常の Selenium クライアントのラッパーSelenium界の jQuery みたいなもの
▌通常の Selenium クライアントは冗長で不安定
▌Selenide は簡潔で安定テストを書く上ではまりがちな問題を気にしなくてよくなる
▌ビジネスロジックに集中できるようにするのが目的15
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
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
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
4. Automated screenshots
https://docs.google.com/presentation/d/1ZksjuL2vPN_pkhMuon0HH4gm7KNmjU50pByRRGzgVko/edit#slide=id.ga5fa11dc4_033
9. sizzle selectors
https://docs.google.com/presentation/d/1ZksjuL2vPN_pkhMuon0HH4gm7KNmjU50pByRRGzgVko/edit#slide=id.ga5fa11dc4_033
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
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
Selenide: Concise UI Tests in Java
▌部分的に導入できるので、 Selenium テストを一から始めるチームはもちろん、既に Selenium 書いてるチームでも使えそうJava限定だけど・・・
▌誰か実際の運用体験談お願いします!
23
Distributed Automation Using Selenium Grid / AWS / Autoscaling
▌Expedia が autoscale する Selenium Grid を AWS 上で構築している話
▌構成と費用感、ハマリポイントなど並列数を増やしていくと jenkins側や帯域などが問題になってくるChrome より Firefox の方が消費するリソースが少ないらしい
24
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
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
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
Distributed Automation Using Selenium Grid / AWS / Autoscaling
▌ちょうど Selenium Grid をクラウドに移動しようとしてたのでとても参考になった
▌うらやましい環境ではあるけど、正直がんばりすぎ&コストかけすぎ感jenkins と hub は常時立ち上げてないといけないので、どう考えて
も月に数千ドル〜数万ドルのコスト
▌UI テストの数は極力減らしましょうみたいな話もあってやはりどこも苦労してる印象
まとめ
▌取り上げたセッション以外にも性能テストやビジュアルテストの話など話題が豊富でした
▌個人的には自分の業務に関係あるトピックが多く、会場の盛り上がりなどからもとてもよい刺激を受けることができました
▌資料は後からでも手に入るので、 Selenium コミュニティの人とコミュニケーションできるのが最大のメリット自分は議論するのは厳しかったので、語学力向上したらまた行って
みたいです 29
WE ARE HIRING!
30
Selenium を探求したい方はぜひサイボウズへ!http://cybozu.co.jp/company/job/recruitment/