前回はテスト工程の最初の段階である単体テストについてご紹介しました。単体テストの次は統合テスト(結合テスト)、システムテストと続いていきます。これらの工程でのテスト内容は、対象とするシステム形態やドメインによって異なってきます。
今回は、皆さんがユーザとして活用しているWebアプリケーションを対象に、統合テストやシステムテストで実施するテスト内容について紹介し、中でもアプリケーションの「機能」に着目したテストの観点について掘り下げて紹介します。
Webアプリケーションのテストの特徴
皆さんは普段の生活の中でもWebアプリケーションを利用する機会が多いと思います。情報ポータルサイト、検索サイト、オンラインショッピング、オンラインバンキング、掲示板、ブログ、SNSなどさまざまなWebアプリケーションを使っていることでしょう。また最近は、パソコンだけでなく携帯電話からも実行できるアプリケーションも増えており、今や仕事や趣味に欠かせないツールとなっています。
このようなWebアプリケーションには以下のような特徴があります。
- インターネット(またはイントラネット)を介した情報のやり取り
- さまざまなクライアント環境での画面表示
- 複数のWebページから構成される情報のリンク
- データベースと連携した内部処理
これらの特徴は、普段利用しているときにはあまり意識しないかもしれません。テストをする際は、こういった特徴に基づき、それがきちんと機能しているか、あるいはその特徴によって問題が発生していないかに注意する必要があります。
Webアプリケーションのテストの種類
それでは、こういった特徴を踏まえて、Webアプリケーションのテストの種類別に注意すべき観点を見てみましょう。
機能テスト
Webアプリケーションでは、画面への入力やボタン押下などのアクションの実行により、画面が遷移して処理結果が表示されます。その裏では、データベースが更新されたり、メールが送られたりといった処理が行われることがあります。これらがWebアプリケーションがもつメインの機能となりますので、ある入力やアクションに対して、表示される結果や実行される処理が正しいかどうかを確認する必要があります。
性能テスト
Webアプリケーションを使っていて、なかなか応答が返ってこないという経験は誰でも一度はあるのではないでしょうか。Webでは、よく「8秒ルール」などとも言われるように、ページ全体が表示されるのにあまり時間がかかるようでは、ユーザがストレスを感じてしまい、いくら正しく機能が実行されても、高品質なアプリケーションとは言えません。このようなレスポンスタイムをはじめとして、アプリケーションの性能(パフォーマンス)を測定し、その妥当性を確認するテストが必要になります。
負荷テスト
Webアプリケーションは不特定多数の人から大量のアクセスが集中する可能性があります。スポーツやコンサートのチケット購入サイトが大量のアクセスでダウンしてしまうことがしばしばあります。大量のアクセスに対応できるようにシステムを増強するにはコストがかかってしまいますので、決められたスペックの中で、どこまでの負荷に耐えられるかを把握しておき、その負荷を超えた場合にはシステムがダウンしないような対処をしておくことも必要になります。
ユーザビリティテスト
「人は見た目が9割」などという本が話題になりましたが、Webサイトも見た目が重要です。まずは、色づかいやレイアウトなどが見やすければ第一印象がよくなります。どんなによい情報や素晴らしい機能を提供していても、Webページの印象がよくないと、ユーザは使ってくれません。それに加えて、ユーザがそのサイトで欲しい情報ややりたいことにすぐたどり着けるようなナビゲーションがあったり、使い方が分からないときのためのヘルプが準備されているなどといった配慮も重要になります。
セキュリティテスト
Webアプリケーションを使っていていちばん怖いのは、ネットワーク上に情報が漏れてしまうことでしょう。オンラインショッピングサイトなどを使って、クレジットカードの情報が外に漏れて悪用されたら、ユーザは多大な損害を被ります。そしてそれが訴訟問題に発展すれば、システムを提供している会社や開発を担当した会社にまで損害が及びます。また、悪意のあるユーザがアプリケーションの脆弱性をついて、情報を盗み出したり、システムをダウンさせたりすることもあります。このようなことが起きないように、未然に対策を打っておく必要があります。
これらがWebアプリケーションに対する主なテストとなります。テストの種類としては一般的なテストと大きな違いはありませんが、その中で確認すべきことに関しては、Webアプリケーション特有の観点があることがおわかりいただけたでしょうか。
続いて、今回はこの中から機能テストを取り上げ、より詳細な観点についてご紹介します。
Webアプリケーションの機能テスト
Webアプリケーションの機能テストをするにあたっては、第4回 ブラックボックステストでも紹介した、同値分割や境界値分析を用いて、画面上の入力フィールドへの入力値を決めるのが基本です。ただ、Webアプリケーションの機能テストでは、Webアプリケーション特有のテストの観点や結果確認の観点が必要になります。主なものをいくつか挙げてみましょう。
画面遷移とシナリオ
Webアプリケーションをどのような手順(シナリオ)で操作し、その結果どのように画面が遷移していくのかに着目したテストが必要になります。画面遷移のパスはいくつかありますので、そのパスを(ホワイトボックステストのように)網羅するようにテストケースを作ります。
画面表示
画面上の適切な位置に適切な情報が表示されていることを確認します。ただ、画面には大量の文字や画像がありますので、すべてを確認するのは困難な場合もあるでしょう。その際は、表示内容が動的に変わる部分などを中心に確認します。
アクション
画面上でのボタン押下などのアクション実行だけでなく、ブラウザに備わっているアクション実行や、キーボードやマウス操作などをしたときに、想定される動作を行うかどうかや、おかしな挙動をしないかどうかを確認します。
たとえば、ボタンの二度押し、ブラウザの「戻る」「進む」ボタンによる画面遷移、ブラウザの強制終了(ウィンドウ右上の×マークのクリック)、ブラウザの複数立ち上げ(Ctrl+Nキー押下)などがあります。
データベースの更新
Webアプリケーションのテストで確認するのは、表面上に見える画面だけでなく、データベースと連携する場合には、その内容が正しく更新されていることも確認する必要があります。特に複数ユーザが同時実行した場合の排他制御が正しく行われているかどうかは重要な観点です。
アクセス権
Webアプリケーションでは、ユーザIDとパスワードによる認証(ログオン)が必要なものがよくあります。本来、認証しないと閲覧できないコンテンツが認証前に見えてしまうと、機密情報の漏洩にもつながりかねません。従って、認証前と認証後での表示内容の変化や、認証されたユーザの権限による表示項目の違いが、重要な確認ポイントとなります。
セッション管理
Webアプリケーションでは、ログオンしてからログアウトするまで、あるいは操作中の一定時間内を1セッションとし、その間は情報が引き継がれていく必要がありますし、セッションを切った後は前の情報が消去されている必要があります。特にシステムエラーなどで強制的にアプリケーションが終了したときにも、セッションが残っていないことを確認することも必要です。
さまざまなブラウザでのテスト
Webアプリケーションのテストで最もやっかいなのは、ブラウザの種類やバージョンによって挙動が変わることではないでしょうか。インターネット上で誰でもアクセスできるようなWebアプリケーションであれば、利用するブラウザを限定することは困難です(推奨利用環境を明示することはできますが、それ以外の環境での使用を拒否するように作りこむのはかなりの労力を要します)。したがって、代表的なWebブラウザ(Internet Explorer、Firefox、Safariなど)の代表的なバージョンを使ってテストする必要があります。
また、携帯電話にも対応したアプリケーションであれば、各キャリアの各端末に対して確認が必要になります。このような利用環境の条件を変えたテストは「構成テスト」と呼ばれることもあります。
さらに、同じバージョンの同じブラウザであっても、JavaScriptの有効/無効や、セキュリティの設定などによって挙動が変わることもあります。それらのすべてのパターンをテストすることは不可能ですが、推奨設定から変更した場合に動作を保証するのか否かを明確に示すためにも、テストが必要になる場合があります。
まとめ
今回は、Webアプリケーションの特徴に基づいたテストの概要と、機能テストでの重要な観点についてご紹介しました。Webアプリケーションは様々な観点、さまざまな環境でテストが必要になりますので、ツールを使って効率化を図るのも有効な手段です。次回はWebアプリケーションのテストを自動化するツールとその利用方法について紹介します。