次の方法で共有


チュートリアル: 動的パラメーターの関連付け

このチュートリアルでは、検出できない動的パラメーター エラーを作成するカスタム コードを含む、ASP.NET Web アプリケーションを作成します。そのようなエラーを特定して修正する方法を学ぶことができます。

一部の Web サイトやアプリケーションは、1 つまたは複数の Web 要求で動的パラメーターを使用します。動的パラメーターとは、ユーザーがアプリケーションを実行するたびに値が生成されるパラメーターです。動的な値はテストが実行されるたびに異なる可能性があるため、動的パラメーターは、Web パフォーマンス テストの再生に失敗する原因となることがあります。このため、記録された値を再生できません。動的パラメーターの例として、セッション ID があります。その値は、5 分から 30 分に 1 回、変更されます。

Web パフォーマンス テスト レコーダーと再生エンジンによって、最も一般的な種類の動的パラメーターが自動的に処理されます。

  • 動的パラメーターの値は、クッキー値で設定されます。Web パフォーマンス テスト エンジンによって、再生中にそれらの値が自動的に処理されます。

  • 動的パラメーターの値は、ASP.NET ビューステートなどの HTML ページ上の隠しフィールドで設定されます。これらは Web パフォーマンス テスト レコーダーによって自動的に処理されます。Web パフォーマンス テスト レコーダーは、テストに隠しフィールドの抽出規則を追加します。

  • 動的パラメーターの値は、クエリ文字列またはフォーム ポスト パラメーターとして設定されます。これらの値は、テストの完了時に動的パラメーターの検出によって処理されます。

ただし、形式によっては、自動的に処理されない動的パラメーターがあります。これらのパラメーターを適切に処理するために、Web パフォーマンス テストで抽出規則を動的パラメーターに追加できます。ただし、抽出ルールを追加する前に、動的パラメーターが初期化される場所を特定する必要があります。このチュートリアルでは、模擬的な検出できないセッション ID 動的パラメーター エラーを探して修正する方法を示します。

このチュートリアルでは、次のタスクを行います。

  • ASP.NET Web アプリケーションを作成します。

  • アプリケーションにいくつかの ASP.NET ページを追加します。

  • アプリケーションにいくつかのコントロールを追加します。

  • ASP.NET コードを変更します。

  • C# 分離コードを追加します。

  • 検出できない動的パラメーターを定義するために JavaScript を追加します。

  • アプリケーションに対する新しい Web パフォーマンス テストを記録し、検出された ASP.NET 動的プロパティを確認します。

  • Web パフォーマンス テストを実行し、検出されない動的パラメーターがあることを確認します。

  • Web パフォーマンス テスト結果ビューアーで再生中にクイック検索を使用して、動的パラメーター エラーを特定します。

  • 動的パラメーターに抽出規則を追加します。

  • Web パフォーマンス テスト エディターで、抽出規則を動的パラメーターにバインドします。

  • Web パフォーマンス テストをエラーなしで再度実行します。

必須コンポーネント

  • Visual Studio Ultimate。

Web アプリケーションの作成

Web アプリケーションを作成するには

  1. [ファイル] のメニューで、最後の Visual Studio で [新規作成] を選択し、を選択します。

    [新しいプロジェクト] ダイアログ ボックスが表示されます。

  2. [インストールされたテンプレート] の下で、Web設定を、選択したプログラミング言語を展開します。

  3. Web プロジェクトの種類の一覧の [ASP.NET 空の Web アプリケーション] をクリックします。

  4. [名前] ボックスで「DynamicParameterSample」と入力します。

  5. [場所] ボックスで、Web アプリケーションを作成するフォルダーを指定します。

  6. [ソリューションのディレクトリを作成] チェック ボックスをオンにします。

  7. [OK] をクリックします。

  8. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  9. 項目の一覧で、[Web フォーム] をクリックします。

  10. [名前] のテキスト ボックスに、型 [Querystring.aspx] は、[追加] を選択します。

Querystring.aspx ページへの HiddenField コントロールの追加

Querystring.aspx ページに HiddenField コントロールを追加するには

  1. ソリューション エクスプローラーで、Querystring.aspx を右クリックし、[ビュー デザイナー] をクリックします。

    空のページが表示されます。

  2. ツールボックスが表示されない場合は、[ビュー] を選択し、[ツールボックス] を選択します。

  3. [標準] グループから、HiddenField をページにドラッグします。

    HiddenField コントロールがデザイン サーフェイスに追加されます。

  4. ページで、[プロパティ]ウィンドウの HiddenField を、[その他] のカテゴリで、HiddenFieldSessionIDへの変更 [(ID)] の値を選択します。

  5. [ファイル] で、メニューの [すべて保存] を選択します。

Querystring.aspx ページへのコードの追加

Querystring.aspx ページにコードを追加するには

  1. Querystring ページの下部に、[ソース] を選択します。

    コード エディターが開かれ、Querystring.aspx ページの ASP.NET コードが表示されます。

  2. 模擬的なセッション ID 動的パラメーターの生成に使用される、以下の強調表示されている ASP.NET および JavaScript コードを追加します。

    <head runat="server">
    <title>JavaScript dynamic property correlation sample</title>
    <script type="text/javascript" language="javascript">
        <!--
            function jScriptQueryString() 
            {
                var Hidden = document.getElementById("HiddenFieldSessionID");
                var sessionId = Hidden.value;
                window.location = 'JScriptQuery.aspx?CustomQueryString=jScriptQueryString___' + sessionId; 
            }
        //-->
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
             <a name="QuerystringHyperlink" href="ASPQuery.aspx?CustomQueryString=ASPQueryString___<%= Session.SessionID %>">Dynamic querystring generated by ASP.net</a>
             <br/>
             <br/>
             <a href="javascript:jScriptQueryString()">Dynamic querystring generated by javascript </a>
        </div>
        <asp:HiddenField ID="HiddenFieldSessionID" runat="server" />
        </form>
    </body>
    </html>
    
  3. Querystring ページを右クリックし、[コードの表示] を選択します。

    コード エディターが開かれ、Querystring.aspx ページの Visual C# 分離コードが表示されます。

  4. 次の強調表示されたコードを Page_Load メソッドに追加します。

        public partial class Querystring : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Session.Add("Key", "Value");
                HiddenFieldSessionID.Value = Session.SessionID;
            }
        }
    
  5. [ファイル] で、メニューの [すべて保存] を選択します。

ASPQuery.aspx ページ、コントロール、およびコードの追加

Web アプリケーションに ASPQuery.aspx ページを追加するには

  1. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

  2. [新しい項目の追加] のダイアログ ボックスで、名前の型 [ASPQuery.aspx]の [Web フォーム] テンプレートを選択し、[追加] を選択します。

  3. [ファイル] で、メニューの [すべて保存] を選択します。

ASPQuery.aspx ページにコントロールを追加するには

  1. ソリューション エクスプローラーで、ASPQuery.aspx を右クリックし、[ビュー デザイナー] をクリックします。

    空のページが表示されます。

  2. ツールボックス[標準] グループから、[Label] をページにドラッグします。

    Label コントロールがデザイン サーフェイスに追加されます。

  3. ページで、[プロパティ]ウィンドウのラベルを、[その他] のカテゴリで、IndexLabelへの変更 [(ID)] の値を選択します。

  4. ツールボックス[標準] グループから、[HyperLink] をページにドラッグします。

    HyperLink コントロールがデザイン サーフェイスに追加されます。

  5. ページで、[プロパティ]ウィンドウのハイパーリンクを、[外観] のカテゴリで、[戻る]への変更 [テキスト] の谷選択します。

  6. ナビゲーション カテゴリで、[NavigationURL] のプロパティに ([…]) を選択します。

    [URL の選択] ダイアログ ボックスが表示されます。

  7. [フォルダーの内容] の下のページの一覧で、を選択 [OK] は、Querystring.aspx を選択します。

  8. [ファイル] で、メニューの [すべて保存] を選択します。

ASPQuery.aspx ページに分離コードを追加するには

  1. ASPQuery ページを右クリックし、[コードの表示] を選択します。

    コード エディターが開かれ、ASPQuery.aspx ページの Visual C# 分離コードが表示されます。

  2. 次の強調表示されたコードを Page_Load メソッドに追加します。

    protected void Page_Load(object sender, EventArgs e)
            {
                int index;
                string qstring;
                string dateportion;
                string sessionidportion;
    
                qstring = Request.QueryString["CustomQueryString"];
                index = qstring.IndexOf("___");
                dateportion = qstring.Substring(0, index);
                index += 3;
                sessionidportion = qstring.Substring(index, qstring.Length - index);
    
                if (sessionidportion != Session.SessionID)
                {
                    Response.StatusCode = 401;
                    IndexLabel.Text = "Failure!  Invalid querystring parameter found.";
                }
                else
                {
                    IndexLabel.Text += "Success.  Dynamic querystring parameter was found.";
                }
                IndexLabel.Text += "<br>\r\n";
            }
    
  3. [ファイル] で、メニューの [すべて保存] を選択します。

JScriptQuery.aspx ページ、コントロール、およびコードの追加

Web アプリケーションに JScriptQuery.aspx ページを追加するには

  1. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

  2. [新しい項目の追加] のダイアログ ボックスで、名前の型 [JScriptQuery.aspx]の [Web フォーム] テンプレートを選択し、[追加] を選択します。

  3. [ファイル] で、メニューの [すべて保存] を選択します。

JScriptQuery.aspx ページにコントロールを追加するには

  1. ソリューション エクスプローラーで、JScriptQuery.aspx を右クリックし、[ビュー デザイナー] をクリックします。

    空のページが表示されます。

  2. ツールボックス[標準] グループから、[Label] をページにドラッグします。

    Label コントロールがデザイン サーフェイスに追加されます。

  3. ページで、[プロパティ]ウィンドウのラベルを、[その他] のカテゴリで、IndexLabelへの変更 [(ID)] の値を選択します。

  4. ツールボックス[標準] グループから、[HyperLink] をページにドラッグします。

    HyperLink コントロールがデザイン サーフェイスに追加されます。

  5. ページで、[プロパティ]ウィンドウのハイパーリンクを、[外観] のカテゴリで、[戻る]への変更 [テキスト] の谷選択します。

  6. ナビゲーション カテゴリで、[NavigationURL] のプロパティに ([…]) を選択します。

    [URL の選択] ダイアログ ボックスが表示されます。

  7. [フォルダーの内容] の下のページの一覧で、を選択 [OK] は、Querystring.aspx を選択します。

  8. [ファイル] で、メニューの [すべて保存] を選択します。

JScriptQuery.aspx ページに分離コードを追加するには

  1. JScriptQuery ページを右クリックし、[コードの表示] を選択します。

    コード エディターが開かれ、JScriptQuery.aspx ページの Visual C# 分離コードが表示されます。

  2. 次の強調表示されたコードを Page_Load メソッドに追加します。

    protected void Page_Load(object sender, EventArgs e)
            {
                int index;
                string qstring;
                string dateportion;
                string sessionidportion;
    
                qstring = Request.QueryString["CustomQueryString"];
                index = qstring.IndexOf("___");
                dateportion = qstring.Substring(0, index);
                index += 3;
                sessionidportion = qstring.Substring(index, qstring.Length - index);
    
                if (sessionidportion != Session.SessionID)
                {
                    Response.StatusCode = 401;
                    IndexLabel.Text = "Failure!  Invalid querystring parameter found.";
                }
                else
                {
                    IndexLabel.Text += "Success.  Dynamic querystring parameter was found.";
                }
                IndexLabel.Text += "<br>\r\n";
            }
    
  3. [ファイル] で、メニューの [すべて保存] を選択します。

Web アプリケーションの手動テスト

Web アプリケーションを手動でテストするには

  1. [ソリューション エクスプローラー] では、Querystring.aspx を右クリックし、を [スタート ページに設定] を選択します。

  2. Ctrl キーを押しながら F5 キーを押して、ブラウザーで Web アプリケーションを実行します。最初のページが表示されます。

  3. [Dynamic querystring generated by ASP.NET] のリンクを選択します。

  4. ASPQuery.aspx ページが表示され、"Success. Dynamic querystring parameter found." というメッセージが示されます。

  5. [戻る] のリンクを選択します。

  6. [Dynamic querystring generated by javascript] のリンクを選択します。

  7. JScriptQuery.aspx ページが表示され、"Success. Dynamic querystring parameter found." というメッセージが示されます。

  8. [戻る] のリンクを選択します。

  9. Web アプリケーションのアドレスをクリップボードかメモ帳ファイルにコピーします。たとえば、アドレスは次のようになります。

    https://localhost:<PortNumber>/Querystring.aspx

    このチュートリアルの後の方で Web パフォーマンス テストを作成するときに、この URL が必要になります。

テスト プロジェクトの作成

テスト プロジェクトを作成するには

  1. [ファイル][追加] で、メニューのをポイントし、[新しいプロジェクト] を選択します。

    [新しいプロジェクトの追加] ダイアログ ボックスが表示されます。

  2. [インストールされたテンプレート] で、[Visual C#] を展開し、[テスト] を選択します。

  3. テンプレートの一覧の [テスト プロジェクト] をクリックします。

  4. [名前] ボックスに「DynamicParameterSampleTest」と入力します。

  5. [OK] をクリックします。

    [!メモ]

    最終的な既定では、Visual Studio は単体テスト ファイルが追加されます。単体テスト ファイルは、このチュートリアルには必要ありません。したがって、このファイルは削除してかまいません。削除しなかったとしても、このチュートリアルには影響しません。

Web パフォーマンス テストの記録と ASPQuery.aspx ページの動的パラメーターの自動検出

Web パフォーマンス テストを記録するには

  1. [テスト] で、メニューの [新しいテスト] を選択します。

    [新しいテストの追加] ダイアログ ボックスが表示されます。

  2. [新しいテストの追加] のダイアログ ボックスで、ボックスの [Web パフォーマンス テスト] は、テスト DynamicParameterSampleApp.webtestを示し、次に [OK] を選択します。

    DynamicParameterSampleApp.webtest という新しい Web パフォーマンス テスト ファイルがプロジェクトに追加され、Web パフォーマンス テスト レコーダーが Internet Explorer の新しいインスタンスに表示されます。

    Caution メモ注意

    次の手順を正しく機能させるためには、表示されている順序で次の手順を実行する必要があります。

  3. ブラウザーのアドレス バーに、「Web アプリケーションを手動でテストするには」という手順でコピーした Web アプリケーションのアドレスを入力するか貼り付けて、Enter キーを押します。

    [!メモ]

    Visual Studio Ultimate を記録すると同時に [Web Performance Test Recorder] Web パフォーマンス テスト URL を表示します。

  4. [Dynamic querystring generated by ASP.NET] のリンクを選択します。

    ASPQuery.aspx ページが表示され、"Success. Dynamic querystring parameter found." というメッセージが示されます。

  5. [戻る] のリンクを選択します。

  6. [Dynamic querystring generated by javascript] のリンクを選択します。

  7. JScriptQuery.aspx ページが表示され、"Success. Dynamic querystring parameter found." というメッセージが示されます。

  8. [戻る] のリンクを選択します。

  9. 記録を停止するには [Web Performance Test Recorder][停止] を選択します。

    ダイアログ ボックスが開き、"動的パラメーターを検出しています" というメッセージが表示されます。このダイアログ ボックスには、受信した HTTP 応答でのパラメーターの検出状況を示すプログレス バーも表示されます。

    次に、[動的パラメーターを Web テスト パラメーターに昇格] ダイアログ ボックスが表示されます。

    動的なパラメーターの上位変換

    この手順の ASPQuery ページにある CustomQueryString の動的パラメーターのために追加されたカスタム コードは自動的に検出されたので、ダイアログ ボックスの一覧に表示されます。

    JScriptQuery ページにある CustomQueryString の動的パラメーターは自動的にカスタムの JavaScript コードはプロシージャ Querystring.aspx ページへのコードの追加で Querystring.aspx ページに追加されたので検出されませんでした。

  10. Querystring.aspx に追加された抽出規則を追加するには [OK] を選択します。

    Web パフォーマンス テスト エディターが開かれ、Querystring.aspx への最初の要求が完全に展開されて表示されます。ここに、追加された抽出規則が表示されます。

  11. ASPQuery.aspx の要求ツリーの 2 番目の要求を完全に展開し、CustomQueryString の値が抽出規則にバインドされていることを確認します。

    動的パラメーター用に追加された抽出規則

  12. [ファイル] をクリックし、[名前を付けて DynamicParameterSampleApp.webtest を保存] をクリックして、新しく記録された Web パフォーマンス テストを保存します。

検出されない動的パラメーター エラーを生成するための Web パフォーマンス テストの再生

Web パフォーマンス テストを再生するには

  1. [Web Performance Test Editor] では、Web パフォーマンス テスト結果ビューアーを表示するには、ツール バーの [実行] を選択します。

  2. 4 番目の要求がエラーで失敗しています。4 番目の要求は JScriptQuery.aspx ページに対するものです。

    検出されない動的パラメーターのエラー

エラーの原因となる動的パラメーターの特定

再生記録でクイック検索を使用するには

  1. Web パフォーマンス テスト結果ビューアーで、4 番目の要求を右クリックします。4 番目の要求は JScriptQuery.aspx ページに対するもので、動的パラメーターの問題のために失敗しています。[Web テストに移動] を選択します。

    Web テストへの移動

    Web パフォーマンス テスト エディターが表示され、JScriptQuery.aspx 要求が強調表示されます。

  2. 要求ノードを完全に展開し、" CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm" のように、CustomQueryString の "wy0zaykqadkoscuvoiqemofm" の部分が動的に表示されることを確認します。

    エラーが表示された Web パフォーマンス テスト エディターの要求

  3. Web パフォーマンス テスト結果ビューアーに戻って、失敗した JScriptQuery.aspx ページを選択します。

  4. [要求] のタブをクリックします。

  5. [生データの表示] チェック ボックスがオフになっていることを確認します。

  6. [名前] 列に [QueryString パラメーター] が表示されるまで下へスクロールします。

  7. [CustomQueryString] を右クリックし、[クイック検索] をクリックします。

    動的パラメーターの分離

  8. [検索] ダイアログ ボックスで、パラメーター値が [検索する文字列] に表示されます。

    この場合、Web パフォーマンス テスト エディターに表示された内容から、JScriptQuery.aspx 要求の CustomQueryString には "jScriptQueryString___wy0zaykqadkoscuvoiqemofm" という値が割り当てられており、疑わしい動的な部分は "wy0zaykqadkoscuvoiqemofm" だということがわかっています。

  9. [検索する文字列] ドロップダウン リストで、検索文字列の疑わしい部分を削除します。文字列は、"CustomQueryString=jScriptQueryString___" のようになります。

    [検索] ダイアログ ボックス

  10. 動的パラメーターには、エラーが存在する要求より前の要求で値が割り当てられます。したがって、[上へ検索] のチェック ボックスをオンにし、[要求] のパネルで強調表示されている Querystring.aspx については、前の要求が表示されるまで [次を検索] を選択します。これは、3 回 [次を検索] を選択すると発生します。

    検索機能を使用した動的エラーの分離

    前に実行される JavaScript および図からわかるように、クエリ文字列パラメーター CustomQueryString には "jScriptQueryString" の値を再配置、var sessionId からの戻り値が連結されます。

            function jScriptQueryString() 
            {
                var Hidden = document.getElementById("HiddenFieldSessionID");
                var sessionId = Hidden.value;
                window.location = 'JScriptQuery.aspx?CustomQueryString=jScriptQueryString___' + sessionId; 
            }
    

    これで、エラーが発生する場所がわかり、sessionId の値を抽出する必要があることもわかりました。しかし、抽出される値はただのテキストなので、sessionId の実際の値が表示される文字列を探して、さらにエラーを特定する必要があります。コードを調べると、var sessionId は、HiddenFieldSessionID によって返される値と等しいことがわかります。

  11. HiddenFieldSessionID を選択して右クリックし、[クイック検索] をクリックします。

  12. [検索] ダイアログ ボックスで [上へ検索] チェック ボックスをオフにし、[現在の要求] を選択します。

  13. [次を検索] を選択します。

    以下の行で、HiddenFieldSessionID の最初の一致が強調表示されます。それに割り当てられている値も確認できます。

    <input type="hidden" name="HiddenFieldSessionID" id="HiddenFieldSessionID" value="0rvcxknlabd30xnbrjtuy11u" />
    

    HiddenFieldSessionID の検索

    返された値が元の Web パフォーマンス テスト記録と同じ文字列ではないことに注意してください。この再生での値は "0rvcxknlabd30xnbrjtuy11u" であり、記録での値は "wy0zaykqadkoscuvoiqemofm" です。値が元の記録の値と一致しないので、エラーが生成されます。

記録された再生から抽出規則を追加するには

  1. Web テスト結果ビューアーのツール バーの [記録された結果] を選択します。

    Web パフォーマンス テストの元の記録された結果が、[DynamicParameterSampleApp[記録済み]] という別のタブに表示されます。

  2. まだ選択されていない場合は、3 番目の要求を選択します。前の手順で特定したのは Querystringrequest.aspx です。

  3. [応答] のタブをクリックします。下へスクロールして、前の手順で特定した "wy0zaykqadkoscuvoiqemofm" という元の動的パラメーター値を選択します。それを右クリックし、[抽出規則の追加] をクリックします。

    抽出規則の追加

    Web パフォーマンス テスト エディターが開かれ、Querystring.aspx 要求内に選択された新しい抽出規則が表示されます。新しい抽出規則には、"Param0" という値が割り当てられます。

    [Microsoft Visual Studio] ダイアログ ボックスが表示され、パラメーターのバインド対象となる、抽出されたテキストのための一致が見つかったという情報が表示されます。

    Param(0) として追加された抽出規則

  4. [はい] をクリックします。

    [要求の検索と置換] ダイアログ ボックスが表示され、[検索する文字列] ドロップダウン リストには抽出されたテキストである "wy0zaykqadkoscuvoiqemofm"[置換後の文字列] ドロップダウン リストにはパラメーターである "{{Param0}}" が表示されます。

    次の Param0 の検索

  5. [次を検索] を選択します。

  6. JScriptQuery.aspx 要求の下の QueryString パラメーターである "CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm" が強調表示されます。

  7. [置換] を選択します。

    Param(0) を使用したクエリ文字列の更新

  8. JScriptQuery.aspx 要求の下の QueryString パラメーターが、新しいコンテキスト パラメーターの "CustomQueryString=jScriptQueryString___{{Param0}}" を使って更新されます。

  9. 要求ツリーで、検出された動的パラメーターと、関連付けた検出されない動的パラメーターとの間に同様の構造があることを確認します。

参照

処理手順

方法: 動的パラメーターを Web パフォーマンス テスト パラメーターに昇格する

概念

Web パフォーマンス テスト結果ビューアーの概要

その他の技術情報

Web パフォーマンス テストでの Web パフォーマンス テスト結果ビューアーの再生に関する問題の解決