TOPシステム開発> Seleniumの特徴
Selenium
SeleniumでWebアプリケーションテストを自動化

第1回:Webブラウザを使ったテストツールSeleniumとは

著者:DTS  大田尾 一作   2007/5/18
前のページ  1  2  3  次のページ
Seleniumの特徴

   先ほどは「テストの自動化ツール」という面からSeleniumをみてきましたが、実はその他にも様々な特徴を持っています。

マルチOS/マルチWebブラウザ対応

   Seleniumの大きな特徴の1つが、マルチOS/マルチWebブラウザ対応です。

   「マルチOS/マルチWebブラウザ」というのは、1つのテストコードに対して複数のOSやWebブラウザで実行することができるという意味です。これは特にWebブラウザの互換性を重視する場合に重宝する機能といえるでしょう。

   もし複数のWebブラウザで動作を確認したい場合、いちいちWebブラウザを変えて同じ試験項目をテストしなければなりません。それがSeleniumでは基本的にテストケースができあがっていれば、それぞれのWebブラウザで実行するだけでよいのです。

   例えばInternet Explorer(IE)でもバージョンが違うIE 5.5とIE 6.0で動作確認をする必要がある場合も、同様に同じテストケースをそれぞれ実行すればよいというわけです。

   SeleniumのWebサイトをみると、2007年3月下旬現在の最新版バージョン0.8.2では以下のOS/Webブラウザに対応していることがわかります。

OS Webブラウザ
Windows Internet Explorer 6.0、7.0
Firefox 0.8〜2.0
Mozilla Suite 1.6+、1.7+
Seamonkey 1.0
Opera 8、9
Mac OS X Safari 2.0.4+
Firefox 0.8〜2.0
Camino 1.0a1
Mozilla Suite 1.6+、1.7+
Seamonkey 1.0
OmniWeb(対応予定)
Linux Firefox 0.8〜2.0
Mozilla Suite 1.6+、1.7+
Konqueror
Opera 8、9

表1:Seleniumに対応しているOSとWebブラウザの種類

   もちろんSeleniumの動作がWebブラウザによって多少違う部分もあり、例えばSafariでは一部正常に動作しないコマンドがあるなど、100%の互換性が保障されているわけではありません。しかし今後の修正によって、Webブラウザ間での互換性の精度は今後より高まっていくと思われます。


理解しやすいコマンド体系とアプリケーションの言語に依存しないHTMLによるテストコード

   Seleniumを動作させるためのテストコードは、基本的にはHTMLで記述します。テスト即ちWebブラウザの操作および検証する内容は、3カラムのtableとして記述し、1行が1手順を示します。

   例えば、以下のログインテストの項目を考えてみます。

  • 手順1:ログイン画面のURLを開く
  • 手順2:社員番号のテキストボックスに123と入力
  • 手順3:ログインボタンをクリック
  • 手順4:ログイン後のホーム画面に遷移したことを確認

   上記の項目に対して、以下のようなtableをHTMLで作成します。tableの各行が上記の各手順に対応していることがわかると思います。

ログインテスト
URLを開く ログイン画面のURL  
入力 社員番号テキストボックス 123
クリック ログインボタン  
検証 titleが「ホーム画面」か  

表2:HTMLで作成するtable

   HTMLで記述することにはいくつかの利点があります。それはコードの1行が1手順をあらわしているため、手動での操作手順と対応させやすいこととや、3カラムしかないためコマンド体系が理解しやすいことがあげられます。

   また、テストコードがHTMLで書かれているということは、アプリケーション側の言語が何であるかを問わないということです。極論すれば、利用者(Webブラウザ)からみたHTMLコードが変わらない限り、サーバサイドの言語がまったく別のものになったとしても、同じSeleniumのテストコードを動かすことができるのです。

   つまりHTMLを利用することは、これはアプリケーションの開発者でなくても(アプリケーションの作りを知らなくても)テストコードを書けるということを意味しています。HTMLは汎用性の高い言語ですので、比較的多くの人が扱えることも一役買っているといえるでしょう。

   実際、筆者はPHPに関しては初心者なのですが、PHPで実装されたXOOPSというCMSのサイトに対してアプリケーションの中身をほとんど見ることなく、100数十項目におよぶSeleniumのテストコードを作成したことがあります。


より柔軟度が高い開発言語によるテストコード

   HTMLによるテストコードはわかりやすく汎用性も高いのですが、複雑なことを記述するにはあまり向いていません。例えばログインなど定型的な動作をメソッドとして分離させて、元のテストコードから呼び出すといったことができません。複数のテストコードで同じ処理をしている場合、いちいち同じ記述を書かなくてはなりません。

   これを簡単に記述したいというリクエストに応えてSeleniumでは開発言語を使ってテストコードを書くことも可能です。

   対応している言語はJava、C#、Ruby、PHP、Perl、Pythonと多岐に渡ります。

   テストコードを書く際に開発言語を使うことで、ログイン処理などの定型的な共通処理を別のメソッドとして切り出し、各テストケースからはメソッドを呼び出すだけで事足ります。定型処理の内容が変更になった場合の修正も簡単です。またループ処理によって同じ操作の繰り返しや、あまりないかもしれませんがif文による判定処理なども記述することが可能となります。

   開発言語を使ってテストコードを書く場合、各言語のテスティングフレームワークと連携して記述します。例えばJavaの場合ならJUnitのテストケースとして記述・実行することになります。つまりJUnitのテストケースとしてIDE上からテストを実施できるのです。またantやmavenのタスクとして登録することで夜間実行するバッチ処理的なテストも実施できます。

   一方、テストコードのわかりやすさや見易さはHTMLでの記述に比べて劣ります。コマンド体系はHTMLの書き方に準じるため比較的シンプルではあるものの、開発言語ならではのコーディング手法など、その言語に通じている人でないと若干理解しにくい面もあります。

   こういった側面に応じられるようSeleniumではHTMLと開発言語それぞれの特徴によって、各プロジェクトの事情に合わせたテストコードを作成することができるようになっています。

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


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


INDEX
第1回:Webブラウザを使ったテストツールSeleniumとは
  Seleniumとは
Seleniumの特徴
  面倒なテストコード記述をサポートするSelenium IDE