2016年12月18日、株式会社リクルートジョブズ のご協力により、グラントウキョウサウスタワーで日本Seleniumユーザーコミュニティ 主催の「第4回日本Seleniumユーザーコミュニティ勉強会」が開催されました。
今回の勉強会では、Selenium 3やAppium 1.6といった最新の技術情報や、イギリスで開催されたカンファレンスの参加報告を筆頭に、業務の中でいかにテスト自動化に取り組んだかが紹介された数々の事例や、話題の人工知能を使った開発中のツールの紹介など、日々の業務でテスト自動化に取り組んでいる技術者ならキャッチしておきたいトピックが扱われました。セッション中はTwitterのハッシュタグ「#seleniumjp 」を付けたツイートも活発で、Togetterにまとめられた関連ツイート を見ると会場の熱気が伝わってきます。
このレポートでは、進歩の著しいテスト自動化の現在と未来が見える2つの発表を中心にまとめます。
2016 Selenium ゆく年くる年 ~最近のSelenium~(戸田広氏)
トップバッターで登壇された戸田広氏は、2016年のSelenium関連トピックを整理し、発表しました。
戸田広氏
『Selenium実践入門』
第3回Selenium勉強会 でも紹介された『Selenium実践入門』 がamazon.co.jp でベストセラー1位に輝いたそうです。ただし、なぜか「ブラウザ」カテゴリでの1位獲得ということで、会場からは笑いが起こっていました。
Selenium 3で変わったこと
Selenium WebDriver(Selenium 2)は、かつてSelenium RCとWebDriverを融合してリリースされました。ところが、Selenium 3はWebDriverのみのパッケージとなり、Selenium RCはleg-rc(レガシー)という別のパッケージに切り離されているそうです。お使いのツールがどちらに依存しているかで、対応方法が異なっています。
WebDriverを利用しているなら安心
まず、現在主流であるWebDriver側ですが、ほぼマイナーバージョンアップ程度の規模の変更にとどまっているそうです。ですので、Selenide やFluentLenium など、WebDriverやWebDriverのラッパーを利用した既存のコードについては、とくに変更点はありません。
RC依存の秘伝のツールは移行できない!?
一方、leg-rcパッケージに切り離されたSelenium RCに依存しているツールは、単にSelenium 3に更新するわけにはいきません。leg-rcパッケージは、内部でWebDriver-backedベースの処理を行うようになっているため、移行できず切り捨てられたAPIも存在するようで、現場でSelenium RCを利用した秘伝のツールを使っている場合、移行する際は検証と対策が必要になります。
実行環境に関して
JavaバインディングでJava 8以上が必須に、RubyバインディングではRuby 2.0以上が必須になっています。WebDriverを使う上での大きな変更は無いとはいえ、このような実行環境の大きな変化も無くはないので、導入計画は慎重に立てることをお勧めします。
Firefoxが動かなくなる!?
Selenium 3のリリース前後でいくつかの主要ブラウザでWebDriverへの対応状況が大きく変わったことで、古いコードが動かなくなっていることがあります。しかし、それはたまたま タイミングが重なっただけで、Selenium 3のせいではないのだとか。
Selenium 最近のブラウザ対応状況
主要ブラウザを見ると、状況に大きな変化はないものと、大きく変化したものとに大別されます。
以前から大きく状況が変わらないブラウザ
Google ChromeやInternet Explorer、Microsoft Edgeといったブラウザは、ドライバー周りにとくに変化は無いそうです。ただ、Microsoft Edgeはマルチバイト文字列をsendKeysコマンドで使えるようになるなど利便性が上がっているので、必ず最新版を使いましょう。
めちゃめちゃ変わったブラウザ
大きく変わったブラウザの筆頭株がFirefoxです。未署名のアドオンが使ったことで、GeckoDriverの併用が必須となりました。ですが、以前のFirefoxDriverは古いFirefoxで動くので、法人向けのFirefox ESR 45を使うことで、2017年6月までは問題なく使えるとのことで、対策までの時間は取れそうです。
また、Macの標準ブラウザであるSafariですが、こちらはApple社によるSafariDriverが同梱されるようになりました。これにより、オープンソース版のSafariDriverは使えなくなりました。これについては、戸田氏による記事 が参考になります。
最近とこれからのSelenium IDE
2017年11月28日リリース予定のFirefox 57からは、Selenium IDEとSelenium Builderがサポートされなくなるそうです。比較的手軽に扱えるSelenium IDEを使ってテスト業務を行なっているプロジェクトでは、Selenium 3への移行か、あるいは別のツールを採用するか、いずれにせよなにか手を打つ必要があります。Firefox ESR 52を使っていれば2018年中ごろまではサポートされる予定ですが、当たり前のように使っていたツールがある日突然使えなくなってしまうと、業務に与えるインパクトは非常に大きなものとなるはずです。
Appium 1.6 重箱の隅っこ
Appium 1.5から1.6へのアップデートに伴い、かなり変更点があるそうです。主要なところは別の発表に譲り、今回の発表ではリリースノート に記載されているニッチなポイントが取り上げられました。
AppiumとWindows desktop appliction
Microsoftの開発したWindows Application Driver に、Appium 1.6から対応しました。ただし、Windows Application Driverは、2016年11月にリリースされたv0.7-betaが最新版ということで、まだまだ発展途上のようです。
AppiumとYou.i TV
これはカナダの企業You.i TV が作っている映像アプリ開発に特化した商用SDKです。開発者向けの紹介資料までなら無料登録で読めるそうですが、いかんせん情報が少なく、Appiumプロジェクトにおいてどのような期待感を持って今回の対応に結びついたのかなど、まだまだ謎が多いのが実情のようです。
まとめ
2016年のSeleniumに関する動向を簡単にまとめると、次のようになります。
WebDriver標準化への流れが進んでいる
WebDriver対応が各ソフトウェアベンダの責務であるという雰囲気がいよいよ現実味を帯びてきた
Selenium Conference 2016 参加報告(石川真也氏)
イギリスで開かれたSeleniumConf 2016UK の様子が詳細に報告されました。現地でカンファレンスに参加された石川氏の視点からまとめられたさまざまな情報はとてもわかりやすく、たいへん貴重な発表でした。
石川真也氏
Selenium/Appium最新情報
最初に、SeleniumとAppiumの最新の動向についてです。
Selenium 3.0
Selenium 3.0が2016年10月13日にリリースされました。古いAPI(Selenium Core)が削除され、今後はW3C標準仕様としてのWebDriverAPIに準拠していく方向性が打ち出されたそうです。ブラウザベンダ自身がWebDriver仕様に沿ったAPIを開発する形になれば、Seleniumとドライバのリリースサイクルを切り分けられるメリットがあります。
Appium
Appiumはjs.foundation というLinux財団配下の非営利団体に移管されました。Sauce Labsも積極的にコミットしていくと表明していて、今回の移管によりAppiumの継続性を担保する材料が増えたと見ることができます。
また、StarDriver構想についても語られました。WebDriverプロトコルを介して、ブラウザにとどまらず、あらゆるデバイスを自動化するということで、IoTデバイスのテスト自動化も可能になるかもしれません。
Selenium IDEの今後
Selenium IDEは今後は無くなってしまうかもしれません。コミッターパネルでの質疑応答によると、これから積極的に開発を続けていくつもりはなさそうでした。シェアやニーズがあることを把握しているものの、コミッターは営利企業で開発しているのではなく、コードを書きたくて開発しているという面があり、難しいようです。Selenium IDEが良いと思うなら、どんどんコミュニティの輪に加わって議論してほしいとのことでした。
こんなこともできる!TIPS
Seleniumを使っていろいろなことができるという事例がSeleniumConf 2016UKで発表されていました。
Selenium経由でロボットを動かしてスマホを操作
Webページのセキュリティ測定に利用
Chrome Driverをハックして、WebDriver単体ではできないことを実現
まず始めてみた話
今の課題を解決するためにテストの自動化を採用すると良さそうだと考え、実際に取り組んでみた経験がシェアされるセッションが集まっています。スライドでもセッションをいくつかピックアップするに留めて詳しい説明をしませんが、自分の境遇に近い人のセッションを選んで動画を見ると、参考になるかと思います。
課題を解決した話
Selenium/Appiumを使い始めて突き当たった課題や、それをいかに解決したかが紹介されるセッションがここに含まれます。
不安定なテストを無くしたい
スクリプトの保守性を上げたい
テストの実行が遅い
など、Selenium/Appiumを使っていく上で生じた課題とそのアプローチが発表されました。
まとめ
Selenium/Appiumの最新情報に触れることができたことが一番の収穫でした。また、現地に足を運んだことで参加者やコミッターとの交流ができたことも新鮮でした。いつかSeleniumConfで発表したいと思っています。次回は2017年4月初旬にテキサス州オースティンで開催される予定です。LT(ライトニングトーク)に参加したりして日本人のプレゼンスを上げていけば、いずれはSeleniumConf@Tokyoが実現するかもしれません!
カンファレンスの公式サイト ではセッションの動画を全編公開していますので、もっと詳しくキャッチアップしたい方はぜひチェックしてみてください。
珠玉のセッション
たいへん勉強になる発表が揃った勉強会でしたので、駆け足ではありますが、上記で挙げた以外の全てのセッションをご紹介したいと思います。
ご挨拶(伊藤望氏)
日本Seleniumユーザーコミュニティを主宰する伊藤望氏による冒頭の挨拶は、スライドを表示せずに行われましたが、コミュニティのユーザ数が増えていることが紹介されました。
「実践Appium」の勘所 - とAppium1.6の補完 -(太田健一郎氏)
太田健一郎氏
監訳を担当された『実践Appium』 の紹介とAppium1.6の説明がありました。また、じゃんけん大会で勝ち残った3名の方に『実践Appium』の書籍がプレゼントされました。
とある事業会社のブラウザテスト自動化の七転八倒そしてその先へ(PoohSunny氏)
PoohSunny氏
社内にテスト自動化を浸透させるためにはどうしたらいいか? 登壇者自身の苦闘の経験がわかりやすく述べられていて、説得力に満ちたセッションでした。
一休.comのE2Eテスト事情~Selenium3.0対応~(赤坂翔太氏)
赤坂翔太氏
テスト自動化導入の経緯から、Selenium3.0にいかにして対応したか、苦戦したポイントをまとめた事例発表でした。衝撃的(?)な結末は必見です。
オフショア手動テストチームが、テスト自動化チームとして生まれ変わった物語(荻野恒太郎氏・張永澤氏)
荻野恒太郎氏(左) 、張永澤氏(右)
テスト業務を巡る考え方のギャップを乗り越え、オフショア手動テストチームがテスト自動化チームとして成功していった軌跡が紹介されました。現場ですぐに応用できるアイデア満載のセッションでした。
明日から始めるSelenideによるブラウザテスト(島根義和氏)
島根義和氏
とても簡単にブラウザテストができるSelenide(セレニド/セレナイド)が、なんと会場でのライブコーディングを交えて紹介されました。スライドではデモの臨場感をお伝えできないのが残念です。
Seleniumでキーワード駆動テストを実践した時のあれこれ(小島直也氏)
小島直也氏
キーワード駆動テストを行うにあたり、何を考え、どのように実践したかというプロセスを丁寧に扱ったセッションでした。69ページにわたる緻密なスライドは、たいへんな力作です。
ディープラーニングとAppiumでモバイルテスト自動化(伊藤望氏)
伊藤望氏
最後を飾った伊藤望氏は、自身がCEOを務める株式会社TRIDENT で開発している、ディープラーニングを使ったモバイルテスト自動化ツール「Magic Pot(Magic Podに改名予定) 」を発表しました。路線情報アプリを使ったデモンストレーションが行われ、画面を解析して要素が次々とピックアップされ、どんどん入力されていく様子に、参加者からは感嘆の声が上がりました。
最新の技術情報と現場の実践事例がバランスよく共有された第4回Selenium勉強会。進歩が速いテスト自動化の世界で、最新の情報に触れられるチャンスということで、参加者はメモを取ったりTwitterで実況したりと、たいへん熱心な様子でした。また、登壇者が生き生きと発表していて、活気のある勉強会だと感じました。
今回のようにスライドが公開されないセッションもありますので、興味を持たれた方はぜひ日本Seleniumユーザーコミュニティ への参加を検討してみてはいかがでしょうか。広く使われているテスト自動化ツールSelenium/Appiumは、この先どう進化するのでしょうか。まだまだ目が離せません。