連載
» 2012年10月05日 20時13分 UPDATE

Selenium WebDriverでWebアプリのテストが変わる(前編):iPhone/Android含むブラウザ自動テストの最終兵器Selenium WebDriverとは (1/2)

Chrome、Firefox、Internet Explorer、Opera、Android、iOSといったブラウザに対応し、Java、C#、Python、Rubyが使えるWebテスト自動化ツールの3つの特徴と環境、実装方法を簡単に紹介

[後藤正規,ビーブレイクシステムズ]

Webのテストに超絶便利な「Selenium WebDriver」とは

 Webアプリケーションのテスト自動化をサポートするツールとして注目されている「Selenium WebDriver」が2011年にリリースされました。

 Selenium WebDriverは広範なWebブラウザのサポートを行っていた「Selenium 1」と高速軽量で汎用的なWebブラウザエミュレータの機能を持つ「WebDriver」を統合したものです。

 本稿では、Selenium WebDriverを簡単に試してみたい方や自動テストの実施を検討している方のため、Selenium WebDriverの特徴を整理するとともに、Selenium WebDriverを利用したWebアプリケーションに対する簡単な自動テストの実装、実施手法について前後編に分けて紹介します。

本稿で使用する用語の説明

  • Selenium WebDriver

Selenium WebDriverはSelenium 1.xを引き継いだもの。Webブラウザをコントロールするライブラリ群、または、その仕組みを指して本稿では「Selenium WebDriver」と記述

  • driver

Webブラウザのコントロール用APIとしてWebDriverが存在する。FirefoxDriver、ChromeDriverなどの各Webブラウザ用のAPIはそれぞれに実装されており、その各実装を指す

Selenium WebDriverの3つの特徴

 Webアプリケーションのテスト自動化ツールSelenium WebDriverは大きく下記の3点をその特徴として持っています。

  1. 複数言語対応
  2. 複数Webブラウザ対応

テストプログラムの言語サポートが複数あり、それぞれの言語で複数Webブラウザをサポートしていること

  1. 設計・実装の明確さ

設計が分かりやすくテストプログラムを実装しやすいこと

 それぞれの特徴について、もう少し詳しく説明します。

 まず第1・第2の特徴である複数Webブラウザ、複数言語の対応に関しては図1のテスト実行時イメージを参照してください。

jo_image01.jpg 図1 Selenium WebDriverのテスト実行イメージ

【1】Java、C#、Python、Rubyの複数言語対応

 Selenium WebDriverを用いてテストを実行する際には、テストプログラムからSelenium WebDriver プロジェクトにより提供される「driver」と呼ばれるWebブラウザごとのAPIを使用することで、Webブラウザをコントロールできます。

 Selenium WebDriverではテストプログラムの言語としてJava、C#、Python、Rubyの4言語をサポートしています。そのため、テストプログラムを作成する利用者の実装しやすい言語を選択できます。

【2】iPhone/Android含む複数Webブラウザ対応

 また、テスト対象のWebブラウザに合わせて、使用するdriverを変更してテストプログラムを実行します。現在サポートしているWebブラウザはChrome、Firefox、Internet Explorer、Opera、Android標準Webブラウザ、iPhone標準Webブラウザ「Safari」です。

 図1ではサーバを中継して、Webブラウザをコントロールするような矢印も記述しています。これは下記の場合に、driverとWebブラウザとの間にサーバを中継してWebブラウザのコントロールを行うためです。

  • コントロール対象のWebブラウザがテストプログラムと同一PCでない場合
  • 「Selenium-Grid」と呼ばれるテストケースの並列分散実行のツールを使用する場合
  • テストプログラムをJava以外のプログラミング言語で実装し、かつHtmlUnit Driver(GUIを使用しないで、Webブラウザのテストを実行するdriver)を用いてテストを実行する場合

【3】設計・実装の明確さ

 第3の特徴である設計の分かりやすさ、実装しやすさに関しては図2に示してある各driverと親クラスとの継承関係のイメージを参照してください。

jo_image02.jpg 図2 WebDriverとWebブラウザごとの関係イメージ

 継承関係を見て分かるようにWebDriverを実装し、Webブラウザごとに特別にAPIが異なる場合を除いて、なるべく共通のAPIを使用できるように設計されています。

 もちろん、Webブラウザ特有の処理を実装しなければならない個所もありますが、全体から見ると、そういう個所はさほど多くありません。これは複数のWebブラウザに対応する必要があるプロジェクトにとって非常に有意義であるといえるでしょう。

Selenium WebDriverを使うための準備

 ここまではSelenium WebDriverの特徴について整理しました。ここからはサンプルアプリケーションを用いたSelenium WebDriverの実装方法を紹介していきます。

 まず、サンプルを用いた実装の紹介の前に準備と前提環境について説明します。

Selenium WebDriverの入手

 まず、Selenium WebDriverはDownloadページの「Selenium Client Drivers」の項にあるテストプログラムを実装する対象言語のDownloadリンクからダウンロードします。

 もしChromeでのテストを実施する場合にはChromeWebDriverを別途入手する必要があります。入手方法は「Downloads - chromedriver - WebDriver for Google Chrome - Google Project Hosting」から自分のOS環境に合ったファイルをダウンロードしてください。

 ChromeWebDriverの設定は、「ChromeDriver - selenium - Information about the Chrome Driver - Browser automation framework - Google Project Hosting」の説明に従ってください。

前提環境の概要

 以降、サンプルの解説においては下記の環境(表1)で行っている前提とします。

表1 前提環境
カテゴリ ソフトウェア バージョン
OS Windows 7 Professional 64bit
Java Java SE 6 Update 32
Web/アプリサーバ Tomcat 7.0.27
IDE Eclipse 3.7.2
Eclipseプラグイン sysdeo tomcat plugin 3.3.0
Webブラウザ Firefox 13.0
Chrome 19.0.1084.56m
Internet Explorer(64bit版) 9.0.8112.16421
Selenium WebDriver (Java用) 2.21.0

 次ページでは、Selenium WebDriverのテストプログラムの記述方法について簡単に説明します。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。