Selenium何とかっていうツールがやたら色々あるのはどういうわけなのか


ブラウザの画面テストを自動化するツール、Selenium。

大変便利なツールなのですが、Selenium RC、Selenium IDE、WebDriverなど色々な名前が出てきて、「なぜこんなややこしいことになっているんだろうか」と思ったことはありませんか?

その理由を知るには、Seleniumの歴史について知る必要があります。

今回は、Seleniumの誕生から2013年5月現在に至るまでの歴史を振り返りながら、それぞれのツールがどのような位置付けのものなのか、見ていくことにしましょう。

※ 歴史はいいからとりあえずSeleniumを使ってみたい、という方は、Selenium公式サイトからSelenium IDEをダウンロードすれば使えます。


Selenium Core

Seleniumの原型は、米ThoughtWorks社で働いていたJason Huggins氏によって2004年に作られた、社内向けテストツールです。このツールが発展して、「Selenium Core」になりました※1

Selenium Coreの基本的なアイデアは、Webサーバー上にSelenium Coreのエンジンとテストスクリプトを事前に配備しておき、ローカルPCからのアクセスを受けたときに、JavaScriptのブラウザ操作ロジックを埋め込んだページを返す、というものでした。(図1)


図1 Selenium Coreの基本的なアイデア

図1 Selenium Coreの基本的なアイデア


スクリプトは、HTMLの形式で、手作業で作成する必要がありました。

次に説明するSelenium RCSelenium IDEの登場に伴い、Selenium Coreを単体で使用して自動テストを組む機会はほぼなくなりました。Seleniumの公式サイトでもSelenium Core単体のパッケージはもう配布されていません。

Selenium Coreのブラウザ操作ロジックは、Selenium RCやSelenium IDEの内部で現在でも使われています。そのため、Selenium Coreは「Selenium RCやSelenium IDEのコアコンポーネント」と説明されることが多いです。

Selenium RC (Remote Control)

続いて登場したのがSelenium RCです。Selenium RCは、Selenium Coreを「Webサーバー上にスクリプトを置かなくても利用できるようにしたもの」と考えればよいでしょう。(リモートPCでのSelenium実行ツールと誤解しそうな名前ですが、そうではありません)

Selenium RCでは、ローカルPC上で「Selenium Server」という中継サーバーを起動し、この中継サーバーがJavaScriptのブラウザ操作ロジックをWebページに埋め込みます。これにより、Webサーバー上へのスクリプトの配置は不要になりました。(図2)


図2 Selenium RCのテスト実行の流れ

図2 Selenium RCのテスト実行の流れ


また、HTMLに加え、Java・Ruby・Python・Perl・PHP・.Netといったプログラミング言語でもスクリプトを記述できるようになり、ループや条件分岐などを含むより高度なスクリプトの作成が可能になりました。

Selenium IDE

続いて登場したのは、日本の笠谷真也氏が開発した「Selenium IDE」です。

これは、ユーザーのブラウザ操作を記録して、そこからSeleniumのスクリプトを生成するFirefoxプラグインです。

Selenium IDEのおかげで、スクリプトをこれまでより簡単に作成できるようになりました。

さらに、Selenium IDEにはSelenium Coreのロジックが埋め込まれており、Firefox上でのテスト実行ならばSelenium RCがなくても行うことができます。

このような性質を持つため、Selenium IDEは、Seleniumの入門ツールとして、またプログラミング言語に不慣れなユーザーがSeleniumを使うためのツールとして、現在でも広く利用されています。


図3 Selenium IDEの画面

図3 Selenium IDEの画面


WebDriver

Seleniumが多くの人々に利用されるにつれて、次第にその問題点もクローズアップされるようになってきました。

特に問題だったのが、テスト実行時にJavaScriptを使ってブラウザを操作するために、ブラウザのセキュリティ制限によって多くの動作制約を受ける点です※2

2006年、GoogleのSimon Stewart氏は、この問題を解決する新たなブラウザ自動テストツール、WebDriverの開発に着手しました。

WebDriverは、テスト実行時のブラウザ操作を、JavaScriptではなく、ブラウザの拡張機能やOSネイティブの機能を使って行う仕組みでした。(そのため、Selenium Serverのような中継サーバーも不要です)

この試みは成功し、やがてWebDriverはSeleniumと統合されることになります。

Selenium WebDriver

2011年7月、Selenium RCとWebDriverを統合した、Selenium WebDriverがリリースされました。

Selenium RCとWebDriverではコマンドの体系が全く異なっており、Selenium WebDriverにおいては、その両方を使用できます。

WebDriverのコマンドの方が多くの点で優れているので、今後はできるだけWebDriverのコマンドを利用する方がよいと思われます。※3

Selenium RCのコマンドでしか利用できないブラウザやプログラミング言語などもまだあるようですが、長期的にはこれらの問題は解消されていくと考えられます。

Selenium Builder

Selenium WebDriverがリリースされた現在でも、Selenium IDE上で扱えるコマンドはSelenium RCのものだけです。(WebDriverベースのスクリプトに変換して外部に出力することはできます。※4)

そのため、Selenium IDEでスクリプトを作成・管理しているユーザーは、今もWebDriverベースのスクリプトに完全に移行できていません。

こんな状況を改善してくれるかもしれない新ツールが、最近登場しました。その名を、Selenium Builderといいます。

Selenium Builderは、Selenium IDEのようにブラウザ操作を記録してスクリプトを生成するツールなのですが、完全にWebDriverのコマンドだけでブラウザ操作の記録・再生が可能です。

Selenium Builderは、Seleniumの生みの親であるJason Huggins氏がCTOを勤める、米Sauce Labsが中心となって開発をしており、現在も活発に開発が進められているようです。

もしかしたら、このツールもいずれ、Seleniumの新たな歴史の1ページに書き加えられることになるかもしれません。


図4 Selenium Builderの画面

図4 Selenium Builderの画面


その他の「Selenium~」

ここまでに登場しなかった、その他の「Selenium~」という用語について簡単に説明しておきます。

Selenium 1

Selenium RCのことです。

Selenium 2

Selenium WebDriverのことです。

Selenese

Selenium RCのコマンドのことです。

Selenium Grid

Selenium RCの時代に存在していた、複数のマシン上でSeleniumのテストを並列実行するためのツールです。現在はSelenium WebDriverにその機能は吸収されており、これ単体でダウンロードすることはできません。

おまけ - Seleniumダウンロードサイト解説

最後におまけとして、現在Seleniumの公式サイトからダウンロードできるもののうち、重要なものについて解説しておきます。重要なのは、

  1. Selenium Client & WebDriver Language Binding
  2. Selenium Server
  3. Selenium IDE

の3つです。

1. Selenium Client & WebDriver Language Binding

Selenium WebDriverの本体です。プログラミング言語でスクリプトを記述する場合に必要です。プログラミング言語ごとにパッケージが用意されているので、必要なものをダウンロードしましょう。

2. Selenium Server

Selenium RCのコマンドをSelenium WebDriverで実行する場合に、Selenium Client & WebDriver Language Bindingに加えて必要となる、ローカルPC上で起動する中継サーバーです。他にもいくつか使い道があるのですが、ここでは説明は割愛します。

3. Selenium IDE

ブラウザ操作を記録・再生できるFirefoxプラグインで、Selenium Client & WebDriver Language BindingSelenium Serverがなくても利用できます。作成したスクリプトをSelenium WebDriverのスクリプトに変換することもできます。

とりあえずSeleniumを使いたいという方は、まずはこのSelenium IDEだけをダウンロードするとよいでしょう。

上記1.~3.の関係を表したのが下図です。


図5 Selenium公式サイトからダウンロードできる各ツールの関係

図5 Selenium公式サイトからダウンロードできる各ツールの関係


注釈・出典

  1. Brief History of The Selenium Project
  2. Brief History of The Selenium Project
  3. Why Migrate to WebDriver
  4. Selenium IDE and Selenium 2 / WebDriver

関連記事

この記事のハッシュタグ から関連する記事を表示しています。
CircleCIクラウド環境でSeleniumテストを実行する

CircleCIクラウド環境でSeleniumテストを実行する

テスト自動化とSeleniumのコミュニティがどのように日本に普及したか

テスト自動化とSeleniumのコミュニティがどのように日本に普及したか

企業向けSelenium自動テスト講座を公開しました

企業向けSelenium自動テスト講座を公開しました

図1 SahaginによるFluentLeniumテスト結果レポート

FluentLeniumでJavaのSeleniumスクリプトをシンプルに - 後編

FluentLeniumでJavaのSeleniumスクリプトをシンプルに - 前編

FluentLeniumでJavaのSeleniumスクリプトをシンプルに - 前編

図7 Eclipse上で見たディレクトリ構成

Seleniumテスト結果を見やすくするツール「Sahagin」を公開しました - Part 2

最新記事

人気の記事

アーカイブ

タグ