Selenium2とは
なぜ今、Selenium2の記事なのか
さて、上記の例でCodeZineの検索結果を見て気づいた方もいらっしゃるかもしれません。Seleniumに関する記事がすでにCodeZineに掲載されています。Googleなどのサーチエンジンで検索しても他のIT系サイトやブログ記事なども結構見つかります。ところが、ここに落とし穴があるのです。Seleniumに関する記事は古いもので2006年からあって当時のバージョンは0.7ですが、現在のバージョンは2.35.ググって出てくる内容は古いものから新しいものまでが混じっており、最新の情報に関しては一括してまとまっているものがない状況でした。
本シリーズで「Selenium2」と表記しているのにはワケがあります。実はSeleniumは昨年(2011年)にバージョン2.0がリリースされ、アーキテクチャが大幅に変わったのです。W3Cが標準化を検討しているWebDriverという仕様をアーキテクチャの柱として採用し、大幅に安定性や機能性が向上しました。つまり、それ以前の古いSeleniumとはまったくの別物と言っても過言ではありません。従って、本シリーズではバージョン2.0以降のWebDriverを中心とした新しいSeleniumを「Selenium2」と表記することで違いを明示しているのです。
そんなわけで、Selenium2(=Seleniumの最新版)の情報を一括で、概要から実践的なノウハウまでをまとめたものが本シリーズです。
Selenium2の特徴と機能
前置きが長くなりました。Selenium2の特徴をまとめておきます。
- OSSであり、無料で利用できます(ライセンスはApache License 2.0=商用利用も可能です)。上述した商用ツールは1マシンあたり約100万円かかります。
- Webブラウザの操作(ブラウザテスト)に特化しています。
- 複数言語対応:Java、C#、Python、Ruby(PHP、Perlはサードパーティが対応)
- 複数OS対応:Windows、OS X、Linux、Solaris
- PC向けブラウザだけでなく、iOS、Androidのモバイルブラウザにも対応しています
Selenium2は複数言語に対応しているため、より多くの開発に適用できます。市場動向という観点からみてみると、例えばJavaでは単体テストツールとしてJUnitが有名ですが、Googleトレンドで調べてみるとSeleniumは順調に伸びており、JUnitを逆転しています。
次いでSelenium2の機能をまとめます。以下に、ブラウザテスト自動化ツールが備えている主な機能を示します。Selenium2が対応している機能には○を示しています。×のものはSelenium2単体では提供していませんが、他のライブラリやツールと連携することで対応できるものもあります。
ブラウザテスト自動化ツールの主な機能 | Selenium2 | |
---|---|---|
テストスクリプトの生成 | ○ | |
テストの自動実施 | ○ | |
スクリーンショット取得 | ○ | |
検証 | 画面項目 | ○ |
DB | × | |
画像 | × | |
データ駆動テスト | × | |
マルチプラットフォーム対応 | Web(PC) | ○ |
Web(モバイル) | ○ | |
Flex | × | |
Javaアプレット | × | |
VB(C/S) | × | |
テスト管理 | × |
Selenium2のメリット・デメリットと使いどころ
Selenium2のメリット
Selenium2を使うメリットは、上述したブラウザテストの課題に対応できる点です。
- 複数ブラウザ(クロスブラウザ)の対応。基本的には1つのテストコードで、ソースコードまたは設定ファイルを1行変更するだけでIEもFirefoxもChromeもテストできます。
- モバイルブラウザのテストも発展途上ではあるものの対応可能。
- リグレッションテストの対応。一度テストコードを準備してしまえば何度でも同じテストを実行できるため、これまでは時間やコストの制限で十分に実施できなかったリグレッションテストを実施できるようになります。
- Jenkinsなどと組み合わせて継続的統合(CI)の対応が可能。
- 属人性・ヒューマンエラーからの解放。テスト実施者による違いや手順誤りによる確認漏れなどが発生しません。
Selenium2のデメリット・問題点
むろん、良いことばかりではありません。Selenium2を利用するにあたって発生するデメリットや問題もあります。
- テストコード作成に時間がかかり、1回目のテスト工数は手作業の2倍以上。従って、短納期でテストは1回しか実施しないような案件ではSelenium2を適用すると余計に工数がかかりメリットがありません。
- 複雑な画面の場合、テストコード作成がさらに大変。例えばframeやpopupウィンドウを多用していたり、画面項目(name属性など)が動的に変化するなどの場合、テストコード作成にさらに工数がかかることが予想されます。
- システム・アプリケーションを修正した場合に、テストコードの保守・修正作業が発生。これは単体テストでも同様ですが、テストコード自体もメンテナンスしていく必要があります。
Selenium2の使いどころ
では、どのようにSelenium2を使っていくのが良いのでしょうか? 案件としては、以下のような条件に合致するものと相性が良いといえます。
- 自社開発のパッケージ
- 新規開発から保守までを請け負っている(ライフサイクルが長い)
- クロスブラウザ・マルチデバイス対応が必要
- 広範囲なリグレッションテストが求められる
また、適用する際のポイントを以下に示します。
- すべてを自動化しようとせず、部分適用から始める。テスト項目のすべてをSelenium2で自動化しようとすると、難易度の高い項目ですごく工数を食ってしまう。適用しやすいところから適用するのがよいでしょう。
- Selenium2適用を前提とした設計・製造ができるとベター。Selenium2が適用しやすい画面を設計・製造段階から意識しておくと効率良く対応しやすくなります。
- テストコードのメンテナンスを意識して、記述量をなるべく減らす。テストコードのメンテナンスは避けて通れないもの。ならばメンテナンス対象となるテストコードの記述量自体を減らす工夫をすると良い。例えばパラメータ化(データ駆動テスト)などが挙げられます。
終わりに
ここまでSelenium2がどのようなものかをご説明してきましたが、興味が湧きましたでしょうか。HTML5時代はますますWebシステム・Webアプリケーションの重要性が高まることが予想されます。適材適所でSelenium2をうまく活用して、手作業・人海戦術のテスト作業に別れを告げることができたならば本望です。
次回は、Selenium2の基本的な使い方を具体的にご説明します。