イマドキのIDE事情 第19回SeleniumでWebアプリケーションのテストを自動化しよう
skill

イマドキのIDE事情 第19回
SeleniumでWebアプリケーションのテストを自動化しよう

2015.07.16

ent111_img01.jpg

Seleniumは、Webブラウザのテストを自動化するためのツールのスイートで、以下のプロダクトから構成されている。

  • □ Selenium IDE … テストケースを作成・実行するためのGUIツール。Firefoxアドオンとして動作する
  • □ Selenium Remote Control … Selenium IDEや様々なプログラミング言語で作成したテストケースをコマンドラインで実行でき、Firefox以外のブラウザでもテスト可能
  • □ Selenium Grid … 様々なOS、ブラウザ上でSelenium Remote Controlを複数インスタンス実行し、テスト時間を短縮できる
  • □ Selenium WebDriver … Selenium 2.0から導入された、ブラウザをプログラムから操作するためのライブラリ

以前のSeleniumはHTMLで記述したテストケースをブラウザ上のJavaScriptで実行するというものだったため、テストケースから添付ファイルを選択することができないなどセキュリティに起因する制約があった。しかし、Selenium 2.0からWebDriverというWebブラウザそのものを外部プログラムから制御する機能が統合され、この欠点は解消されている。
竹添 直樹

■ ブラウザの操作からテストケースを生成する

Selenium IDEを使用することで、Firefox上でブラウザの操作を記録してテストケースを生成することができる。Selenium IDEはFirefoxでダウンロードページにアクセスし、最新バージョンのリンクをクリックするとインストールすることができる。
インストール後、Firefoxの[開発ツール]メニューから[Selenium IDE]を選択すると、Selenium IDEが別ウィンドウで起動する。記録状態でブラウザの操作を行うことで、自動的に操作がコマンドとして記録されていく。また、右クリックメニューから値の検証を行うためのコマンドを挿入することができる。記録したテストケースはSelenium IDE上で実行可能だ。

ent111_img02.jpg
図2 : Selenium IDEを起動したところ

ent111_img03.jpg
図3 : コンテキストメニューから検証コマンドを挿入可能

ent111_img04.jpg
図4 : テストケースを実行したところ

テストケースはSelenium IDE上で編集できるので、あとから細かい調整を行うことも可能だ。また、Selenium IDEの実行速度が速すぎてテストが失敗するような場合はテストの実行速度を調整することもできる。
作成したテストケースはHTML形式で保存することができるほか、Ruby、Python、Java、C#の各種テスティングフレームワークでWebDriverもしくはSelenium RCを使用したテストコードとしてエクスポートすることが可能だ。
ただし、WebDriverを使用したコードにエクスポートする場合、すべてのコマンドを忠実にエクスポートできるわけではないという点に注意して欲しい。例えば、clickAndWaitコマンドはウェイトなしで出力されるため、エクスポート後にウェイト処理を追加する必要があるだろう。

■ Selenium Builder

前述のように、Selenium IDEはWebDriverに完全に対応しているわけではない。WebDriverを使用したテストケースを生成するのであれば、Selenium Builderを使用するといいだろう。
Selenium BuilderもSelenium IDEと同様にFirefoxアドオンとして動作する。インストール後、CTRL+ALT+Bで起動する。テストを開始するURLと、Selenium1か2(WebDriver)のいずれかを選択すると、操作の記録が始まる。Selenium Builderのウィンドウの「Record a verification」をクリックすると、ブラウザで表示している任意の要素を選択して値の検証を行うコマンドを挿入できる。

ent111_img05.jpg
図5 : Selenium Builderを起動したところ

ent111_img06.jpg
図6 : Selenium Builderで作成したテストケース

作成したテストケースはSelenium Builder上で実行するほか、「File」→「Export」でJava、Ruby、Python、PHP、C#、Node.jsなどのテストケースとしてエクスポートすることが可能だ。

■ まとめ

一般的にブラウザを使用したテストの自動化はユニットテストと比較して導入の難易度が高い。これはテストケースの作成・維持のためのコストがユニットテストと比較して大きくなりがちだったり、どこまでテストするべきかの判断が難しいためだ。無闇に自動化するのではなく、適切な箇所・用途に絞って利用するといいだろう。

原稿:竹添直樹
株式会社ビズリーチ所属。Scalaを愛するJVM系プログラマ。業務の傍らOSS開発や執筆活動を行っている。
https://twitter.com/takezoen

※本記事は2013年6月27日にマイナビニュースに掲載された記事を基に、一部加筆修正しています。

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW