Corriger les paramètres dynamiques non détectables dans un test de performances de site WebFix non-detectable dynamic parameters in a web performance test

Certains sites web utilisent des paramètres dynamiques pour traiter certaines de leurs requêtes Web.Some websites use dynamic parameters to process some of their web requests. Un paramètre dynamique est un paramètre dont la valeur est régénérée chaque fois qu'un utilisateur exécute l'application.A dynamic parameter is a parameter whose value is regenerated every time that a user runs the application. Un ID de session est un exemple de paramètre dynamique.An example of a dynamic parameter is a session ID. En règle générale, l'ID de session change toutes les 5 à 30 minutes.The session ID usually changes every 5 to 30 minutes. L'enregistreur et le moteur de lecture des tests de performances de site Web gèrent automatiquement les types les plus communs de paramètres dynamiques :The web performance test recorder and playback engine automatically handles the most common types of dynamic parameters:

  • Valeurs de paramètre dynamique qui sont définies dans une valeur de cookie.Dynamic parameter values that are set in a cookie value. Le moteur de test de performances de site Web les gère automatiquement pendant la lecture.The web performance test engine automatically handles these during playback.

  • Valeurs de paramètre dynamique qui sont définies dans les champs masqués des pages HTML, telles que l'état d'affichage ASP.NET.Dynamic parameter values that are set in hidden fields on HTML pages, such as ASP.NET view state. Celles-ci sont gérées automatiquement par l'enregistreur qui ajoute des règles d'extraction de champs masqués au test.These are automatically handled by the recorder, which adds hidden field extraction rules to the test.

  • Valeurs de paramètre dynamique qui sont définies comme paramètres de chaîne de requête ou de publication de formulaire.Dynamic parameter values that are set as query string or form post parameters. Celles-ci sont gérées par le biais de la détection des paramètres dynamiques après avoir enregistré un test de performances web.These are handled through dynamic parameter detection after you record a web performance test.

Certains types de paramètres dynamiques ne sont pas détectés.Some types of dynamic parameters are not detected. Un paramètre dynamique non détecté provoquera l'échec du test de performances de site Web lors de son exécution, car la valeur dynamique sera différente à chaque exécution du test.An undetected dynamic parameter will cause your web performance test to fail when you run it because the dynamic value will be different every time that the test is run. Pour gérer correctement ces paramètres, vous pouvez ajouter manuellement des règles d'extraction aux paramètres dynamiques dans les tests de performances de site Web.To handle these parameters correctly, you can add extraction rules to dynamic parameters in your web performance tests manually.

Créer et exécuter une application Web avec les paramètres dynamiquesCreate and run a web app with dynamic parameters

Pour illustrer un paramètre dynamique détectable et non détectable, nous créerons une application Web ASP.NET simple qui a trois formulaires Web avec des contrôles et du code personnalisé.To demonstrate both a detectable and a non-detectable dynamic parameter, we’ll create a simple ASP.NET web application that has three web forms with a few controls and some custom code. Nous apprendrons ensuite comment isoler les paramètres dynamiques, ainsi qu'à les gérer.We’ll then learn how to isolate the dynamic parameters and how to handle them.

  1. Créez un projet ASP.NET nommé DynamicParamaterSample.Create a new ASP.NET project named DynamicParamaterSample.

    Créer un projet d’application web ASP.NET videCreate an empty ASP.NET web application project

  2. Ajoutez un formulaire Web nommé Querystring.aspx.Add a web form named Querystring.aspx.

  3. En mode de conception, faites glisser un HiddenField sur la page et remplacez la valeur de la propriété (ID) par HiddenFieldSessionID.In design view, drag a HiddenField onto the page and in then in change the value for the (ID) property to HiddenFieldSessionID.

    Ajouter un HiddenFieldAdd a HiddenField

  4. Passez en mode Source pour la page Querystring, puis ajoutez le code ASP.NET et JavaScript en surbrillance suivant utilisé pour générer les paramètres dynamiques d'identification de session fictifs :Change to the source view for the Querystring page, and add the following highlighted ASP.NET and JavaScript code used to generate the mock session ID dynamic parameters:

    <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>
    
  5. Ouvrez le fichier Querystring.aspx.cs, puis ajoutez le code en surbrillance suivant à la méthode Page_Load :Open the Querystring.aspx.cs file and add the following highlighted code to the Page_Load method:

    public partial class Querystring : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Session.Add("Key", "Value");HiddenFieldSessionID.Value = Session.SessionID;
        }
    }
    
  6. Ajoutez un deuxième formulaire Web nommé ASPQuery.aspx.Add a second web form named ASPQuery.aspx.

  7. En mode de conception, faites glisser un Label sur la page et remplacez la valeur de sa propriété (ID) par IndexLabel.In design view, drag a Label onto the page and change the value for its (ID) property to IndexLabel.

    Ajouter une étiquette au formulaire webAdd a label to the web form

  8. Faites glisser un HyperLink sur la page et remplacez la valeur de sa propriété Text par Back.Drag a HyperLink onto the page and change the vale for its Text property to Back.

    Ajouter un lien hypertexte au formulaire webAdd a hyperlink to the web form

  9. Choisissez (…) pour la propriété NavigationURL.Choose (…) for the NavigationURL property.

    Modifier la propriété NavigateURLEdit the NavigateURL property

    Sélectionnez Querystring.aspx.Select Querystring.aspx.

    Choisir l’URL Querystring.aspxChoose the URL to be Querystring.aspx

  10. Ouvrez le fichier ASPQuery.aspx.cs, puis ajoutez le code en surbrillance suivant à la méthode Page_Load :Open the ASPQuery.aspx.cs file, and add the following highlighted code to the Page_Load method:

    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";
            }
    
  11. Ajoutez un troisième formulaire Web nommé JScriptQuery.aspx.Add a third web form named JScriptQuery.aspx.

    Comme nous l'avons fait pour la deuxième page, faites glisser une étiquette sur le formulaire, en affectant à sa propriété (ID) la valeur IndexLabel, puis faites glisser un lien hypertexte sur le formulaire, en affectant à sa propriété Text la valeur Back et à sa propriété NavigationURL la valeur Querystring.aspx.Just as we did for the second page, drag a label onto the form, setting its (ID) property to IndexLabel and drag a Hyperlink onto the form, setting its text property to Back, and its NavigationURL property to Querystring.aspx.

    Ajouter et configurer le troisième formulaire webAdd and configure the third web form

  12. Ouvrez le fichier JScriptQuery.aspx.cs, puis ajoutez le code en surbrillance suivant à la méthode Page_Load :Open the JScriptQuery.aspx.cs file, and add the following highlighted code to the Page_Load method:

    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";
            }
    
  13. Enregistrez le projet.Save the project.

  14. Dans l'Explorateur de solutions, définissez Querystring.aspx comme page de démarrage.In Solution Explorer, set the Querystring.aspx as the start page.

    Définir la page de démarrage sur Querystring.aspxSet the start page on Querystring.aspx

  15. Appuyez sur CTRL+F5 pour exécuter l'application Web dans le navigateur.Press CTRL+F5 to run the Web application in the browser. Copiez l'URL.Copy the URL. Vous en aurez besoin lorsque vous enregistrerez votre test.You will need it when you record your test.

  16. Testez les deux liens.Try both links. Ils doivent chacun afficher le message de réussite.They should each display the message "Success. Dynamic querystring parameter found. »Dynamic querystring parameter found."

    Exécuter l’application webRun the web app

    RéussiteSuccess!

Créer un test de performances de site WebCreate a web performance test

  1. Ajoutez un projet de test de performances Web et de charge à votre solution.Add a web performance and load test project to your solution.

    Ajouter un projet de test de charge et de performances webAdd a web perfromance and load test project

  2. Renommez WebTest1.webtest en DynamicParameterSampleApp.webtest.Rename WebTest1.webtest to DynamicParameterSampleApp.webtest.

    Renommer le test de performances webRename the web performance test

  3. Enregistrez le test.Record the test.

    Enregistrer le test des performances webRecord the web performance test

  4. Copiez et collez l’URL du site web que vous testez dans le navigateur.Copy and paste the URL from the web site you're testing into the browser.

    Coller l’URL à partir du site web testéPaste the URL from the web site being tested

  5. Parcourez l'application Web.Browse through the web application. Cliquez sur le lien ASP.NET, le lien Précédent puis le lien Javascript, suivi du lien Précédent.Choose the ASP.NET link, the Back link, and then the javascript link, followed by the back link.

    L'enregistreur de test Web affiche les URL de requête et de réponse HTTP lorsque vous naviguez dans l'applications web.The web test recorder displays the HTTP request and response URLs as you navigate through the web app.

  6. Choisissez le bouton Arrêt sur l'enregistreur de test.Choose the stop button on the test recorder.

    La boîte de dialogue de détection des paramètres dynamiques affiche une barre de progression qui indique l'état de la détection de paramètres dans les réponses HTTP reçues.The dialog box for detecting dynamic parameters displays a progress bar that shows the status of parameter detection in the HTTP responses that were received.

  7. Le paramètre dynamique pour CustomQueryString dans la page ASPQuery est détecté automatiquement.The dynamic parameter for CustomQueryString in the ASPQuery page is automatically detected. Toutefois, le paramètre dynamique pour CustomQueryString dans la page JScriptQuery n'est pas détecté.However, The dynamic parameter for CustomQueryString in the JScriptQuery page is not detected.

    Choisissez OK pour ajouter une règle d'extraction à Querystring.aspx, le liant à la page ASPQuery.Choose OK to add an extraction rule to Querystring.aspx, binding it to the ASPQuery page.

    Promouvoir le paramètre dynamique détectéPromote the detected dynamic parameter

    La règle d'extraction est ajoutée à la première requête pour Querystring.aspx.The extraction rule is added to the first request for Querystring.aspx.

    Règle d’extraction ajoutée à la requêteExtraction rule added to request

    Développez la seconde requête dans l’arborescence des requêtes pour ASPQuery.aspx et notez que la valeur de CustomQueryString a été liée à la règle d’extraction.Expand the second request in the request tree for ASPQuery.aspx and notice that the CustomQueryString's value has been bound to the extraction rule.

    CustomQueryString liée à la règle d’extractionCustomQueryString bound to extraction rule

  8. Enregistrez le test.Save the test.

Exécuter le test pour isoler le paramètre dynamique non-détectéRun the test to isolate the non-detected dynamic parameter

  1. Exécutez le test.Run the test.

    Exécuter le test de performances webRun the web performance test

  2. La quatrième requête de la page JScriptQuery.aspx échoue.The fourth request for the JScriptQuery.aspx page fails. Accédez au test Web.Go to the web test.

    Erreur de paramètre dynamique dans les résultats du testDynamic parameter error in test results

    Le nœud de requête JScriptQuery.aspx est mis en surbrillance dans l'éditeur.The JScriptQuery.aspx request node is highlighted in the editor. Développez le nœud et notez que la partie « 1v0yhyiyr0raa2w4j4pwf5zl » de CustomQueryString semble être dynamique.Expand the node and notice that the "1v0yhyiyr0raa2w4j4pwf5zl" portion of the CustomQueryString appears to be dynamic.

    Paramètre dynamique potentiel dans CustomQueryStringSuspected dynamic parameter in CustomQueryString

  3. Revenez à l'Afficheur de résultats de test de performances Web et sélectionnez la page JScriptQuery.aspx qui a échoué.Return to the Web Performance Test Results Viewer and select the JScriptQuery.aspx page that failed. Ensuite, choisissez l'onglet de requête, vérifiez que la case à cocher Afficher les données brutes est désactivée, faites défiler et choisissez la Recherche rapide sur CustomQueryString.Then, choose the request tab, verify that the show raw data check box is cleared, scroll down and choose quick find on the CustomQueryString.

    Utiliser la recherche rapide pour isoler le paramètre dynamiqueUse quick find to isolate the dynamic paramter

  4. En regardant l’éditeur de test, nous constatons qu’une valeur jScriptQueryString___1v0yhyiyr0raa2w4j4pwf5zl a été assignée à CustomQueryString de la requête JScriptQuery.aspx et que la partie dynamique suspecte est « 1v0yhyiyr0raa2w4j4pwf5zl ».We know from looking at the test editor, that the JScriptQuery.aspx request's CustomQueryString was assigned a value of: jScriptQueryString___1v0yhyiyr0raa2w4j4pwf5zl, and that the suspected dynamic portion is "1v0yhyiyr0raa2w4j4pwf5zl". Dans la liste déroulante Rechercher, supprimez la partie suspecte de la chaîne de recherche.In the find what drop-down list, remove the suspect portion of the search string. La chaîne doit être « CustomQueryString=jScriptQueryString___ ».The string should be "CustomQueryString=jScriptQueryString___".

    Leurs valeurs des paramètres dynamiques sont assignées dans l'une des requêtes qui précède la requête comportant l'erreur.Dynamic parameters are assigned their values in one of the requests that precedes the request that has the error. Par conséquent, vous devez activer la case à cocher Rechercher vers le haut et cliquer sur Suivant jusqu'à la requête précédant Querystring.aspx, mis en surbrillance dans le panneau Requête.Therefore, select the search up check box and choose find next until you see preceding request for Querystring.aspx highlighted in the request panel. Vous devez y parvenir après avoir cliqué trois fois sur Suivant.This should occur after you choose find next three times.

    Utiliser la recherche rapide pour isoler le paramètre dynamique

    Comme indiqué dans l'onglet de réponse et dans le JavaScript implémenté précédemment (voir plus bas), la valeur « jScriptQueryString___ » est assignée au paramètre de chaîne de requête CustomQueryString, qui est également concaténé avec la valeur retournée pour var sessionId.As shown in the response tab, and in the JavaScript implemented earlier shown below, the query string parameter CustomQueryString is assigned a value of " jScriptQueryString___" and is also concatenated with the returned value from the var sessionId.

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

    Nous savons désormais où a lieu l'erreur. Nous savons également que nous devons extraire la valeur pour sessionId.Now that we know where the error is occurring, and that we need to extract the value for sessionId. Toutefois, la valeur d'extraction est uniquement du texte. Vous devez donc isoler davantage l'erreur en essayant de localiser une chaîne où la valeur réelle de sessionId s'affiche.However, the extraction value is only text, so we need to further isolate the error by trying to locate a string where the sessionId's actual value is displayed. Si vous observez le code, vous pouvez voir que var sessionId est égal à la valeur retournée par HiddenFieldSessionID.By looking at the code, you can see that the var sessionId equals the value returned by HiddenFieldSessionID.

  5. Utilisez la recherche rapide sur HiddenFieldSessionID, en désactivant la case à cocher Rechercher vers le haut et en sélectionnant la requête actuelle.Use quick find on HiddenFieldSessionID, clearing the search up check box and selecting current request.

    Utiliser la recherche rapide pour HiddenFieldSessionUse quick find on HiddenFieldSession

    Notez que la valeur retournée n'est pas la même chaîne que dans l'enregistrement du test de performances de site Web d'origine.Notice that the value returned is not the same string as in the original web performance test recording. Pour cette série de tests, la valeur retournée est « 5w4v3yrse4wa4axrafykqksq » et dans l'enregistrement d'origine, la valeur est « 1v0yhyiyr0raa2w4j4pwf5zl ».For this test run, the value returned is "5w4v3yrse4wa4axrafykqksq" and in the original recording, the value is "1v0yhyiyr0raa2w4j4pwf5zl". Étant donné que la valeur ne correspond pas à celle de l'enregistrement d'origine, l'erreur est générée.Because the value does not match that of the original recording, the error is generated.

  6. Étant donné que nous devons corriger le paramètre dynamique dans l'enregistrement d'origine, choisissez le résultat enregistré dans la barre d'outils.Because we have to fix the dynamic parameter in the original recording, choose recorded result in the toolbar.

    Choisir le résultat enregistréChoose recorded result

  7. Dans les résultats enregistrés, sélectionnez la troisième requête, qui est identique à la requête Querystringrequest.aspx que vous avez isolée dans les résultats de la série de tests.In the recorded results, select the third request, which is the same Querystringrequest.aspx request that you isolated in the test run results.

    Choisir la même requête dans les résultats enregistrésChoose the same request in the recorded results

    Sélectionnez l'onglet de réponse, faites défiler et choisissez la valeur du paramètre dynamique d'origine « 1v0yhyiyr0raa2w4j4pwf5zl » que vous avez isolé précédemment et ajoutez une règle d'extraction.Choose the response tab, scroll down and choose the original dynamic parameter value of "1v0yhyiyr0raa2w4j4pwf5zl" that you isolated previously and add an extraction rule.

    Ajouter une règle d’extraction pour le paramètre dynamiqueAdd an extraction rule for the dynamic parameter

    La nouvelle règle d'extraction est ajoutée à la requête Querystring.aspx et une valeur « Param0 » lui est assignée.The new extraction rule is added to the Querystring.aspx request and is assigned a value of 'Param0'.

    Si la boîte de dialogue nous informe que des correspondances ont été trouvées pour le texte extrait auquel lier le paramètre, choisissez Oui.If the dialog box informs us that matches were found for the extracted text to bind the parameter to, choose yes.

    Règle d’extraction crééeExtraction rule created

  8. Choisissez Suivant.Choose find next. La première correspondance est celle que nous devons modifier, qui correspond au paramètre pour CustomQueryString dans la page JScriptQuery.The first match is the one that we need to change, which is the parameter for CustomQueryString in for the JScriptQuery page.

    Rechercher et remplacer le texte pour le paramètreFind and replace the text for the parameter

  9. Choisissez Remplacer.Choose replace.

    Remplacer le texte par le paramètreReplace the text with the parameter

    Le paramètre QueryString sous la requête JScriptQuery.aspx est mis à jour à l'aide du nouveau paramètre de contexte : CustomQueryString=jScriptQueryString___ {{Param0}}.The QueryString parameter under the JScriptQuery.aspx request is updated by using the new context parameter: CustomQueryString=jScriptQueryString___{{Param0}}.

    Paramètre appliqué à la chaîne de requêteParameter applied to querystring

  10. Fermez la boîte de dialogue de recherche et de remplacement.Close the find and replace dialog. Notez que, dans l’arborescence des requêtes, la structure du paramètre dynamique détecté est semblable à celle du paramètre dynamique non-détecté que vous avez mis en corrélation.Notice the similar structure of in the request tree between the detected dynamic parameter and the non-detected dynamic parameter that you correlated.

    Paramètres dynamiques détectés et corrélésDetected and correlated dynamic parameters

  11. Exécutez le test.Run the test. Il fonctionne maintenant sans échec.It now runs without failure.

Questions et réponsesQ&A

Q : Puis-je réexécuter la détection de paramètres dynamiques si mon application Web est modifiée ?Q: Can I re-run dynamic parameter detection if my web app gets modified?

R : Oui, utilisez la procédure suivante :A: Yes, use the following procedure:

  1. Dans la barre d'outils, choisissez le bouton Promouvoir les paramètres dynamiques en paramètres de test Web.In the toolbar, choose the Promote Dynamic Parameters to Web Test Parameters button.

    Une fois le processus de détection terminé, si des paramètres dynamiques sont détectés, la boîte de dialogue Promouvoir les paramètres dynamiques en paramètres de test Web s'affiche.After the detection process completes, if any dynamic parameters are detected, the Promote Dynamic Parameters to web test parameters dialog box appears.

    Les paramètres dynamiques sont listés sous la colonne Paramètres dynamiques.The dynamic parameters are listed under the Dynamic Parameters column. Les requêtes dont les paramètres dynamiques doivent être extraits et auxquelles ils doivent être liés sont listées sous les colonnes Extraire le paramètre de la réponse et Lier à la requête.The requests that the dynamic parameter will be extracted from and bound to are listed under the Extract Parameter from Response and Bind to Request columns.

    Si vous choisissez un paramètre dynamique dans la boîte de dialogue Promouvoir les paramètres dynamiques en paramètres de test Web, deux requêtes sont mises en surbrillance dans l'arborescence des requêtes de l'éditeur de tests de performances de site Web.If you choose a dynamic parameter in the Promote Dynamic Parameters to web test parameters dialog box, two requests will be highlighted in the Web Performance Test Editor request tree. La première requête est celle à laquelle la règle d'extraction doit être ajoutée.The first request will be the request that the extraction rule will be added to. La seconde requête est celle à laquelle la valeur extraite doit être liée.The second request is where the extracted value will be bound.

  2. Activez ou désactivez la case à cocher en regard des paramètres dynamiques que vous voulez mettre en corrélation automatiquement.Select or clear the check box next to the dynamic parameters you would like to automatically correlate. Par défaut, tous les paramètres dynamiques sont activés.By default, all the dynamic parameters are checked.

Q : Dois-je configurer Visual Studio pour détecter les paramètres dynamiques ?Q: Do I need to configure Visual Studio to detect dynamic parameters?

R : La configuration Visual Studio par défaut consiste à détecter les paramètres dynamiques quand vous enregistrez un test de performances web.A: The default Visual Studio configuration is to detect dynamic parameters when you record a web performance test. Toutefois, si les options Visual Studio sont configurées pour ne pas détecter de paramètres dynamiques, ou si l’application web qui est testée est modifiée à l’aide de paramètres dynamiques supplémentaires, vous pouvez toujours exécuter une détection des paramètres dynamiques dans l’éditeur de tests de performances web.However, if you have Visual Studio options configured not to detect dynamic parameters, or the web application being tested gets modified with additional dynamic parameters; you can still run dynamic parameter detection from the Web Performance Test Editor.