
ユカイ、ツーカイ、カイハツ環境!(7)
ブラウザを選ばずWebテストを自動化するSelenium
岡本 隆史
2009/8/19
| 今回の主な内容 ・Webアプリのテストで誰もがイラつく大きな課題 ・テストに便利なSeleniumのツールはイロイロある ・Selenium IDEでテストケースを作成するには ・コラム 「アサーションコマンドについて」 ・Selenium RCで自動テストを実行するには ・コラム 「IEで利用する場合の注意」 ・Seleniumは、さらに高度な使い方もできる |
Webアプリケーションのファンクションテストを行うツールとして注目されている「Selenium」のバージョン1.0が6月20日にリリースされました。安定性が向上するとともに、Firefox 3.0、3.5(Selenium IDEは1.0.2から、Firefox 3.5に対応)や、Internat Explorer(以下、IE) 8などの最新のWebブラウザにも対応しました。
本稿では、Selenium 1.0をベースとしたSelenium IDEとSelenium RCを利用した効果的なSeleniumの利用方法を紹介します。
Webアプリのテストで誰もがイラつく大きな課題
Webアプリケーションテストを手で行うと、非常に煩雑です。Selenium登場以前の従来のやり方では、次のような問題がありました。
■ 回帰テストに時間がかかる
バグ修正や仕様変更などで、Webアプリケーションを変更した際に、デグレードが発生していないかどうか確認するためには、テスターがその都度Webブラウザを操作しながら目視でテストを行っていました。
人手による回帰試験ですべてのテストを行うと非常にコストが掛かるため、通常は、プログラム変更によって影響を及ぼすと思われる個所のみ回帰試験を行います。このようなテストでは、影響個所の洗い出し漏れにより、デグレードが発生することがしばしばあります。
また、Webアプリケーション全体に影響を及ぼすような共通的なJavaScriptフレームワークなどを変更した場合、すべての画面に対して試験をやり直す必要があります。Webアプリケーションの回帰テストは、同じような操作を何度も何度も繰り返す作業になり、非常に退屈な作業です。
■ 増え続けるサポートWebブラウザ
近年、IE、Firefox、Safari、Google Chromeなど、複数のWebブラウザが乱立してきています。さらに、Webブラウザのベンチマーク競争や、Webの標準技術への対応度の指標であるACIDでの得点競争が激化し、各Webブラウザともにバージョンアップを行う期間が短くなってきており、複数のWebブラウザ、バージョンが混在してきています。
Webアプリケーションを各Webブラウザに対応していることを確認するためには、試験稼働がブラウザ数×バージョン数だけ必要となり、Firefox 2.0、3.0、3.5、IE 6、7、8、Safari 3だけ対応したとしても、7回同じテストを行う必要があり、1つのWebブラウザに絞った場合の7倍のコストが必要となってきます。
さらに、Webブラウザが同じでもWindows、Mac OS X、Linuxなど、OSごとに挙動を確認する必要に迫られると、手に負えません。
■ Webアプリケーションのテストを自動化して楽をしよう
Seleniumを利用すると、Webアプリケーションのテストケースを作成しておけば、回帰テストはほぼ自動でできます。また、複数のWebブラウザでの試験も簡単にでき、Webアプリケーションのテストを効率化できます。
プロジェクトによっては、試験の証跡として画面キャプチャを要求されることがありますが、Seleniumを利用すれば自動的に画面キャプチャを取ることができ、仕様変更時に、「0からキャプチャを取り直す」という手間もなくなります(画面キャプチャの取得は、FirefoxとIEのみの機能)。
テストに便利なSeleniumのツールはイロイロある
Seleniumには、いくつかコンポーネントが提供されています。代表的なコンポーネントは下記のとおりです。
■ テスト実行の中心「Selenium Core」
オリジナルのJavaScript/HTMLベースのテストツールです。後述のSelenium IDEやSelenium RCのコアコンポーネントとして利用されるほか、単独でも利用できます。テストの実行には、Selenium Coreとテストケース(テストスィート含む)をWebサーバ/アプリケーションサーバ上に配置する必要があります。
■ Firefoxプラグインとして使うテスト作成ツール「Selenium IDE」
Firefoxのプラグインとして動作するSelenium Coreのテストケース生成支援ツールです。ユーザーのWebアプリケーションの操作を記録したり、値の検証の設定ができます。
■ Firefox以外のWebブラウザでテストするための「Selenium RC(Remote Control)」
ローカルもしくはリモートのコンピュータ上のWebブラウザを制御してWebアプリケーションのテストが可能です。HTMLのテストケースの実行のほか、Java/Pythonなどのプログラミング言語を利用してテストケースを記述し、実行できます。
■ そのほか
そのほか、複数の環境で同時にテストを行うための「Selenium Grid」や、RubyがSeleniumに対応した「Selenium Ruby」「Selenium on Rails」、Eclipseからグラフィカルに画面遷移を表示しながらテストを行う「Cubic Test」などが提供されています。

Selenium Grid via kwout
■ Selenium IDE/RCによるSeleniumの進化
Seleniumファミリーの中で一番最初にリリースされたSelenium Coreのテストケースは、Webブラウザに対する操作と表示されているページに対する内容の検証をHTMLのテーブル形式で記述していきます。
Selenium IDE登場以前は、開発者はHTMLでテストケースを記述していましたが、テストケースを記述するための文法を覚える必要がありました。Selenium IDEの登場により、Webブラウザの操作を記録しながら、値の検証内容を設定できるようになり、非常に効率的にテストケースを作成できるようになりました。
また、Selenium Coreでテストケースを実行するには、Selenium CoreとテストケースをWebサーバもしくはアプリケーションサーバ上に配備する必要がありました。Selenium RCの登場により、Webサーバ上にSelenium Coreやテストケースを配備することなく、テストを実行できるようになりました。
次ページからは、Selenium IDEとSelenium RCを利用した効率的なWebアプリケーションのテスト方法をご紹介します。
| Index | ||||||||
|
||||||||
ユカイ、ツーカイ、カイハツ環境! バックナンバー 連載インデックスへ»
- 第1回 Trac Lightningで始めるチケット式開発「電撃」入門
- 第2回 SubversionとTracでファイル管理の“迷宮”から脱出
- 第3回 分散バージョン管理Git/Mercurial/Bazaar徹底比較
- 第4回 Aptanaなら開発環境とクラウドの連携が超お手軽!
- 第5回 App Engine/AptanaなどJavaクラウド4つを徹底比較
- 第6回 Eclipse 3.5 Galileoの「実に面白い」新機能とは
- 第7回 ブラウザを選ばずWebテストを自動化するSelenium
- 第8回 JUnit/FindBugs/PMDなどを総観できるQALab/Limy
- 第9回 Googlerも使っているIntelliJ IDEAのOSS版を試す
- 第10回 Webのバグを燃やしまくるFirebugと、そのアドオン7選
- 第11回 DB設計の神ツール「ERMaster」なら、ここまでできる
- 第12回 AWS ToolkitでTomcatクラスタをEC2上に楽々構築
- 第13回 究極の問題解析ツール、逆コンパイラJD-Eclipseとは
- 第14回 AzureのストレージをJavaで扱えるWindowsAzure4j
- 第15回 Java EE 6/Tomcat 7/Gitに対応したEclipse 3.6
- 第16回 単体テストを“神速”化するQuick JUnitとMockito
- 第17回 コード探知機「Sonar」でプロジェクトの深海を探れ!
- 第18回 Team Foundation ServerでJava開発は大丈夫か?
- 第19回 Review Boardならコードレビューを効率良くできる!
- 第20回 Bazaarでござ〜る。猿でもできる分散バージョン管理
- 第21回 「Hudson」改め「Jenkins」で始めるCI入門
- 第22回 Ant使いでもMavenのライブラリ管理ができるIvyとは
- 第23回 AWSの自由自在なPaaS「Elastic Beanstalk」とは
- 第24回 Eclipse 3.7 Indigo公開、e4、Orion、そしてクラウドへ
- 第25回 Java開発者が知らないと損するPaaSクラウド8選
- 第26回 Git管理の神ツール「Gitolite」なら、ここまでできる!
| Java Solution全記事一覧 |
TechTargetジャパン
- 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


