SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 2005 Team Edition for Software Testersを使ってみよう

VSTTのWebテスト機能でアプリケーション品質を強化する

Visual Studio 2005 Team Edition for Software Testersを使ってみよう(1)


  • X ポスト
  • このエントリーをはてなブックマークに追加

Webテストの中身を見てみよう

 さて、ここまででWebテストを作成して実行する一番単純な方法についてご理解いただけたのではないかと思います。ここまでの手順だけでも十分に事足りるケースも多々あるとは思いますが、Webテストの中身を知ることでより便利に使えるようになると思います。ここでは、先ほど作成したWebテストを元にVSTTのWebテストがどのように構成されているのかを見ていきたいと思います。

 図10に示す「WebTest1.webtest」のURLを展開すると図14のようになります。

図14 Webテストの中身
図14 Webテストの中身

 URLを展開すると、子ノードとして「フォームポストパラメータ」や「抽出規則」「QuertyStringパラメータ」といったものがあるのが確認できます。これらの要素はWebアプリケーションの操作を記録する際に必要なものがすべて設定されているので基本的にはあまり変更する必要はありません。しかし、抽出規則に関しては、特定のHTML要素から属性値を抽出したり、HTTPヘッダーから特定の文字列を抽出したりしたい場合には個別に設定する作業が必要になります。

 これらの他にも検証規則というものも用意されています。抽出規則がHTTP通信から特定の条件に一致するものを抽出するのに対し、検証規則はHTTP通信の中に特定の条件に一致するものが含まれているかどうかを検証します。この検証規則を利用することで、Webテストの合格条件をカスタマイズすることができるようになります。

 以下では、追加で設定が必要になることがある抽出規則と検証規則について、もう少し詳細を見ていくことにします。

抽出規則の内容

 抽出規則にはいくつかの定義済みルールが用意されています。まずはそれらについて確認してみましょう。以下の表1に、設定可能な抽出規則の一覧を示します。

表1 抽出規則の一覧
抽出規則 説明
属性値の抽出 指定したHTMLタグから属性の値を抽出します。
フィールドから抽出 指定したフォームフィールドの値を応答から抽出します。
HTTPヘッダーの抽出 HTTPヘッダーの値を抽出します。
正規表現の抽出 正規表現と一致するテキストを応答から抽出します。
テキストの抽出 テキストを応答から抽出します。
非表示のフィールドから抽出 すべての隠しフィールドを応答から抽出します。

 抽出規則を設定する際には、全抽出規則共通で「コンテキストパラメータ名」という値を設定します。これはC#やVisual Basicで言う変数名のようなもので、Webテスト内の任意の場所からアクセスするための名前になります。また抽出規則は要求ではなく、応答に対して有効となる規則のため、そのことを考慮に入れた上で設定を行う必要があることにも注意が必要です。個別の設定内容については、以下で説明します。

属性値の抽出

 指定したHTMLタグ内にある指定した属性名から属性値を抽出するための規則です。属性値の抽出規則を利用する場合には以下の設定を行います。

表2 属性値の抽出規則
パラメータ名 説明
タグ名 抽出する属性値を含んでいるHTMLタグ名を指定します。
属性名 抽出する属性値を含んでいる属性名を指定します。
属性名の一致 対象のHTMLタグ内に含まれていなければならない属性名を指定します。省略可能です。
属性値の一致 対象のHTMLタグ内に含まれていなければならない属性値を指定します。省略可能です。

 例えば、ページで読み込まれているすべての外部スタイルシートファイルを抽出したい場合には、次のように設定します。

表3 属性値の抽出の活用例
パラメータ名 設定値
タグ名 link
属性名 href
属性名の一致 type
属性値の一致 text/css

フィールドから抽出

 指定したフォームフィールドから値を取得するための規則です。フィールドからの抽出規則を利用する場合には以下の設定を行います。

表4 フィールドからの抽出規則
パラメータ名 説明
フォームフィールド名 値を抽出するフォームフィールドの名前を設定します。

 例えば、応答結果として得られるHTMLのフォームにtxtFirstNameフィールドがあり、あらかじめ設定されている値を取得するという場合には、次のように設定します。

表5 フィールドからの抽出の活用例
パラメータ名 設定値
フォームフィールド名 txtFirstName

HTTPヘッダーの抽出

 指定したHTTPヘッダー名から値を取得するための規則です。HTTPヘッダーからの抽出規則を利用する場合には以下の設定を行います。

表6 HTTPヘッダーの抽出規則
パラメータ名 説明
ヘッダー名 値を抽出するHTTPヘッダーの名前を設定します。
必要 true / falseで設定します。この設定がtrueの場合、この規則が失敗するとテストは失敗します。

 例えば、応答に含まれるHTTPヘッダーのCache-Controlの値を取得し、見つからないとテストを失敗にするケースでは、次のように設定します。

表6 HTTPヘッダーの抽出の活用例
パラメータ名 設定値
ヘッダー名 Cache-Control
必要 true

正規表現の抽出

 HTTPレスポンスの本体から、正規表現に一致する文字列を取得するための規則です。正規表現の抽出規則を利用する場合には以下の設定を行います。

表7 正規表現の抽出規則
パラメータ名 説明
正規表現を使用する 検索条件となる正規表現を設定します。
大文字と小文字を区別しない true / falseで設定します。検索の際に大文字と小文字を区別するかどうかを設定します。
必要 true / falseで設定します。この設定がtrueの場合、この規則が失敗するとテストは失敗します。
インデックス 検索結果が複数見つかった場合、取得するインデックスを0番からで設定します。

テキストの抽出

 HTTPレスポンスの本体から特定の条件に一致する文字列を取得するための規則です。正規表現の抽出規則とは異なり、抽出対象文字列の前後の区切り文字を条件として抽出します。テキストの抽出規則を利用する場合には以下の設定を行います。

表9 テキストの抽出規則
パラメータ名 説明
開始 抽出するテキストの直前に発生する区切り文字列を設定します。
で終わる 抽出するテキストの直後に発生する区切り文字列を設定します。
大文字と小文字を区別しない true / falseで設定します。検索の際に大文字と小文字を区別するかどうかを設定します。
正規表現を使用する true / falseで設定します。この設定がtrueの場合、検索条件が正規表現として扱われます。
必要 true / falseで設定します。この設定がtrueの場合、この規則が失敗するとテストが失敗になります。
インデックス 検索結果が複数見つかった場合、取得するインデックスを0番からで設定します。

 例えば、<title>で設定されている文字列など、特定範囲に含まれている文字列を取得する場合にテキストの抽出規則を利用します。例に示した、<title>の内容を取得する場合には、次のように設定します。

表10 テキストの抽出の活用例
パラメータ名 設定値
開始 <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に、設定可能な抽出規則の一覧を示します。

表11 検証規則の一覧
検証規則 説明
フォームフィールド 指定した名前と値を持つフォームフィールドの存在を検証します。
検索テキスト 指定したテキストが応答に存在することを検証します。
最大要求時間 指定した時間内に要求が完了することを検証します。
必要な属性値 指定した値の属性を含む指定したHTMLタグが存在することを検証します。
必要なタグ 指定したHTMLタグが応答に存在するかどうかを検証します。

 検証規則を設定する際には、全検証規則共通で「レベル」という値を設定します。レベルには「Low」「Medium」「High」の3つの値が用意されており、設定した検証規則を実行するカテゴリを設定します。このレベルの設定はWebテストではなく、次回解説予定のロードテストを実行する際のパフォーマンスに影響を及ぼします。

 簡単に解説をしておくと、ロードテストを実行する際にも検証レベルの設定を行う部分があり、そこでLowが設定された場合には検証規則のレベルが「Low」に設定されているもののみが実行され、Highが設定された場合には検証規則のレベルに関係なくすべてが実行されると言った具合です。

 Webテストとロードテストは密接に連携しており、次回の解説でも今回作成したWebテストを使用して解説を行う予定です。ですので、Webテストに影響がないからといって安易に考えないように注意してください。

 また、検証規則も要求ではなく、応答に対して有効となる規則のため、そのことを考慮に入れた上で設定を行う必要があることにも注意が必要です。では、個々の定義済み検証規則について見ていきたいと思います。

フォームフィールド

 指定した名前および値が含まれるフォームフィールドが存在しているかを検証するための規則です。フォームフィールドの検証規則を利用する場合には以下の設定を行います。

表12 フォームフィールドの検証規則
パラメータ名 説明
フォームフィールド名 値を抽出するフォームフィールドの名前を設定します。
予期された値 存在しているべき値を設定します。

 例えば、応答結果として得られるHTMLのフォームにtxtFirstNameフィールドがあり、「Adam」という値が設定されているはずであるという検証を行う場合には次のように設定します。

表13 フォームフィールドの検証の活用例
パラメータ名 設定値
フォームフィールド名 txtFirstName
予期された値 Adam

検索テキスト

 HTTPレスポンスの本体に指定の文字列が含まれているかどうかを検証するための規則です。検索テキストの検証規則を利用する場合には、以下の設定を行います。

表14 検索テキストの検証規則
パラメータ名 説明
検索テキスト 検索するテキストを設定します。
大文字と小文字を区別しない true / falseで設定します。検索の際に大文字と小文字を区別するかどうかを設定します。
正規表現を使用する true / falseで設定します。この設定がtrueの場合、検索条件が正規表現として扱われます。
テキストが見つかれば成功 true / falseで設定します。検索テキストが見つかった場合に成功なのか、見つからなかった場合に成功なのかを設定します。

 例えば、タイトルとして「.NET Pet Shop 4.0」が設定されていることを検証する場合には、次のように設定します。

表15 検索テキストの検証の活用例
パラメータ名 設定値
検索テキスト <title>.NET Pet Shop 4.0</title>
大文字と小文字を区別しない true
正規表現を使用する false
テキストが見つかれば成功 true

最大要求時間

 要求の処理時間が時間内に終了するかどうかを検証するための規則です。最大要求時間の検証規則を利用する場合には以下の設定を行います。

表16 最大要求時間の検証規則
パラメータ名 説明
最大要求時間(ミリ秒) 要求を完了するための最大ミリ秒数を設定します。

 例えば、ある要求が3秒以内に完了しなければいけないという検証を行う場合には、次のように設定します。

表17 最大要求時間の検証の活用例
パラメータ名 設定値
最大要求時間(ミリ秒) 3000

必要な属性値

 HTTP応答のボディー内に指定した条件に一致する属性値が存在しているかをHTMLタグ、属性名をもとに設定します。必要な属性値の検証規則を利用する場合には、以下の設定を行います。

表18 必要な属性値の検証規則
パラメータ名 説明
タグ名 検証する属性値を含んでいるHTMLタグ名を指定します。
属性名 検証する属性値を含んでいる属性名を指定します。
属性名の一致 対象のHTMLタグ内に含まれていなければならない属性名を指定します。省略可能です。
属性値の一致 対象のHTMLタグ内に含まれていなければならない属性値を指定します。省略可能です。
予期された値 存在しているべき値を設定します。
大文字と小文字を区別しない true / falseで設定します。検索の際に大文字と小文字を区別するかどうかを設定します。

 例えば、「StyleSheet.css」というスタイルシートが読み込まれているかどうかの検証を行いたい場合には、次のように設定します。

表19 必要な属性値の検証の活用例
パラメータ名 設定値
タグ名 link
属性名 rel
属性名の一致 type
属性値の一致 text/css
予期された値 StyleSheet.css
大文字と小文字を区別しない true

必要なタグ

 HTTP応答のボディー内に指定したHTMLタグが発生する回数を検証するための規則です。必要なタグの検証規則を利用する場合には以下の設定を行います。

表20 必要なタグの検証規則
パラメータ名 説明
必要なタグ名 検証対象のHTMLタグ名を設定します。
最小発生件数 HTMLタグが発生する最小回数を設定します。

 例えば、フォームフィールドに10個の入力フィールドがあるべきだという検証を行いたい場合には、次のように設定します。

表21 必要なタグの検証の活用例
パラメータ名 設定値
必要なタグ名 input
最小発生件数 10

検証規則の作成

 定義済みの検証規則を利用するだけでも十分に事足りることがほとんどですが、抽出規則同様に検証規則も独自に作成することが可能です。カスタムの検証規則を作成したり使用したりするための基本的な概念は抽出規則と同様です。検証規則の具体的な作成方法についても本稿の範疇を超えるので割愛させていただきます。

次のページ
Webテストにおけるデータバインディング

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Visual Studio 2005 Team Edition for Software Testersを使ってみよう連載記事一覧
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト りばてぃ/FUJIKO/ナオキ(リバティ, フジコ, ナオキ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1941 2008/08/26 14:06

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング