「第1回 日本Seleniumユーザーコミュニティ勉強会」に参加してきました。
コミュニティ開催のごあいさつ【伊藤望さん】
日本Seleniumユーザーコミュニティは、Seleniumに関する分からないこと・困ったことについてユーザー同士で助け合うグループ。
https://groups.google.com/forum/#!forum/seleniumjp
早速、私も登録しました。
登録したけどメールが届かない人メールの設定を見直してくださいとのことなので、1日1通まとめメールが届くようにしました。
今回の申し込みアンケートでは、Seleniumは、やっぱりWebDriverを使っている人が一番多くて、次がSelenium IDE。言語はJavaが圧倒的に多い。
招待セッション(通訳あり)【Jason Hugginsさん】
Seleniumの生みの親であるJason Hugginsさんのお話。
Selenium
2004年、Seleniumが生まれた。
その頃、Ajaxなどが生まれ、テストがしにくく、それを解決するためにSeleniumを作った。
Seleniumはロボットのようなものだ。
Selenium Job Trends(Seleniumを使える人に対する求人)でみると、2007年くらいから人気になり、2012年くらいからはQTPを上回っている。
QTPはMercuryが作っていて、Mercuryは水銀という意味。Selenは水銀の毒性をとる物質。そうなってるね(^^)
Appium
今、mobileが本当に大きくなっている。mobileのテストを無視できない。
mobile向けのseleniumの位置づけのappiumをつくった。
クロスプラットフォーム(iphoneとandroidの両方に対応)で、ネイティブアプリとハイブリッドアプリに対応している。
githubでソースを公開している。twitterは@AppiumDev。
Appium Philosophy
Rule 1
Test the same app you submit to the marketplace
Rule 2
Write your tests in any language, using any framework
Rule 3
Use a standard automation specification and API
Rule 4
Build a large and thriving open-source community effort
AppiumはSelenium WebDriverを使っている。
Selenium WebDriverはW3C working draftになっている。
コードを書かないでいいように、ブラウザベンダーに対応させたい。
Appium Architecture
iOS
Android
クロスプラットフォーム対応しているので、1つのテストでiOSもAndroidもテストできる。
ここでAppiumとHealthcare.govのdemoがありました。
Sample code
Selenium 3はWebとmobileのテストの両方に対応しようとしている。
アメリカの電話では数字とアルファベットが対応していて、4723はipadとなる(^^)
SeleniumはRobotだ
ということで、本当にロボットをつくったよ。
tapsterbot.com
将来的にはSeleniumから操作できるようにしたい。
ここでtapsterbotのdemoがありました。
Sauce Labs?
宣伝じゃないよ(^^)
シミュレーターなどをクラウドで提供している。
どんなプラットフォーム、ブラウザにも対応。
Q&A
Q1:Selenium WebDriver, Client Server, Browserの3 つで動いている。Browserの進化にClientがどう追いつく仕組みになっている?
A1:Selenium3では、Browserについてはコミッターが責任を持たずに、Browser側に対応してもらう。非難がSeleniumにこないで、Googleにいくようにね(^^)
Q2:いつSelenium3がでる?
A2:Webページのタスクがすべて終われば。責任者も書いてるよ(^^) RCはなくなるので、WebDriverに移行するいいタイミング。
Q3:Selenium3って?(質問を聞きのがした・・・)
A3:ゴールはコードを書かないこと。Browserが全て対応するのには時間がかかるけど。
Q4:Appiumはmobileのブラウザのテストはできる?
A4:対応している。
Q5:WebDriver vapクラス???はどうなる???(質問がよくわからなかった・・・)
A5:私は答えられない。ごめんね。WebDriver1はすべてJavaScript。WebDriver2からはOSのネイティブイベントを使ってる。
Q6:Selenium3の新機能を教えて。mobile対応の他には?Selenium2との互換性は?
A6:Selenium2と互換性がある。Platformname, Platformversionが入れられる。mobile独自のAPIへの対応。デスクトップ関連は新機能はほとんどない。mobile対応が主な新機能。
Q7:Gebの動作がIEだと遅かったり、たくさん操作すると異常終了する。Selenium3になると性能や安定性は向上する?
A7:テストが遅いなら、多くのマシンを使うのがいいよ(^^)Seleniumの外の問題も多い。httpプロトコルを使う部分に問題が多い。GoogleがSpeedyというプロトコルを提出している。Selenium3では対応できないけどね(^^)
Q8:Appium Loadmap資料もらえる?
A8:いいよ。
Q9:Selenium IDEやBuilderの話をお願い。違いとか。
A9:比較するとそれだけで1講演できる。IDEは笠谷 真也さんがつくった。キャプチャー&リプレイの機能も将来的にサポートしていく。IDEもBuilderもFirefoxに依存している。でも、BuilderはFirefox依存を最低限にしている。Firefox以外への対応はBuilderが優れている。IDEの方がコミュニティは大きいけど、Builderの方が可能性がある。でも、Builderはたくさん改善の余地がある。Builderはundoがないなど、ユーザビリティに問題がある。
Q10:日本語を入力し、キーボードをタップするまでやるのが大変。キーボードを使わずに入力する方法はある?
A10:あるよ。デモの見栄えがいいからキーボードをタップさせてるだけ。直接テキストを入れられます。
Q11:Seleniumの正確な発音は?
A11:WikipediaでSelenのページに「ソフトウェアの話はこっち」ってリンクがある。eの発音が正しい。でも、イギリス英語みたいになっちゃう(^^) Alminiumをアメリカで違う発音するのと同じ。
Q12:テストは分析、設計、実行がある。Seleniumは実行?分析、設計までやって自動化では?
A12:Seleniumは実行。ロボットだ。実行だけでも要望がたくさんあるので、対象範囲を絞っている。実行の外は対象外。例えば、レポーティングとか。レポーティング機能のある製品もあるけどね。
Q13:WebDriverでテストしている。Jenkinsと連携するときに気を付けることは?
A13:JenkinsなどのCIサーバーとの連携が課題になる。JUnit、TestNGからXMLでテスト結果をXMLで取得できる。ブラウザのテストをするときに気を付けてほしいのは、エラー時にスクリーンショットをとること。スクリーンショットをgifアニメーションでとれる。Jenkinsを使うときもスクリーンショットなどを意識するとよい。
Q14:mobileのネイティブアプリのテストをしている。簡単にできる方法は?
A14:Appium InspectorはIDEやBuilderに似ている。まだiOSにしか対応していない。
ノンプログラマのためのSelenium DDTはじめの一歩【浦山 さつきさん】
Selenium IDEを使ったテストのデモ。
Excelからテストスクリプトをはきだし、Selenium IDEで読み込んでテストするツールをつくった。
簡単でしょ。
データ駆動テストにしてます。
Enterprise開発でのSelenium活用事例【大田尾 一作さん】
画面項目を自動で取得-->Excel-->データ駆動テスト。
ScreenShotを1行でとれるようにUtilを作成。
などなど
-->社内ライブラリ化
- name属性がない、id属性が動的に変動・・・こんなのは、見送り。
- 1回の実施では30%~2倍のコスト。継続的な使用で効果が得られる。
- エンプラでも使い始めている
- いきなり全部だと非効率。一部からはじめるとよい。
Jenkins×Selenium 最初の一歩【玉川 紘子さん】
Seleniumのテストは1回では元がとれない。
-->チームの意識が高くないと、すぐにテストが陳腐化してしまう。
-->Jenkinsで自動化。
JenkinsのSeleniumプラグインがたくさんある。
簡単で便利なものをご紹介。
Seleniumhq plugin
browser, startURLなどを設定すると、Jenkinsが実行してくれる。
結果も画面でみれる。
seleniumhtmlreport plugin
TestSuiteが多い場合は、これでレポートがみれる。
mavenなどでxUnit形式で出力すれば、Jenkinsでレポートがみれる。
Selenium plugin
Selenium Gridで並列実行するときにSelenium Hubを簡単に設定できる。
JenkinsでSeleniumのテストをするときに気を付けること
- テスト環境は専用に
- データの初期化の仕組みをつくる
- ジョブは機能のカテゴリごとに小分けにするとよい(失敗したときに修正のモチベーションのため)
- スクリーンショットをとる(Selenium Advent Calendar 2014でブログ書いたよ)
Selenese Runnerができるまで(仮)【岩室 元典さん】(@vmi_jp)
SeleniumでCIするときに困ったことありませんか?
- Selenium RCが動かない
- テストがこけたときに何がおきたかわからない
- WebDriverはメンテコストが高い
こんな人にSelenese Runner。
- WebDriverベースなので、クロスブラウザ対応
- ログとの突合せに必要な情報の出力
- コマンド毎、失敗時のスクリーンショット
- JUnit形式で結果出力
などなど
ここでデモ(クロスブラウザ、実行中にハイライト・充実したログ・スクリーンショットなどなど)
Seleniumと相性がいいテンプレートエンジンMixer@nabedge
Seleniumあるある
idかclassをつけておいてくれればややこしいxpathをつかわなくていいのに。。。
Mixer2はHTML, CSSでテンプレートを書いて、可変部分はJavaで書く。
なので、id, class属性が自然につけられるのでSeleniumでやりやすくなる。
ここでデモ(Mixer2の開発の書き方でテストもできる)
Mixer2はXHTMLパーサー、ジェネレーター、Object/XHTMLマッパー。
懇親会
普段は、こうゆうことしないんだけど、隣にいた女子が「写真とってもらいましょーよー」といったので、その流れで。
ナイスだ、後藤さん!
2014年01月18日
第1回 日本Seleniumユーザーコミュニティ勉強会
東京都渋谷区道玄坂1-12-1
http://kokucheese.com/event/index/117476/