本シリーズのスコープと対象読者
本シリーズはWebシステム・Webアプリケーションのテストの中でも「Webブラウザを操作して実施するテスト」をスコープにしています。開発工程としては、1モジュールとして単体テストに位置付けられる場合もあれば、複数のモジュールやシステムと連携して結合テストや総合テストに位置付けられる場合もあるでしょう。これらのテストのことを、本シリーズでは便宜上「ブラウザテスト」と呼ぶことにします。
従って、本シリーズの対象読者は、Webシステム・Webアプリケーション開発に関わる方、特にブラウザテストに関わる方です。システムの開発言語は問いませんが、Java、C#、python、Ruby、PHP、Perlのいずれかでテストコードを記述します。
シリーズ前半はSelenium2というツールの概要を掴んでいただけますので、テストを計画したりプロジェクトをマネージしたりする方にも見ていただければと思います。シリーズ後半はテストを実行していくにあたっての実践的な内容ですので、テストを実行する方が中心です。
Webシステムのテスト(ブラウザテスト)を取り巻く状況と課題
はじめに、背景として今日のブラウザテストを取り巻く状況と課題を簡単に整理しておきましょう。
複数のブラウザ種類への対応(クロスブラウザ)
これまでのInternet Explorer(以下、IE)一辺倒ではなくFirefoxやGoogle Chromeのシェア上昇などによって、インターネット上に公開されているWebシステムは勿論のこと、イントラネット上の業務システムであっても「IE6のみ対応」では済まない状況になってきています。複数のブラウザに対応していることを確認しようとした場合、テスト項目は同じでもブラウザの種類に比例してテスト数が増えることになります。
モバイルブラウザの問題
スマートフォンの爆発的な普及に伴い、場合によってはモバイルブラウザのテストも必要になってきています。また、モバイルブラウザのテストは画面操作やスクリーンショットの取得など、PCブラウザに比べて大きく手間が掛かります。
リグレッションテストへの対応
追加開発や仕様変更、バグ修正などの際に、改修した部分のテストだけではなく、既存部分にも影響がないことを確認するテスト(リグレッションテスト)は、実施するととても工数がかかります。短納期化が進む中、リグレッションテストを一部またはまったく実施できない実情も少なからず見受けられます。
テストの自動化・継続的統合
アジャイル開発手法の浸透に伴い、日常的にテスト&ビルドを自動的に実行して短いサイクルで改善していこうという世界的なトレンドが広まっています。
ブラウザテストはこれまで「手作業・人海戦術」で実施されてきました。ところが上述のような状況・課題に対して「手作業・人海戦術」では対応しきれないことは明白です。そこで、これらの課題に対してテストを自動化することで解決しよう、ということでテスト自動化ツールの出番です。
ブラウザテストの自動化とは
「Webブラウザを操作して行うテスト」を自動化するというのは、「人間がWebブラウザを操作して」テストを実施する代わりに「テストツールが(テストコードに従って)Webブラウザを操作して」テストを実施するということです。それを行ってくれるのがブラウザテストの自動化ツールであり、今回紹介するSelenium2がその一つというこです。
Selenium2以外のブラウザテスト自動化ツールには、以下のようなものがあります。
ブラウザテスト自動化ツール(商用)
ブラウザテストの自動化を実例で体験(デモムービー)
ブラウザテストの自動化を体験するために、簡単な例を考えてみましょう。以下のようなテスト項目があったとします。
項番 | 項目名 | 実施内容 |
---|---|---|
CZ-SC-01 | 検索機能が正常に動作すること |
|
よくある検索機能の正常系テスト項目ですね。ここでは例としてCodeZineを題材にして、従来通り手でWebブラウザを操作してテストを実行してみます。テスト項目書には明記されていませんが、テスト実施のエビデンス(証跡)として画面のキャプチャ(スクリーンショット)を取ることが多々ありますので、検索ワードを入力して検索を実行する前と、検索実行後の検索結果画面の2か所でスクリーンショットを取得することにします。
- CodeZineのトップページを開きます。
- 右ペインに検索欄があるので検索ワード(例えば”selenium”)を入力し、プリントスクリーン機能や画面キャプチャツールを使用してスクリーンショットを取得します。
- 「検索」ボタンをクリックします。
- すると、検索結果画面が表示されました。ここでまた、スクリーンショットを取得します。
これをSelenium2で実行するとどうなるのか。デモムービーを用意しましたのでご覧ください(約1分、音声はありません)。
この例は非常に単純なテスト内容でしたが、これが100項目、200項目あったとしたらどうでしょうか。「実施する内容自体は単純だけど、時間がかかる」このような作業こそ自動化するメリットがあることは読者の皆さんはよくお分かりだと思います。