レポート

コミッターが語るSeleniumのいま,そして未来 ―「Selenium Committer Day 2017」レポート

この記事を読むのに必要な時間:およそ 5 分

Manoj Kumar ―コンテナを使ったテスト(Testing Inside Containers) Automated testing in the age of container cluster

この日3人目のコミッターであるManoj Kumar氏は,docker-seleniumなど数々のライブラリ開発に携わってきた方で,ブログAssert Seleniumでの情報発信も精力的に行っています。

Manoj Kumar氏

Manoj Kumar氏

継続的デリバリーとテスト自動化

技術をめぐる世の中の要求や環境は,大きく変わり続けています。製品やリリースを可能な限り早く行うことと厳しいコスト最適化の圧力がかかる中で,DevOpsなどの浸透によるパラダイムシフトが常に起こっていますし,コンテナやクラウドコンピューティングを活用した分散コンピューティングが注目されています。

こうした状況で必要とされるのが,継続的デリバリー(Continuous Delivery)という考え方です。継続的デリバリーというのは,継続的インテグレーションと継続的テストがあって初めて可能となるものです。継続的にテストを実施するためには,テストの自動化が必須です。テスト自動化のツールとしてSeleniumがあります。たとえば,Selenium Gridはハブとノードの構成になっていて,マスタ・スレーブ関係でテストを実行します。

継続的テストの課題とDocker

テストを常に書いていくと,テスト全体の量が増え,また実行時間が長くなってきます。そこで,実行時間短縮のため,並行してテストを実施することが求められます。ただ,そのためにはもっとリソースが必要になり,コスト削減の要求に応えることができなくなってきます。並列化によく使われるVM(Virtual Machine)はハードウェアのシミュレーションまで行っていたりするので多くのメモリを必要としますし,メンテナンスコストがかかります。

こうした課題に対して,コンテナ,特にDockerが解決策となります。次のような特徴があります。

  • 動作が軽い
  • 前提として必要なアプリやライブラリが全てパッケージされている
  • モバイルのテストにも使える

docker-selenium

Selenium GridをDocker環境で使えるようにしているのが,docker-seleniumです。これはコンパイルされ実行可能となっているソフトウェアであり,次のようなイメージがこちらのサイトに用意されています。

  • selenium/hub
  • selenium/node-chrome
  • selenium/node-firefox
  • selenium/node-phantomjs
  • selenium/node-chrome-debug
  • selenium/node-firefox-debug

Seleniumにはハブとノードが必要です。複数の仮想マシンを使って,何百件ものテストケースを実行していきます。

テストをDocker化する(Dockerize)というのは先進的ではありますが,普及はしていません。ただ,もしDockerのイメージを開いて機能テストが自動で流れたら素晴らしいと思います。Node.jsやJavaで,YAMLを書くことで,それが実現できるのです。

モバイル

スマートフォンなどモバイルアプリの自動テストには,次のDockerイメージを使うことができます。

Appium Docker for Androidは実機で,Docker-Androidはエミュレータで自動テストを行う場合に対応しています。

オーケストレーションツール

コンテナを活用した自動テストを継続するために,オーケストレーションツールを使いましょう。オーケストレーションツールにはいろいろと便利な機能があり,たとえば何らかの理由でダウンしたノードを自動で再起動することができます。

たとえば,Dockerクラスタ管理ツールのKubernetesをDocker-Selenium環境で使えるようにしたKubernetes-docker-seleniumというものがあります。またZaleniumaerokubeもお勧めします。

著者プロフィール

河原田政典(かわらだまさのり)

Selenium・Appiumに偏りがちなテスト自動化エンジニア。紙の書籍と電子書籍をいかに使い分けるかが最近の関心事。
2017年10月ドイツで開かれるSeleniumConf Berlin 2017に参加するため,ついにパスポートを取得。わくわくがとまらない29歳の夏。