Selenium Conf2017 Austin に参加してきました

by kunio.okita | June 01, 2017
event |

システム本部SWETグループのグループリーダの沖田(@okitan)です。SWET(スウェットと読む)はE2Eテストの自動化やCI/CDの整備等を通じてDeNAの事業の開発生産性と品質の向上をミッションとするチームです。

SWETチームはその前身となるMobageのオープンプラットフォームのテスト自動化とCIをミッションとしていた時代からSeleniumによるEnd to Endテストに取り組んできていました。今回、そのSeleniumの国際カンファレンスであるSelenium Conf 2017 Austinに参加してきたので、Seleniumを取り巻く最新の動向を紹介したいと思います。

Selenium Conf Austin 2017

Selenium Conf 2017 Austinは4月3日〜4月5日までの3日間開催され、約500人の参加者があったようです。初日はワークショップが開催され、2日目と3日目がカンファレンスでした。私は、日程の都合上、2日目と3日目のカンファレンスだけの参加となりました。

日本からの参加者は私だけだったようなので、昼食だとかレセプションだとかで積極的にいろいろな人に話しかけたのですが、カンファレンス参加者の所属は大手企業からスタートアップまでバラエティーに富んでいて、その中でSeleniumやAppiumを使った自動テストを元にどういうようなことをやっているかというのを色んな立場の人から聞けたのはすごくいい経験になりました。

日本でも最近ではかなりDevOpsが当たり前になってきていますが、今回個人的に話を聞いた人たちの多くも当然のようにDevOpsでの開発サイクルを回していて、その中でいかに継続的かつサイクルのいろんなところにQAを分解再構築したものをいれていき、それにより品質と生産性をあげていくかといった、DevOpsQA的な取り組みを模索している最中といった感じでした。

SWETでもDeNAの事業のサイクルに寄り添い、その中でいかに品質と生産性をあげていくかに日々取り組んでいて、非常に参考になりました。

今回カンファレンスで心に残った発表も、そういったDevOpsQA的なものを目指し、CIの中でいかにSelenium特有のflaky(安定しない)なテストにチームとして立ち向かっていくかといった発表が多かったです。

Transformative Culture - The Shift From QA To Engineering Productivity

そのような発表の中で、個人的に一番よかったのは、Ashley HunsbergerさんによるTransformative Cultureでした。

ストーリーとしては、400件のテストケースのうち370件がflakyでかつ全部の実行に2時間かかるような悲惨な状況から、チームや全社的なカルチャーをいかに変えていったかといったよくある系ではあるのですが、その際の具体的な目標設定だとか、施策が非常に参考になりました。特に、作成していくテストスイートに対して、その「Goal(目的)」、「Trigger(実行タイミング)」、「Gate(失敗したときに何が起きるか)」、「Requirements(テスト実行に関わる要求)」を定義していくということがきちんと整理されていて、今携わっているプロジェクトにおいてはどうなっているだろうかとかいろいろ考えさせられました。Seleniumに関してのテクニカルなことはほぼ触れられていませんでしたが、このような自動テストを作りメンテしていく上で必要なことが一杯つまった発表だったと思います。

詳しくは、動画スライドがあがっているので、是非そちらを参照してください。

Zalenium: Use A Disposable And Flexible Selenium Grid Infrastructure

一方、Seleniumの技術的なトピックで印象に残ったのは、Diego MolinaさんとLeo Gallucciさんによる、”Zalenium: Use A Disposable And Flexible Selenium Grid Infrastructure”という発表です。

Zalenium(発表者はサレニウムと発音していました)は、Selenium Grid(CI環境でよく使われるSeleniumの複数ブラウザを並列的に動作させるための仕組み)を拡張していろいろな機能を足したもので、実はこのカンファレンス参加前からSWETグループではZaleniumの利用の検討をしていました。もっといえば、Zaleniumとほとんど同じような機能をSWET内独自に実装していて、当初はその取り組みを発表しようとSelenium ConfにCFPを送っていました(CFP送った当時はZaleniumが本当に出たてのことで全くその存在を知らなくて、CFPの時点でこれと競合していたのであればrejectもある意味納得です)。

Zaleniumがもつ機能でSWETで行いたかった取り組みは、テスト実行状況の可視化とその録画でした。というのも、特にJenkinsのようなCI環境で大量に分散したテスト実行状況をリアルタイムに確認可能にし、またその動作状況を録画しておくことにより、何かあったときのフィードバックを高速化したり、何かあったときのデバッグを非常に簡単にできます。

そのうえ、Zaleniumはリンク先の図のような仕組みにより、Selenium Gridにおけるnode(実際のブラウザが動く環境)のdockerコンテナがオートスケールします。SWETでやっているSeleniumの自動テストは、1つのテストケースに複数のブラウザを動作させることが必要となるテストが多く、そのためテスト実行時に必要なブラウザセッションの数が不定でした。nodeがオートスケールするような仕組みと我々のSeleniumの自動テストはかなり相性が良いと感じました。

なお、Zaleniumが利用しているSeleniumのdockerイメージは公式のものではなくdocker-seleniumを利用しています。このdocker-seleniumは公式のdockerイメージのgood alternativesという目的で開発されていて、例えば録画機能はこのdocker-seleniumの機能によるものです。このdocker-seleniumはつい最近まで、日本語や中国語だといったフォントが表示ができない問題があったのですが、我々が最近送ったPRにより、表示できるようになりました。以前Zaleniumを試してこの問題にあたった方も再度試していただけるといいなと思います。

Zaleniumに関しても、動画スライドがあがっているので、是非そちらもご参照ください。

まとめ

発表は基本的に、YouTubeですべて動画でみられるのですが、何よりも中の人達といろいろな話ができたのが収穫であり、刺激になりました。

例えば、Zaleniumの中の人たちは、DeNAがZaleniumを使い始めようとしていることを知っていたり、今度PRを送るねーとかやりとりをしたりしました。

また、Seleniumコミッタ陣とも、今年の7月1日に日本で行われる予定のSelenium Comitter Day 2017に関する話をしたりだとか、共著で書いたSelenium実践入門プレゼントしたりだとかのやりとりをしました。

Selenium Committer Day 2017はSeleniumのコアメンバー3人がそれぞれトークをしてくれ、同時通訳までついてます。絶賛参加募集中ですので、ぜひぜひご参加ください!DeNAもこのイベントのスポンサーをしておりますし、SWETメンバーもトークする予定となっています。