Webテスト
Webテスト機能はWebアプリケーションの操作内容を記録し、同じ手順の操作を行うことでWebアプリケーションの試験を行うためのものです。テストの実施前にWebアプリケーションの操作を記録する必要があるため、ある程度動作可能なWebアプリケーションが構築されていることがこの機能を利用するための前提条件になります。またテストの記録は、Internet Explorer上で動作するアドオンによって行われるため、必然的にテストの記録に利用できるブラウザはInternet Explorerに限定されます。以下の図4はInternet ExplorerによってWebアプリケーションの操作を記録しているもので、図5は記録結果をVisual Studio上で表示しているものです。
図4、図5では、URLがリストとして表示されていますが、VSTTのWebテストは、Webアプリケーションの操作を直接記録するわけではなく、Webアプリケーションの操作によって発生したHTTP要求を記録しています。一般的なアプリケーション機能テストを行う製品では、ユーザーの操作そのものをエミュレートして、同様の処理をツールで自動実行させていることがほとんどですが、この点で大きく異なるため注意が必要です。VSTTのWebテストがこのような仕様であるため、Webアプリケーションの操作を記録しただけでは、テストの実行時にクライアント側処理のみを行うJavaScriptや、ActiveXコントロールについてはテストできないという点は、場合によってネックになることもあります。この場合は、依存要求を手動で設定したり、WebテストをC#などのコードに変換して処理を追加したりして、クライアントのみで動作する状況をエミュレートすることで対応できます。
例えば、図5のように作成されたWebテストのURL一行一行をVSTTでは「要求」と呼びます。この要求がサーバーに発行される際にこれに関連付けて追加の要求を設定することができます。これを「依存要求」と呼びます。依存要求を手動で設定することで、Webアプリケーションの操作の記録では漏れてしまったHTTP要求を追加し、より複雑なテストを実行することができるようになります。図6は依存要求を設定している例です。
さらに高度で複雑なWebテストを行う場合には、記録したWebテストをC#などのコードに変換し、Webテスト自体をプログラミングすることができます。VSTTのWebテストには、C#などの.NET Framework言語から操作可能なさまざまなAPIが提供されているため、これらのAPIを利用して、クライアント側のみで動作するJavaScriptの状態などをエミュレートして、HTTP要求の内容を変更するなどの処理を行うことが可能です。しかし、単体テストのテストコードなどでも同様ですが、テストコードをテストするコードは記述できないため、Webテストをコード化して編集するという方法はあまり利用しない方がいいのではないかと考えています。この方法はどうしても必要な場合のみに利用する方がいいでしょう。次の図7はWebテストをC#のコードに変換した例です。
VSTTのWebテストには他にも抽出規則と検証ルールの設定や、データバインディングといった機能も用意されています。
抽出規則と検証ルールはHTTP要求の応答として返される内容に指定したIDやタグに一致する内容が含まれているか、特定の文字列に一致する内容があるかなどを設定するために利用するものです。この機能を利用することである程度の検証を行うことができます。レイアウトが正しいか、色の表示が正しいかなどの見た目にかかわる部分については検証を行うことはできません。
データバインディングは、ユーザー情報の登録などの入力フィールドに対して複数パターンの入力を試験したい場合に利用できる機能です。これを利用することで入力データをExcelやAccessなどに用意し、このデータをフォームフィールドパラメータなどと関連付けてテストを行うことができるようになります。これにより要求で送信される入力データを可変にすることができ、さまざまなケースのテストを行うことができるようになります。