Procédures pas à pas : mise en corrélation des paramètres dynamiques
Dans cette procédure pas à pas, vous créez une application Web ASP.NET qui inclut du code personnalisé afin de créer une erreur de paramètre dynamique non détectable.Vous allez apprendre à isoler et à corriger ce type d'erreurs.
Certains sites et applications Web utilisent des paramètres dynamiques dans une ou plusieurs requêtes Web.Un paramètre dynamique est un paramètre dont la valeur est générée chaque fois qu'un utilisateur exécute l'application.Un paramètre dynamique peut provoquer l'échec de la lecture des tests de performances de site Web, car la valeur dynamique sera selon toute vraisemblance différente à chaque exécution du test.Par conséquent, vous ne pouvez pas lire les valeurs enregistrées.Un ID de session est un exemple de paramètre dynamique.Sa valeur est modifiée toutes les 5 à 30 minutes.
L'enregistreur et le moteur de lecture des tests des performances de site Web gèrent automatiquement les types les plus communs de paramètres dynamiques :
Valeurs de paramètre dynamique définies dans la valeur du cookie.Le moteur de test de performances de site Web les gère automatiquement pendant la lecture.
Valeurs de paramètre dynamique définies dans les champs masqués des pages HTML, telles que l'état d'affichage ASP.NET.Celles-ci sont gérées automatiquement par l'enregistreur de test de performances Web.Ce dernier ajoute des règles d'extraction de champs masqués au test.
Valeurs de paramètre dynamique définies comme chaîne de requête ou paramètres de publication de formulaire.Celles-ci sont gérées via la détection des paramètres dynamiques à l'issue du test.
Toutefois, certaines formes de paramètres dynamiques ne sont pas gérées automatiquement.Pour gérer correctement ces paramètres, vous pouvez ajouter des règles d'extraction aux paramètres dynamiques dans les tests de performances de site Web.Cependant, avant d'ajouter une règle d'extraction, vous devez rechercher l'emplacement de l'initialisation du paramètre dynamique.Cette procédure pas à pas indique comment rechercher et corriger une erreur de paramètre dynamique d'ID de session non détectable fictive.
Dans cette procédure pas à pas, vous effectuerez les tâches suivantes :
Créer une application Web ASP.NET.
Ajouter des pages ASP.NET à l'application
Ajouter des contrôles à l'application
Modifier le code ASP.NET
Ajouter du code-behind C#
Ajouter du Javascript pour déclencher un paramètre dynamique non détectable
Enregistrer un nouveau test de performances de site Web sur l'application et observer une propriété dynamique ASP.NET détectée.
Exécuter le test de performances de site Web et vérifier qu'il ne comporte aucun paramètre dynamique non-détecté.
Utiliser la recherche rapide pendant la lecture dans l'Afficheur de résultats de test de performances Web pour isoler l'erreur de paramètre dynamique
Ajouter une règle d'extraction au paramètre dynamique
Lier la règle d'extraction au paramètre dynamique dans l'éditeur de test de performances Web
Exécuter à nouveau le test de performances de site Web sans erreur
Composants requis
- Visual Studio Ultimate.
Création d'une application Web
Pour créer l'application Web
Dans le menu Fichier de Visual Studio Ultimate, pointez sur Nouveau, puis cliquez sur Projet.
La boîte de dialogue Nouveau projet s'affiche.
Sous Modèles installés, développez le langage de programmation de votre choix, puis cliquez sur Web.
Dans la liste des types de projets Web, sélectionnez Application Web ASP.NET vide.
Dans la zone Nom, tapez DynamicParameterSample.
Dans la zone Emplacement, spécifiez le dossier dans lequel vous voulez créer votre application Web.
Sélectionnez Créer le répertoire pour la solution.
Cliquez sur OK.
Dans le menu Projet, choisissez Ajouter un nouvel élément.
La boîte de dialogue Ajouter un nouvel élément s'affiche alors.
Dans la liste d'éléments, choisissez Web Form.
Dans la zone de texte Nom, tapez Querystring.aspx, puis cliquez sur Ajouter.
Ajout d'un contrôle HiddenField à la page Querystring.aspx
Pour ajouter un contrôle HiddenField à la page Querystring.aspx
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Querystring.aspx, puis sélectionnez Concepteur de vues.
Une page vierge s'affiche.
Si la boîte à outils n'est pas visible, cliquez sur Affichage, puis sur Boîte à outils.
À partir du groupe Standard, faites glisser un contrôle HiddenField sur la page.
Un contrôle HiddenField est ajouté à l'aire de conception.
Sur la page, cliquez sur HiddenField et, dans la fenêtre Propriétés, dans la catégorie Divers, modifiez la valeur de (ID) par HiddenFieldSessionID.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Ajout de code à la page Querystring.aspx
Pour ajouter du code à la page Querystring.aspx
En bas de la page Querystring, cliquez sur Source.
L'éditeur de code s'affiche avec le code ASP.NET de la page Querystring.aspx.
Ajoutez le code ASP.NET et le code JavaScript mis en surbrillance suivants et utilisés pour générer les paramètres dynamiques fictifs de l'ID de la session :
<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>
Cliquez avec le bouton droit sur la page Querystring, puis sélectionnez Afficher le code.
L'éditeur de code s'affiche avec le code-behind Visual C# de la page Querystring.aspx.
Ajoutez le code mis en surbrillance suivant à la méthode 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; } }
Dans le menu Fichier, cliquez sur Enregistrer tout.
Ajout de la page ASPQuery.aspx, de contrôles et de code
Pour ajouter la page ASPQuery.aspx à l'application Web
Dans le menu Projet, choisissez Ajouter un nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément, cliquez sur le modèle Web Form, puis, dans la zone Nom, tapez ASPQuery.aspx. Cliquez ensuite sur Ajouter.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Pour ajouter des contrôles à la page ASPQuery.aspx
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur ASPQuery.aspx, puis choisissez Concepteur de vues.
Une page vierge s'affiche.
À partir du groupe Standard de la Boîte à outils, faites glisser un contrôle Label sur la page.
Un contrôle Label est ajouté à l'aire de conception.
Sur la page, cliquez sur Label et, dans la fenêtre Propriétés, dans la catégorie Divers, modifiez la valeur de (ID) par IndexLabel.
À partir du groupe Standard de la Boîte à outils, faites glisser un contrôle HyperLink sur la page.
Un contrôle HyperLink est ajouté à l'aire de conception.
Sur la page, cliquez sur HyperLink, et, dans la fenêtre Propriétés, dans la catégorie Apparence, modifiez la valeur de Texte par Précédent.
Dans la catégorie Navigation, cliquez sur (…) pour la propriété NavigationURL.
La boîte de dialogue Sélectionner une URL s'affiche.
Dans la liste de pages sous Contenu du dossier, sélectionnez Querystring.aspx et cliquez sur OK.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Pour ajouter du code-behind à la page ASPQuery.aspx
Cliquez avec le bouton droit sur la page ASPQuery, puis sélectionnez Afficher le code.
L'éditeur de code s'affiche avec le code-behind Visual C# de la page ASPQuery.aspx.
Ajoutez le code mis en surbrillance suivant à la méthode 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"; }
Dans le menu Fichier, cliquez sur Enregistrer tout.
Ajout de la page JScriptQuery.aspx, de contrôles et de code
Pour ajouter la page JScriptQuery.aspx à l'application Web
Dans le menu Projet, choisissez Ajouter un nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément, cliquez sur le modèle Web Form, puis dans la zone Nom, tapez JScriptQuery.aspx. Cliquez ensuite sur Ajouter.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Pour ajouter des contrôles à la page JScriptQuery.aspx
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur JScriptQuery.aspx, puis sélectionnez Concepteur de vues.
Une page vierge s'affiche.
À partir du groupe Standard de la Boîte à outils, faites glisser un contrôle Label sur la page.
Un contrôle Label est ajouté à l'aire de conception.
Sur la page, cliquez sur Label et, dans la fenêtre Propriétés, dans la catégorie Divers, modifiez la valeur de (ID) par IndexLabel.
À partir du groupe Standard de la Boîte à outils, faites glisser un contrôle HyperLink sur la page.
Un contrôle HyperLink est ajouté à l'aire de conception.
Sur la page, cliquez sur HyperLink, et, dans la fenêtre Propriétés, dans la catégorie Apparence, modifiez la valeur de Texte par Précédent.
Dans la catégorie Navigation, cliquez sur (…) pour la propriété NavigationURL.
La boîte de dialogue Sélectionner une URL s'affiche.
Dans la liste de pages sous Contenu du dossier, sélectionnez Querystring.aspx et cliquez sur OK.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Pour ajouter du code-behind à la page JScriptQuery.aspx
Cliquez avec le bouton droit sur la page JScriptQuery, puis sélectionnez Afficher le code.
L'éditeur de code s'affiche avec le code-behind Visual C# de la page JScriptQuery.aspx.
Ajoutez le code mis en surbrillance suivant à la méthode 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"; }
Dans le menu Fichier, cliquez sur Enregistrer tout.
Test manuel de l'application Web
Pour tester l'application Web manuellement
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur JScriptQuery.aspx, puis cliquez sur Définir comme page de démarrage.
Appuyez sur CTRL+F5 pour exécuter l'application Web dans le navigateur.Vous allez voir la première page.
Cliquez sur le lien Dynamic querystring generated by ASP.NET.
La page ASPQuery.aspx s'affiche avec le message « Success.Dynamic querystring parameter found. »
Cliquez sur le lien Précédent.
Cliquez sur le lien Dynamic querystring generated by javascript.
La page JScriptQuery.aspx s'affiche avec le message « Success.Dynamic querystring parameter found. »
Cliquez sur le lien Précédent.
Copiez l'adresse de votre application Web dans le Presse-papiers ou dans un fichier Bloc-notes.Par exemple, l'adresse peut se présenter comme suit :
https://localhost:<NuméroPort>/Querystring.aspx.
Lorsque vous allez créer un test de performances de site Web, lors d'une étape ultérieure de cette procédure pas à pas, vous aurez besoin de l'URL.
Création d'un projet test
Pour créer le projet test
Dans le menu Fichier, pointez sur Ajouter, puis cliquez sur Nouveau projet.
La boîte de dialogue Ajouter un nouveau projet s'affiche.
Sous Modèles installés, développez Visual C#, puis sélectionnez Test.
Dans la liste de modèles, choisissez Projet de test.
Dans la zone Nom, tapez DynamicParameterSampleTest.
Cliquez sur OK.
[!REMARQUE]
Par défaut, Visual Studio Ultimate ajoute un fichier de test unitaire.Vous n'avez pas besoin du fichier de test unitaire pour cette procédure pas à pas.Vous pouvez donc le supprimer.Si vous ne supprimez pas le fichier, cela n'affecte pas la procédure.
Enregistrement d'un test de performances de site Web et détection automatique du paramètre dynamique pour la page ASPQuery.aspx
Pour enregistrer le test des performances de site Web
Dans le menu Test, cliquez sur Nouveau test.
La boîte de dialogue Ajouter un nouveau test s'affiche.
Dans la boîte de dialogue Ajouter un nouveau test, sélectionnez Test de performances de site Web, nommez le test DynamicParameterSampleApp.webtest, puis cliquez sur OK.
Un nouveau fichier de test de performances de site Web nommé DynamicParameterSampleApp.webtest est ajouté à votre projet et l'Enregistreur de test de performances de site Web s'ouvre dans une nouvelle instance d'Internet Explorer.
Attention Pour que la procédure suivante fonctionne correctement, vous devez suivre les étapes ci-après dans l'ordre indiqué.
Dans la barre d'adresses du navigateur, tapez ou collez l'adresse de l'application Web que vous avez copiée lors de la procédure Pour tester l'application Web manuellement, puis appuyez sur ENTRÉE.
[!REMARQUE]
Visual Studio Ultimate commence à afficher les URL du test des performances de site Web dans Web Performance Test Recorder à mesure qu'elles sont enregistrées.
Cliquez sur le lien Dynamic querystring generated by ASP.NET.
La page ASPQuery.aspx s'affiche avec le message « Success.Dynamic querystring parameter found. »
Cliquez sur le lien Précédent.
Cliquez sur le lien Dynamic querystring generated by javascript.
La page JScriptQuery.aspx s'affiche avec le message Success. Dynamic querystring parameter found.
Cliquez sur le lien Précédent.
Cliquez sur Arrêter dans l'Enregistreur de test de performances de site Web pour arrêter l'enregistrement.
Une boîte de dialogue affiche le message Détection des paramètres dynamiques.Elle contient également une barre de progression qui affiche l'état de la détection des paramètres dans les réponses HTTP qui ont été reçues.
La boîte de dialogue Promouvoir les paramètres dynamiques en paramètres de test Web s'affiche ensuite.
Étant donné que le code personnalisé, ajouté pour le paramètre dynamique dans CustomQueryString dans la page ASPQuery de la procédure, a été détecté automatiquement, il apparaît dans la boîte de dialogue.
Le paramètre dynamique pour CustomQueryString dans la page JScriptQuery n'a pas été détecté automatiquement car le code JavaScript personnalisé a été ajouté à la page Querystring.aspx dans la procédure Ajouter le code à la page Querystring.aspx.
Cliquez sur OK pour ajouter une règle d'extraction ajoutée au Querystring.aspx.
L'éditeur de test de performances Web est développé entièrement avec la première requête Querystring.aspx.Il affiche la règle d'extraction qui a été ajoutée.
Développez entièrement la seconde requête dans l'arborescence des requêtes pour ASPQuery.aspx et notez que la valeur CustomQueryString a été liée à la règle d'extraction.
Cliquez sur Fichier, puis choisissez Enregistrer DynamicParameterSampleApp.webtest pour sauvegarder le test de performances de site Web nouvellement enregistré.
Lire le test de performances de site Web pour produire l'erreur de paramètre dynamique non-détectée
Pour lire le test de performances de site Web
Dans l'éditeur de test de performances Web, cliquez sur Exécuter dans la barre d'outils pour afficher l'Afficheur de résultats de test de performances Web.
Notez que la quatrième requête a échoué en générant une erreur.La quatrième requête concerne la page JScriptQuery.aspx.
Isoler le paramètre dynamique ayant provoqué l'erreur
Pour utiliser la recherche rapide dans l'enregistrement de la lecture
Dans l'Afficheur de résultats de test de performances Web, cliquez avec le bouton droit sur la quatrième requête.La quatrième requête concerne la page JScriptQuery.aspx qui a échoué à cause du problème de paramètre dynamique.Sélectionnez Accéder au test Web.
L'éditeur de test de performances Web s'affiche avec la requête JScriptQuery.aspx mise en surbrillance.
Développez entièrement le nœud de requêtes et notez que la partie « wy0zaykqadkoscuvoiqemofm » de CustomQueryString semble dynamique : « CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm ».
Revenez à l'Afficheur de résultats de test de performances Web et sélectionnez la page JScriptQuery.aspx qui a échoué.
Sélectionnez l'onglet Requête.
Vérifiez que la case à cocher Afficher les données brutes est désactivée.
Faites défiler l'écran vers le bas jusqu'à ce que vous trouviez Paramètres QueryString dans la colonne Nom.
Cliquez avec le bouton droit sur CustomQueryString, puis sélectionnez Recherche rapide.
Dans la boîte de dialogue Rechercher, la valeur des paramètres s'affiche dans Rechercher.
Dans ce cas, en regardant l'éditeur de test de performances Web, vous constatez qu'une valeur jScriptQueryString___wy0zaykqadkoscuvoiqemofm a été assignée à CustomQueryString de la requête JScriptQuery.aspx et que la partie dynamique suspecte est « wy0zaykqadkoscuvoiqemofm ».
Dans la liste déroulante Rechercher, supprimez la partie suspecte de la chaîne de recherche.La chaîne doit être « 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.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.Vous devez y parvenir après avoir cliqué trois fois sur Suivant.
Comme vous pouvez le constater dans l'illustration, et le JavaScript implémentés précédemment, le paramètre CustomQueryString de chaîne de requête est assigné une valeur « jScriptQueryString_ » et est également concaténé avec la valeur retournée du sessionId de var.
function jScriptQueryString() { var Hidden = document.getElementById("HiddenFieldSessionID"); var sessionId = Hidden.value; window.location = 'JScriptQuery.aspx?CustomQueryString=jScriptQueryString___' + sessionId; }
Vous savez désormais où a lieu l'erreur. Vous savez également que vous devez extraire la valeur pour 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 est affichée.Si vous observez le code, vous pouvez voir que var sessionId est égal à la valeur retournée par HiddenFieldSessionID.
Mettez en surbrillance HiddenFieldSessionID, cliquez avec le bouton droit sur ce dernier, puis sélectionnez Recherche rapide.
Dans la boîte de dialogue Rechercher, désactivez la case à cocher Rechercher vers le haut et sélectionnez Requête actuelle.
Choisissez Suivant.
La première correspondance de HiddenFieldSessionID est mise en surbrillance dans la ligne suivante.Vous pouvez également consulter la valeur qui lui est assignée :
<input type="hidden" name="HiddenFieldSessionID" id="HiddenFieldSessionID" value="0rvcxknlabd30xnbrjtuy11u" />
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.La valeur lue est « 0rvcxknlabd30xnbrjtuy11u », alors qu'il s'agit de « wy0zaykqadkoscuvoiqemofm » dans l'enregistrement.Étant donné que la valeur ne correspond pas à celle de l'enregistrement d'origine, l'erreur est générée.
Pour ajouter une règle d'extraction à partir de la lecture enregistrée
Dans la barre d'outils de l'Afficheur de résultats de test de performances Web, cliquez sur le bouton Résultat enregistré.
Les résultats d'origine enregistrés pour le test de performances de site Web sont affichés dans un onglet séparé intitulé DynamicParameterSampleApp[Enregistré].
Sélectionnez la troisième requête, si ce n'est pas encore fait.Il s'agit de Querystringrequest.aspx, que vous avez isolé lors de l'étape précédente.
Sélectionnez l'onglet Réponse.Faites défiler vers le bas et mettez en surbrillance la valeur d'origine du paramètre dynamique de « wy0zaykqadkoscuvoiqemofm », que vous avez isolé lors de la procédure précédente.Cliquez avec le bouton droit sur ce dernier et sélectionnez Ajouter une règle d'extraction.
L'éditeur de test de performances Web s'affiche avec la nouvelle règle d'extraction sélectionnée dans la requête Querystring.aspx.Une valeur « Param0 » est assignée à la nouvelle règle d'extraction.
La boîte de dialogue Microsoft Visual Studio s'affiche, indiquant qu'une correspondance a été trouvée pour le texte extrait auquel sera lié le paramètre.
Cliquez sur Oui.
La boîte de dialogue Rechercher et remplacer dans la requête s'affiche. Elle indique le texte extrait wy0zaykqadkoscuvoiqemofm dans la liste déroulante Rechercher et le paramètre {{Param0}} dans la liste déroulante Remplacer par.
Choisissez Suivant.
Le paramètre QueryString, sous la requête JScriptQuery.aspx CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm, est mis en surbrillance.
Choisissez Remplacer.
Le paramètre QueryString sous la requête JScriptQuery.aspx est mis à jour à l'aide du nouveau paramètre de contexte : CustomQueryString=jScriptQueryString___ {{Param0}}.
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.
Voir aussi
Tâches
Comment : promouvoir les paramètres dynamiques en paramètres de test de performances de site Web
Concepts
Vue d'ensemble de l'afficheur des résultats des tests de performances de site Web