JavaScriptテスト自動化ツールSeleniumのこれまでとこれから(前編)。第1回 日本Seleniumユーザーコミュニティ勉強会
JavaScriptのテスト自動化ツールとして知られるSeleniumに関する勉強会「第1回 日本Seleniumユーザーコミュニティ勉強会」が、1月18日に都内で開催されました。
JavaScriptを活用した大規模なWebアプリケーションが増えるなかでSeleniumへの注目は高まっており、会場には100人近い参加者が集まりました。この記事では、そのイベントをダイジェストで紹介します。
Seleniumのこれまで
日本Seleniumユーザーコミュニティ主宰で、今回のイベントの主催者でもある伊藤望氏。

日本Seleniumユーザーコミュニティは2013年7月1日設立です。現在のところメンバーは193人。今後、公式Webサイトの開設もしていこうと思っています。
ここでSeleniumについておさらいを。

Selenium 2ができたのが、たしか3~4年前ですね。
これから基調講演をしていただくJason Huggins氏は、Seleniumのいちばん最初のバージョンを作った人です。現在はSeleniumの実行環境を提供する会社のCTOでもあります。
オバマケアのデバッグのために来日が急遽中止されていた
Jason Huggins氏。

初めて日本に来ることができて大変嬉しく思っています。そして昨年11月に来ることができなくて申し訳ありませんでした(注:当初このイベントは2013年11月に予定されていたが、Hugginsの来日が急遽中止となり延期されていた)。
ただ、私には来ることができなかったすごい言い訳があるのです。
皆さんは昨年10月に米国で開設されたオバマケアのためのWebサイトが、障害で使い物にならなかったというニュースをご存じだと思います。私はそのために11月から12月にかけてワシントンDCに呼ばれて缶詰になっていたのです。
日本に来られなかったことは申し訳なく思いましたが、そんな事情だったのでご勘弁いただければと思います。
さて、私はSeleniumプロジェクトの共同設立者(コファウンダー)と名乗っています。なぜ共同設立者かといえば、いまではSelenium WebDriverとかSelenium Remote-Controlなどさまざまな機能が統合されているためです。
私は2008年に友人と立ち上げた会社「Sauce Labs」の共同設立者兼CTOでもあります。
Ajaxのテストを自動化するために開発されたSelenium
さて、少しテスト自動化の歴史を振り返ってみましょう。2004年、Google MapsやGmail、Ruby on Railsといったものが世の中に出てきます。いわゆるAjaxやWeb 2.0と呼ばれました。

これらはJavaScriptをヘビーに使っていて、テストをするのが難しくなりました。
これらをどうやってテストをするのか、ということでSeleniumが作られたのです。
私がSeleniumとは何かを説明するときは、「テストをしてくれるロボットのようなものだ」と言っています。「このページを開いて、このボタンを押して、このフィールドにこのテキストを入れて」というように、ロボットに指示しているようなものです。

ちなみにこの画像は日本のどこかで作られた画像らしいのですが、オリジナルのリンクが見つからなくなってしまいました。Seleniumの説明ではずっとこの画像を使わせてもらっています。
そして現在、Seleniumが登場して10年になりますが、とても有名なツールになりました。テスト自動化をやろうとしている人は、ぜひSeleniumを学んでいただきたいです。

Seleniumという名前ですが、これはもともとジョークでした。競合のQTP(Quick Test Professional)はMercury Interactiveという会社が作ったものでした。Mercuryは水銀のことで、Seleniumは水銀の毒性をとってくれるセレンという物質からとった名前なのです。
モバイル対応のために作られたAppium
いま、大きな変化が起きています。2007年にiPhoneが登場したときはまだモバイルは小さい存在でしたが、2008年にAndroidが登場し、その存在は今は本当に大きなものになっています。

いまやモバイルはデスクトップの利用度を上回っているといわれています。ということで、モバイルのテストを無視できなくなります。それをどうしていくのか?
そこでAppiumを作りました。Seleniumとテスト自体は変わっていませんが、対象をモバイルデバイスに変えました。Appiumは、Selenium for mobile appsなのです。

Appiumは、ネイティブとハイブリッドモバイル向けの、iPhone/Androidに対応したクロスプラットフォームのテスト自動化ソリューションです。


Appiumの4つのフィロソフィー
AppiumにはSeleniumと異なる4つのフィロソフィーがあります。1つ目は、App Storeなどに提出する、そのアプリをテストできます。何かを組み込んだりする必要はありません。

これはSeleniumから学んだことで、テストをしやすいようにアプリを変えるのはいいことではありますが、appiumでは必須ではありません。DOM構造をappiumに入れて、それで終わりです。オブジェクトを見つけ出して自動化ができます。

2つ目もSeleniumから学んだことです。どんなフレームワークでも、どんな言語でもテストが書けること。JavaでもRubyでも、好きな言語でテスをと書いていい。

3つ目は標準の自動化のAPIを使えること。これはSelenium APIのことです。

4つ目は大規模で活発なコミュニティを作ることです。
Appiumを実行するときに使っているプロトコルがSelenium WebDriverです。Ruby、Java、Pythonなどのライブラリがあり、私もPythonを使っています。

すでにSelenium WebDriverは、これを熟知する数千人のエンジニアが使っていますし、Appiumはそれと下位互換性があるのです。
またSelenium WebDriverのプロトコルはW3Cのワーキングドラフトになっています。Seleniumの世界征服計画のひとつです(笑)。
Appiumの開発プロジェクトからすると、Webブラウザを自動テスト可能にするのは大変でした。そこで、私たちのプロジェクトのゴールの1つにかかげていたのは、その部分をWebブラウザのベンダに任せて、私たちはもうその部分のコードを書かないようにすることなのです。
そのためにW3Cでの標準化を進めるようにしたわけで、いまのところうまくいっています。業界としてもSeleniumを無視できないほど重要なものになってきているわけです。
≫後編に続く。後編ではAppiumのアーキテクチャやスクリプトサンプルなどを紹介します。
第1回 日本Seleniumユーザーコミュニティ勉強会
- JavaScriptテスト自動化ツールSeleniumのこれまでとこれから(前編)。第1回 日本Seleniumユーザーコミュニティ勉強会
- JavaScriptテスト自動化ツールSeleniumのこれまでとこれから(後編)。第1回 日本Seleniumユーザーコミュニティ勉強会
- JenkinsとSeleniumでJavaScriptのテスト自動化、最初の一歩。第1回 日本Seleniumユーザーコミュニティ勉強会
関連記事
あわせて読みたい
JavaScriptテスト自動化ツールSeleniumのこれまでとこれから(後編)。第1回 日本Seleniumユーザーコミュニティ勉強会
≪前の記事
Windows Azure対応「クラウドデザインパターン」正式版が公開。可用性、データ管理、メッセージング、セキュリティなど8カテゴリで24パターン