Webテストの中身を見てみよう
さて、ここまででWebテストを作成して実行する一番単純な方法についてご理解いただけたのではないかと思います。ここまでの手順だけでも十分に事足りるケースも多々あるとは思いますが、Webテストの中身を知ることでより便利に使えるようになると思います。ここでは、先ほど作成したWebテストを元にVSTTのWebテストがどのように構成されているのかを見ていきたいと思います。
図10に示す「WebTest1.webtest」のURLを展開すると図14のようになります。
URLを展開すると、子ノードとして「フォームポストパラメータ」や「抽出規則」「QuertyStringパラメータ」といったものがあるのが確認できます。これらの要素はWebアプリケーションの操作を記録する際に必要なものがすべて設定されているので基本的にはあまり変更する必要はありません。しかし、抽出規則に関しては、特定のHTML要素から属性値を抽出したり、HTTPヘッダーから特定の文字列を抽出したりしたい場合には個別に設定する作業が必要になります。
これらの他にも検証規則というものも用意されています。抽出規則がHTTP通信から特定の条件に一致するものを抽出するのに対し、検証規則はHTTP通信の中に特定の条件に一致するものが含まれているかどうかを検証します。この検証規則を利用することで、Webテストの合格条件をカスタマイズすることができるようになります。
以下では、追加で設定が必要になることがある抽出規則と検証規則について、もう少し詳細を見ていくことにします。
抽出規則の内容
抽出規則にはいくつかの定義済みルールが用意されています。まずはそれらについて確認してみましょう。以下の表1に、設定可能な抽出規則の一覧を示します。
抽出規則 | 説明 |
属性値の抽出 | 指定したHTMLタグから属性の値を抽出します。 |
フィールドから抽出 | 指定したフォームフィールドの値を応答から抽出します。 |
HTTPヘッダーの抽出 | HTTPヘッダーの値を抽出します。 |
正規表現の抽出 | 正規表現と一致するテキストを応答から抽出します。 |
テキストの抽出 | テキストを応答から抽出します。 |
非表示のフィールドから抽出 | すべての隠しフィールドを応答から抽出します。 |
抽出規則を設定する際には、全抽出規則共通で「コンテキストパラメータ名」という値を設定します。これはC#やVisual Basicで言う変数名のようなもので、Webテスト内の任意の場所からアクセスするための名前になります。また抽出規則は要求ではなく、応答に対して有効となる規則のため、そのことを考慮に入れた上で設定を行う必要があることにも注意が必要です。個別の設定内容については、以下で説明します。
属性値の抽出
指定したHTMLタグ内にある指定した属性名から属性値を抽出するための規則です。属性値の抽出規則を利用する場合には以下の設定を行います。
パラメータ名 | 説明 |
タグ名 | 抽出する属性値を含んでいるHTMLタグ名を指定します。 |
属性名 | 抽出する属性値を含んでいる属性名を指定します。 |
属性名の一致 | 対象のHTMLタグ内に含まれていなければならない属性名を指定します。省略可能です。 |
属性値の一致 | 対象のHTMLタグ内に含まれていなければならない属性値を指定します。省略可能です。 |
例えば、ページで読み込まれているすべての外部スタイルシートファイルを抽出したい場合には、次のように設定します。
パラメータ名 | 設定値 |
タグ名 | link |
属性名 | href |
属性名の一致 | type |
属性値の一致 | text/css |
フィールドから抽出
指定したフォームフィールドから値を取得するための規則です。フィールドからの抽出規則を利用する場合には以下の設定を行います。
パラメータ名 | 説明 |
フォームフィールド名 | 値を抽出するフォームフィールドの名前を設定します。 |
例えば、応答結果として得られるHTMLのフォームにtxtFirstNameフィールドがあり、あらかじめ設定されている値を取得するという場合には、次のように設定します。
パラメータ名 | 設定値 |
フォームフィールド名 | txtFirstName |
HTTPヘッダーの抽出
指定したHTTPヘッダー名から値を取得するための規則です。HTTPヘッダーからの抽出規則を利用する場合には以下の設定を行います。
パラメータ名 | 説明 |
ヘッダー名 | 値を抽出するHTTPヘッダーの名前を設定します。 |
必要 | true / falseで設定します。この設定がtrueの場合、この規則が失敗するとテストは失敗します。 |
例えば、応答に含まれるHTTPヘッダーのCache-Controlの値を取得し、見つからないとテストを失敗にするケースでは、次のように設定します。
パラメータ名 | 設定値 |
ヘッダー名 | Cache-Control |
必要 | true |
正規表現の抽出
HTTPレスポンスの本体から、正規表現に一致する文字列を取得するための規則です。正規表現の抽出規則を利用する場合には以下の設定を行います。
パラメータ名 | 説明 |
正規表現を使用する | 検索条件となる正規表現を設定します。 |
大文字と小文字を区別しない | true / falseで設定します。検索の際に大文字と小文字を区別するかどうかを設定します。 |
必要 | true / falseで設定します。この設定がtrueの場合、この規則が失敗するとテストは失敗します。 |
インデックス | 検索結果が複数見つかった場合、取得するインデックスを0番からで設定します。 |
テキストの抽出
HTTPレスポンスの本体から特定の条件に一致する文字列を取得するための規則です。正規表現の抽出規則とは異なり、抽出対象文字列の前後の区切り文字を条件として抽出します。テキストの抽出規則を利用する場合には以下の設定を行います。
パラメータ名 | 説明 |
開始 | 抽出するテキストの直前に発生する区切り文字列を設定します。 |
で終わる | 抽出するテキストの直後に発生する区切り文字列を設定します。 |
大文字と小文字を区別しない | true / falseで設定します。検索の際に大文字と小文字を区別するかどうかを設定します。 |
正規表現を使用する | true / falseで設定します。この設定がtrueの場合、検索条件が正規表現として扱われます。 |
必要 | true / falseで設定します。この設定がtrueの場合、この規則が失敗するとテストが失敗になります。 |
インデックス | 検索結果が複数見つかった場合、取得するインデックスを0番からで設定します。 |
例えば、<title>で設定されている文字列など、特定範囲に含まれている文字列を取得する場合にテキストの抽出規則を利用します。例に示した、<title>の内容を取得する場合には、次のように設定します。
パラメータ名 | 設定値 |
開始 | <title> |
で終わる | </title> |
大文字と小文字を区別しない | true |
正規表現を使用する | false |
必要 | true |
インデックス | 0 |
非表示のフィールドから抽出
hiddenフィールドの内容を抽出したい場合に利用します。この抽出規則は規則を追加しただけで有効となり、自動的にhiddenフィールドの内容を取得してくれるようになります。抽出した際にはhiddenフィールド一つごとにコンテキストパラメータ名が以下の規則によって設定され、そこに値が設定されます。
$HIDDEN1.コントロールのID名
抽出規則の作成
定義済みの抽出規則を利用するだけでも十分に事足りることがほとんどですが、これだけでは自分のやりたいことを満たせない場合には、抽出規則を独自に作成することもできます。カスタム抽出規則を作るには、VSTTに用意されているチームテストAPIを利用してC#やVB.NETなどの.NET Framework言語を用いて開発を行います。作成した抽出規則は定義済み抽出規則と同様にWebテストのデザイナ上から設定を行うことができます。
定義済み抽出規則だけでは物足りない場合には一度お試しください。抽出規則の具体的な作成方法は、本稿の範疇を越えるので割愛します。
検証規則の内容
抽出規則に非常によく似たものに検証規則というものがあります。抽出規則は値を抽出するために利用しますが、検証規則は値が存在しているかどうかを確認するために利用します。Webテストは作成してそのまま実行しただけでは、WebサーバーからHTTP状態200が返ってくればテストOKという判断を行いますが、検証規則を追加することでテストの合格条件をカスタマイズすることができるようになります。
検証規則にも抽出規則同様にいくつかの定義済みルールが用意されています。まずはそれらについて確認してみましょう。以下の表11に、設定可能な抽出規則の一覧を示します。
検証規則 | 説明 |
フォームフィールド | 指定した名前と値を持つフォームフィールドの存在を検証します。 |
検索テキスト | 指定したテキストが応答に存在することを検証します。 |
最大要求時間 | 指定した時間内に要求が完了することを検証します。 |
必要な属性値 | 指定した値の属性を含む指定したHTMLタグが存在することを検証します。 |
必要なタグ | 指定したHTMLタグが応答に存在するかどうかを検証します。 |
検証規則を設定する際には、全検証規則共通で「レベル」という値を設定します。レベルには「Low」「Medium」「High」の3つの値が用意されており、設定した検証規則を実行するカテゴリを設定します。このレベルの設定はWebテストではなく、次回解説予定のロードテストを実行する際のパフォーマンスに影響を及ぼします。
簡単に解説をしておくと、ロードテストを実行する際にも検証レベルの設定を行う部分があり、そこでLowが設定された場合には検証規則のレベルが「Low」に設定されているもののみが実行され、Highが設定された場合には検証規則のレベルに関係なくすべてが実行されると言った具合です。
Webテストとロードテストは密接に連携しており、次回の解説でも今回作成したWebテストを使用して解説を行う予定です。ですので、Webテストに影響がないからといって安易に考えないように注意してください。
また、検証規則も要求ではなく、応答に対して有効となる規則のため、そのことを考慮に入れた上で設定を行う必要があることにも注意が必要です。では、個々の定義済み検証規則について見ていきたいと思います。
フォームフィールド
指定した名前および値が含まれるフォームフィールドが存在しているかを検証するための規則です。フォームフィールドの検証規則を利用する場合には以下の設定を行います。
パラメータ名 | 説明 |
フォームフィールド名 | 値を抽出するフォームフィールドの名前を設定します。 |
予期された値 | 存在しているべき値を設定します。 |
例えば、応答結果として得られるHTMLのフォームにtxtFirstNameフィールドがあり、「Adam」という値が設定されているはずであるという検証を行う場合には次のように設定します。
パラメータ名 | 設定値 |
フォームフィールド名 | txtFirstName |
予期された値 | Adam |
検索テキスト
HTTPレスポンスの本体に指定の文字列が含まれているかどうかを検証するための規則です。検索テキストの検証規則を利用する場合には、以下の設定を行います。
パラメータ名 | 説明 |
検索テキスト | 検索するテキストを設定します。 |
大文字と小文字を区別しない | true / falseで設定します。検索の際に大文字と小文字を区別するかどうかを設定します。 |
正規表現を使用する | true / falseで設定します。この設定がtrueの場合、検索条件が正規表現として扱われます。 |
テキストが見つかれば成功 | true / falseで設定します。検索テキストが見つかった場合に成功なのか、見つからなかった場合に成功なのかを設定します。 |
例えば、タイトルとして「.NET Pet Shop 4.0」が設定されていることを検証する場合には、次のように設定します。
パラメータ名 | 設定値 |
検索テキスト | <title>.NET Pet Shop 4.0</title> |
大文字と小文字を区別しない | true |
正規表現を使用する | false |
テキストが見つかれば成功 | true |
最大要求時間
要求の処理時間が時間内に終了するかどうかを検証するための規則です。最大要求時間の検証規則を利用する場合には以下の設定を行います。
パラメータ名 | 説明 |
最大要求時間(ミリ秒) | 要求を完了するための最大ミリ秒数を設定します。 |
例えば、ある要求が3秒以内に完了しなければいけないという検証を行う場合には、次のように設定します。
パラメータ名 | 設定値 |
最大要求時間(ミリ秒) | 3000 |
必要な属性値
HTTP応答のボディー内に指定した条件に一致する属性値が存在しているかをHTMLタグ、属性名をもとに設定します。必要な属性値の検証規則を利用する場合には、以下の設定を行います。
パラメータ名 | 説明 |
タグ名 | 検証する属性値を含んでいるHTMLタグ名を指定します。 |
属性名 | 検証する属性値を含んでいる属性名を指定します。 |
属性名の一致 | 対象のHTMLタグ内に含まれていなければならない属性名を指定します。省略可能です。 |
属性値の一致 | 対象のHTMLタグ内に含まれていなければならない属性値を指定します。省略可能です。 |
予期された値 | 存在しているべき値を設定します。 |
大文字と小文字を区別しない | true / falseで設定します。検索の際に大文字と小文字を区別するかどうかを設定します。 |
例えば、「StyleSheet.css」というスタイルシートが読み込まれているかどうかの検証を行いたい場合には、次のように設定します。
パラメータ名 | 設定値 |
タグ名 | link |
属性名 | rel |
属性名の一致 | type |
属性値の一致 | text/css |
予期された値 | StyleSheet.css |
大文字と小文字を区別しない | true |
必要なタグ
HTTP応答のボディー内に指定したHTMLタグが発生する回数を検証するための規則です。必要なタグの検証規則を利用する場合には以下の設定を行います。
パラメータ名 | 説明 |
必要なタグ名 | 検証対象のHTMLタグ名を設定します。 |
最小発生件数 | HTMLタグが発生する最小回数を設定します。 |
例えば、フォームフィールドに10個の入力フィールドがあるべきだという検証を行いたい場合には、次のように設定します。
パラメータ名 | 設定値 |
必要なタグ名 | input |
最小発生件数 | 10 |
検証規則の作成
定義済みの検証規則を利用するだけでも十分に事足りることがほとんどですが、抽出規則同様に検証規則も独自に作成することが可能です。カスタムの検証規則を作成したり使用したりするための基本的な概念は抽出規則と同様です。検証規則の具体的な作成方法についても本稿の範疇を超えるので割愛させていただきます。