SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「SeleniumConf Chicago」参加レポート

AI、サーバーレス、Dockerなど、Seleniumテストを安定化・スケールさせるためのヒントとは?【SeleniumConf Chicago】

「SeleniumConf Chicago」参加レポート(1)

  • X ポスト
  • このエントリーをはてなブックマークに追加

AWS Lambdaを使い、1時間以上のテスト実行時間を10分以内に

 Seleniumなどの実際のUIを伴う自動テストにおいて、テスト実行時間に関する問題は起こりがちです。直列でテストを実行しているとテスト実行時間は簡単に増えてしまい、結果として開発者へのフィードバックが遅くなってしまいます。また、そのテストを並列で実行させる場合でも、

  • 実行テストの分散方法
  • テスト実行環境のコスト・メンテナンス
  • 実行したテスト結果の収集

など、さまざまな問題が発生してしまいます。

 Wes Couch氏とKurt Waechter氏によるセッション「Scaling Selenium to infinity using AWS Lambda」では、AWS Lambdaというサーバーレスフレームワークを使って、これらの課題を解決した事例を紹介しました。

 結果として、実際にこれまで1時間以上かかっていたテスト実行時間を10分以内にすることができたとのことです。

AWS Lambdaを利用したSelenium自動テスト
AWS Lambdaを利用したSelenium自動テスト

 また、サーバーレスアーキテクチャーによって、

  • 簡単にスケールできる(今回だとテストの分散)
  • 使った分だけ課金される
  • メンテナンスしなければならない部分が少ない

という恩恵を受けられたとのことです。

 上記の恩恵と引き換えに、サーバーレスアーキテクチャーの場合、プラットフォームによる制限を考慮しないといけません。特にAWS Lambdaの場合には容量の制限があり、その中にテスト実行環境としてブラウザ(今回だとChrome)とSelenium WebDriverをどう入れたかは、とても興味がありました。

 上記の課題にもあった「分散されたテスト実行結果の収集」にはAmazon S3を使い、Allureというオープンソースのレポートツールを使うことによって、HTMLで見やすく収集できるようにしたようです。

Amazon S3とAllureを使ったテストレポート
Amazon S3とAllureを使ったテストレポート

 また、セッションの中で「Running tests faster will unmask rude tests」という言葉が印象に残りました。UIテストの場合、実装したテストがあらゆる理由によって不安定になってしまうことが大いにあります。テスト実行時間が短縮・フィードバックが早くなることによって、不安定なテストを早期に発見できるのも大きなメリットであると感じました。

 今回はJavaとAWS Lambdaを使って紹介されましたが、他のサーバーレスアーキテクチャーや言語でも使えるようになると、このソリューションがより広まるのでは、と感じました。

Docker Containerを使った組織的な自動テスト開発

 最後にDerrick Kearney氏による「Jump starting your testing with Selenium Grid Docker Containers, Selene, and pytest」のセッションについてご紹介します。

 Selenium GridをDocker Containerで動かしてSeleniumテストを実行させるアプローチは、Seleniumテストを分散実行させるためのソリューションとして、数年前からさまざまな所で紹介されています。しかし、組織的に自動テスト開発をするためのさまざまな工夫が本セッションでは紹介されており、興味を持ちました。

 最終的には、3つのmakeコマンドを使うことで、

  • Webアプリケーション環境も含めたテスト環境のセットアップ($ make test-env-up)
  • Pythonでのテストの実行($ make test)
  • テスト結果の収集・テスト環境の破棄($ make test-env-down)

ができるようになります。

3つのmakeコマンド
3つのmakeコマンド

 また、これらは開発環境・JenkinsなどのCI環境のどちらでも使うことができます。

 Seleniumでの自動テストを実行させるには

  • 対象となるWebアプリケーション
  • テストを実行させる言語(今回だとPython)とそのライブラリ群
  • Selenium Grid(Hub, Nodes)

など、複数の要素が必要になります。

 それらがバージョンなどを気にせずに環境構築・テストコード修正・テスト実行ができるのは、複数人で開発を行う際にとても重要だと感じていました。そのため、これらを3コマンドまでシンプルにさせて運用していることに驚きました。また、コンテナ内部でのテストコードの実装・デバッグ方法なども工夫されており、テスト自動化を専門としないエンジニアでも開発しやすいと感じました。

 これらの工夫の結果によって、組織的にテスト自動化を継続的に行うことができている部分は、私も参考にしたいと思います。

さいごに

 その他にもSeleniumテスト安定化・スケールのためのTipsがセッションで多く紹介されていました。実際の運用ですぐ使えるものや、今後継続的にウォッチしたいものなど、バランスの良いカンファレンスだったのではないかと感じました。

 来年の4月には東京でもSeleniumConfが行われるので、このコミュニティーが日本を含め、より盛り上がると期待しています。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
この記事の著者

根本 征(株式会社メルカリ)(ネモト タダシ)

株式会社メルカリ Automation & QA グループ(通称:AQA)自動化エンジニア。2016年4月に新卒でメルカリに入社。QAエンジニアと共にモバイルをメインとしたUIテスト自動化を推進していく傍、モバイル CI / CD改善や社内の生産性を上げるための自動化・サポートを行なっている。GitHub:https://github.com/tadashi0713

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11199 2018/11/16 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング