検索
連載

Selenium WebDriverでWebアプリのテストが変わる(前編):

iPhone/Android含むブラウザ自動テストの最終兵器Selenium WebDriverとは (1/2)

Chrome、Firefox、Internet Explorer、Opera、Android、iOSといったブラウザに対応し、Java、C#、Python、Rubyなどが使えるWebテスト自動化ツールの3つの特徴と環境、実装方法を簡単に紹介する【2017年の情報に合うように更新】。

[PC用表示]

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

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

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

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

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

  • Selenium WebDriver

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

  • WebDriver

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

3つの大きな特徴

 Selenium WebDriverには、大きく下記3点の特徴があります。

  1. 複数言語に対応
  2. 複数Webブラウザ対応
  3. 設計・実装の明確さ

 テストプログラムの言語サポートが複数あり、それぞれの言語で複数Webブラウザをサポートしていいます。図1のテスト実行時イメージを参照してください。


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

【1】Java、C#、Python、Ruby、JavaScript(Node.js)などの複数言語に対応

 Selenium WebDriverを用いてテストを実行する際は、テストプログラムからWebDriver(図1ではdriver)のAPIを使用することで、Webブラウザをコントロールできます。

 Selenium WebDriverではテストプログラムの言語としてJava、C#、Python、Ruby、JavaScript(Node.js)の5言語を公式にサポートしています。

 なお他にも、FacebookなどのサードパーティーがPHPなど別の言語のサポートを行っています。

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

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

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

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

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

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


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

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

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

Selenium WebDriverを使うための準備

 ここまでは、Selenium WebDriverの特徴について整理しました。ここからは、実装方法を紹介していきます。

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

Selenium WebDriverのダウンロード

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

 次に、テストするブラウザに合わせたWebDriverをダウンロードします。「Third Party Drivers, Bindings, and Plugins」の項から、対象ブラウザ用のWebDriverを取得してください。WebDriverの詳しい設定方法などについては同ページ内からリンクされているwikiなどを参照ください。

 なお、Internet Explorer用のWebDriverについては「The Internet Explorer Driver Server」の項にあるので、こちらから取得してください。32bit用と64bit用のWebDriverがありますが、64bit版はかなり低速なため、基本的には32bit用のWebDriverを利用した方がよいでしょう。

前提環境の概要

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

表1 前提環境
カテゴリ ソフトウェア バージョン
OS Windows 7 Professional 64bit
Java Java SE 8 Update 91
Web/アプリサーバ Tomcat 8.5.14
IDE Eclipse 4.6.2
Webブラウザ Firefox 53.0
Chrome 57.0.2987.133
Internet Explorer(64bit版) 11.0.6900.18638
Selenium WebDriver (Java用) 3.3.1

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

       | 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

ページトップに戻る