TOPシステム開発> テストの記述言語〜HTML or 開発言語
Selenium
SeleniumでWebアプリケーションテストを自動化

第3回:事前準備とSeleniumの基礎知識

著者:DTS  大田尾 一作   2007/7/6
前のページ  1  2  3  次のページ
テストの記述言語〜HTML or 開発言語

   Seleniumのテストコードは連載第一回で述べたように、HTMLもしくは開発言語で記述します。HTMLで記述する場合「SeleniumCore」か「SeleniumRC」を利用します。開発言語で記述する場合は「SeleniumRC」を利用します。

   SeleniumRCにて開発言語で記述する場合、その言語のテスティングフレームワーク、例えばJavaの場合は「JUnit」を使用します。HTMLで記述する場合はテスティングフレームワークを使用しません。
Seleniumプロダクト テストコード記述対応言語 使用するフレームワーク
SeleniumCore HTML  
SeleniumRC HTML  
Java JUnit
C# NUnit
Perl Test::More
PHP PHPUnit
Python unitttest
Ruby Test::Unit

表4:テストケース記述対応言語

   HTMLと開発言語のどちらを選ぶかという選択基準としては以下のような項目が考えられます。

  • HTMLのわかりやすさ(汎用性)と開発言語の柔軟性、どちらを重視するか
  • テストを作成・実施する人は誰か
  • 既存のテストコードがあるか

表5:選択基準

   例えば開発メンバーとは別にQAメンバーがテストを作成・実施するような場合、HTMLを使用することが考えられます。一方、テストファースト的なアプローチなどをテストするのは専ら開発メンバーだという場合には、開発言語を使用した方が迅速に対応できるでしょう。


Seleniumのコマンド種別

   Seleniumでは、Seleniumが提供しているコマンドを指定(使用)することによってWebブラウザを操作したり、Webブラウザに表示されている内容を検証したりできます。テストコードを記述するのがHTMLでも開発言語でも、Seleniumが提供しているコマンドの体系(記述方法)はほとんど同じです。

   Seleniumのコマンドには3つの種類があります。


Actionコマンド

   指定したURLを開いたりフォームに入力する、ボタンやリンクをクリックしたりといった主にWebブラウザを操作するコマンドです。コマンド名に規則はありません。

  • open
  • type
  • click
  • addSelection

表6:Actionコマンドの例


Assertionコマンド

   このコマンドには2つの働きがあり、1つはページのタイトルやWebブラウザに表示されている内容を検証するものです。コマンド名は、assert〜またはverify〜ではじまるという規則があります。assert〜とverify〜の違いは、assertの場合は検証がNGの際にテストを中止するのに対して、verifyの場合はテストを続行することです。

   もうひとつは、指定した条件を満たすまで動作をウェイトする(待つ)ものです。一定の時間内(デフォルトは30秒)に条件を満たさない場合はNGとなり、テストを中断します。コマンド名はwaritFor〜ではじまるという規則があります。

  • assertTitle
  • verifyTextPresent
  • verityTable
  • assertConfirmation
  • waitForVisible

表7:Assertionコマンドの例


Accessorコマンド

   そのページ内の指定した要素についての値を取得して変数にセットするコマンドです。Seleniumの内部処理的にはAssertionコマンドの元になっています(AssertionはAccessorをベースにして作成されている)。コマンド名は、store〜からはじまるという規則があります。実際にテストコードを書く際に使用することはあまりないでしょう。

  • storeTitle
  • storeText
  • storeValue

表8:Accessorコマンドの例


Seleniumのコマンド記述方法

   Seleniumのコマンドは基本的に以下の書式で記述します。

コマンド 第一引数(ターゲット) 第二引数(バリュー)

表6:Seleniumのコマンド書式

   Seleniumでは第1引数のことを「ターゲット」、第2引数のことを「バリュー」と呼びます。その名前があらわように、第1引数は主に対象(ターゲット)となるHTML要素を示す場合が多く、第2引数は入力したり検証したりする値(バリュー)を示すことが多いです。引数の有無はコマンドによって異なりますが、基本的には以下の3パターンしかないため、非常にシンプルです。

  1. 引数なし
  2. 第1引数のみ
  3. 第1引数および第2引数あり

表7:引数の有無のパターン

   HTMLでテストコードを記述する場合は、HTMLのtableとして記述します。上記のコマンド書式にしたがって、1行3カラムのtableを作成し、そこにコマンドや引数を記述していくイメージです。引数がないコマンドの場合は、そのカラムは空にしておきます。

HTMLテストコードのtableイメージ
表8:HTMLテストコードのtableイメージ

   開発言語でテストコードを記述する場合は、その言語に従った関数呼び出しの記述方法と同様に行います。

Javaテストコードの例
Selenium sel = new DefaultSelenium("localhost", SeleniumServer
        .getDefaultPort(), testBrowser, testUrl);

sel.open("/MyApp/logout.do");  //−−−第1引数のみのコマンド
sel.type("id", "787878");      //−−−引数が2つあるコマンド

前のページ  1  2  3  次のページ


株式会社DTS 大田尾 一作
著者プロフィール
株式会社DTS  大田尾 一作
技術SE部在籍。業務内容は、Java/Web開発に役立つ技術の調査・推進。Selenium関連では、開発コミュニティにリファレンスガイド日本語訳を寄贈。ブログ(http://d.hatena.ne.jp/otao/)にてSelenium最新情報、Tips等も掲載。


INDEX
第3回:事前準備とSeleniumの基礎知識
  事前準備とSeleniumの基礎知識
テストの記述言語〜HTML or 開発言語
  Element Locatorの操作