Analyse

Table des matières

Analyser les erreurs dans le panneau d'erreur
Comparer plusieurs résultats de test

Analyser les erreurs dans le panneau d'erreur

Ce tutoriel décrit comment utiliser le panneau détaillant les erreurs d'exécution de requêtes dans NeoLoad, afin de corriger un Utilisateur Virtuel lors de sa mise au point, ou de mieux comprendre le comportement du serveur lors d'un test en charge.

Afin de bien comprendre ce tutoriel, il est conseillé d'avoir lu auparavant le Chapitre 10, Guide de conception.

Comprendre le contexte

Les problèmes ou erreurs intervenant durant l'exécution d'un scénario de test peuvent altérer vos résultats, les rendant partiellement ou au pire totalement inutilisables. Il s'avère donc important d'identifier et de comprendre les erreurs intervenant pendant le déroulement d'un scénario. Dans certaines situations, comprendre la source d'un problème peut s'avérer être une tâche relativement complexe. Afin de vous aider à analyser les causes d'une erreur, NeoLoad vous fournit bon nombre d'informations sur le contexte dans lequel l'erreur s'est produite. Ce tutoriel décrit en détails où et comment NeoLoad fournit ces informations.

Les deux principaux endroits où NeoLoad vous indique et décrit en détails les erreurs survenues se trouvent dans la boîte de dialogue Valider un Utilisateur Virtuel et dans l'onglet Erreurs du mode Résultats. La section suivante passe en revue la boîte de dialogue Valider un Utilisateur Virtuel et vous permet de comprendre en détails les informations fournies par NeoLoad. Dans la mesure où les informations fournies par NeoLoad et la façon dont elles sont présentées sont très similaires, voire identiques dans les deux cas, la troisième section ne détaillera que les légères différences et les informations spécifiques au mode Résultats.

Valider un utilisateur virtuel

Un Utilisateur virtuel simule un utilisateur réel accédant à une série de pages Web. Lorsque vous avez créé et défini un utilisateur virtuel, l'étape de validation de l'utilisateur virtuel est primordiale. Vérifier que l'utilisateur virtuel est valide avant de l'intégrer dans un scénario vous garantira que les Utilisateurs virtuels fonctionneront au moins sur une base par utilisateur. Cela est d'autant plus vrai lorsque les pages utilisées par les Utilisateurs virtuels contiennent des informations dynamiques telles que des valeurs de paramètres ou de formulaires. La capture ci-dessous illustre une situation dans laquelle un Utilisateur virtuel a été défini avec trois pages. Pour effectuer cela, nous avons sélectionné le mode Conception puis effectué la configuration dans l'onglet Utilisateurs Virtuels.

Dans notre exemple, l'utilisateur virtuel appelé SimpleUser navigue sur trois pages qui permettent de connecter l'utilisateur à l'application. La première page /loadtest/welcome est la page d'accueil de l'application, la page/loadtest/signOn permet à l'utilisateur d'entrer son identifiant et son mot de passe. Enfin, la page /loadtest/signedOn est la page qui confirme que l'utilisateur a réussi à se connecter. Cet exemple est simple et plutôt peu réaliste, un Utilisateur virtuel simulerait vraisemblablement un comportement plus complexe, mais nous nous tiendrons à un exemple simple afin de bien illustrer les situations d'erreur.

Vous pouvez valider un utilisateur virtuel en cliquant sur le bouton . NeoLoad affiche alors la boîte de dialogue Valider un Utilisateur Virtuel. Vous pouvez lancer la vérification, ou en d'autres termes, faire agir l'utilisateur virtuel en cliquant sur le bouton Lancer la validation.

Informations fournies par la boîte de dialogue Valider un Utilisateur Virtuel

  1. Pages et requêtes

    NeoLoad joue les pages contenues dans l'Utilisateur virtuel et affiche une suite de lignes: une ligne pour chaque page et une pour chaque requête définie pour cette page HTML. Par exemple, la page HTML /loadtest/signedOn est définie par une requête HTTP unique vers /loadtest/signon.shtml en utilisant la méthode GET. La boîte de dialogue Valider l'Utilisateur Virtuel affiche deux lignes, une pour la page HTML, et à la suite de celle-ci une autre pour la requête. Si la page avait contenu plusieurs requêtes, la boîte de dialogue aurait affiché une ligne pour chaque requête.

  2. Erreurs, codes de réponse et évaluations d'assertion

    Les erreurs, les codes de réponse et les évaluations d'assertion ne sont significatives que pour les requêtes, c'est pourquoi seules les lignes correspondant à des requêtes affichent des informations en rapport à ces éléments. Lorsqu'une requête contient un code réponse (décrit un peu plus loin) associé à une erreur ou contient une assertion fausse, NeoLoad marque la ligne associée avec une icône plutôt qu'une icône de type . Si l'une des requêtes échoue, la boîte de dialogue affiche un en-tête avec un avertissement du style: L'utilisateur virtuel SimpleUser contient X erreur(s).X représente le nombre d'erreurs.

    Une assertion valide une réponse du serveur durant un test en définissant ou validant une condition devant être réalisée. Nous verrons également un peu plus dans cette section combien les assertions peuvent se révéler primordiales.

    Dans notre exemple, la requête HTTP vers /loadtest/error/ a échoué. Elle comporte un code réponse 500 mais pas d'assertion échouée. En sélectionnant cette ligne, la boîte de dialogue affiche les détails de la requête échouée.

  3. Détails de la requête

    Lorsqu'une requête échouée est sélectionnée, la boîte de dialogue affiche les éléments suivants:

    • Page : La page à laquelle la requête appartient.

      Il s'agit d'un lien dynamique et NeoLoad ira directement à la page spécifiée dans le profil de l'utilisateur virtuel si vous suivez le lien.

    • Requête : La requête qui a échoué.

      Il s'agit à nouveau d'un lien dynamique et NeoLoad ira directement à la page spécifiée dans les utilisateurs virtuels si vous suivez le lien. Cette fonctionnalité s'avère particulièrement utile lorsque vous désirez vérifier la façon dont la requête est définie, tout spécialement par rapport aux valeurs dynamiques telles que les URL dynamiques ou les paramètres de formulaire dynamique.

      [Astuce]Astuce

      Vous pouvez facilement revenir des profils d'utilisateurs virtuels vers la boîte de dialogue Valider un Utilisateur Virtuel en cliquant droit sur la requête dans l'utilisateur virtuel et en sélectionnant la commande Sélectionner dans la fenêtre de validation.

      Ceci facilite la navigation entre la définition de la page enregistrée et les détails d'erreurs.

    • Détails de réponse: Les détails comprennent l'heure à laquelle la réponse a été reçue, le code de réponse, la durée de la réponse ainsi que le nombre d'octets de la réponse.

      Le code réponse est également un lien dynamique , NeoLoad affiche dans une fenêtre la description de ce code réponse.

      1. Codes réponse d'erreur HTTP

        Les codes de réponse HTTP sont des codes standards. Pour les types 400 et 500, ils indiquent les conditions d'erreur et sont détectés automatiquement par NeoLoad. Les codes de réponse HTTP vous donnent une bonne indication du type d'erreur en question.

      2. Codes d'erreur NeoLoad

        Les codes de statuts de NeoLoad sont toujours précédés des lettres NL et sont générés par NeoLoad car un mécanisme client a empêché de véritablement envoyer une requête. Des erreurs dues à des échecs de connexion ou des problèmes réseau sont des exemples typiques de telles situations.

    • Contenus des requêtes, réponses et assertions: la zone de groupe Détails vous permet de sélectionner le contenu à afficher.

      Cette fonctionnalité se révèle souvent incontournable lorsqu'il s'agit de comprendre la cause d'une erreur. Visualiser la requête permettra, par exemple, de vérifier ce qui est faux (un paramètre dynamique, une URL erronée,...). La réponse comportera l'explication détaillée de l'erreur dans le cas d'une erreur côté serveur et la description associée au code dans le cas d'une erreur de NeoLoad.

      Dans notre exemple, le code de réponse retourné est 500, c'est-à-dire une erreur de serveur interne, le contenu de la réponse décrit très clairement la cause de l'erreur. Elle est ici due à une erreur interne sur la page JSP appelée:

      [Astuce]Astuce

      Vous pouvez facilement effectuer une recherche textuelle dans la sous-fenêtre contenant la description de l'erreur ou la véritable requête ou réponse en cliquant droit dans la sous-fenêtre et en sélectionnant la commande Rechercher....

      La capture d'écran ci-dessous illustre une situation où une erreur au niveau couche réseau est survenue. Dans ce cas précis, au lieu d'un code réponse HTTP, un code de statut NeoLoad est associé à l'erreur et la réponse HTTP contient la description de l'erreur NeoLoad :

Un mot sur les assertions

Dans notre exemple, lorsque le process de login échoue, l'application renvoie une page indiquant que l'opération a échoué. Ceci implique qu'aucune erreur, que cela soit côté serveur ou côté NeoLoad, n'a été détectée. Toutefois, cette situation est très certainement une situation d'erreur. Si notre Utilisateur virtuel avait comporté des pages supplémentaires dépendantes de la réussite du login, une erreur se serait très probablement produite plus tard dans l'une de ces pages. Il s'avère donc crucial d'utiliser les assertions afin de détecter les situations de ce type. Les assertions vous aident à identifier une situation d'erreur tôt dans le scénario et à éviter d'analyser des erreurs incompréhensibles dues à des dysfonctionnements antérieurs.

La capture d'écran ci-dessous montre comment une assertion peut être utilisée pour détecter que le processus de login a échoué. Notez que le code de réponse HTTP est 200, indiquant ainsi une réponse HTTP parfaitement valide.

Pour plus d'informations sur l'utilisation des assertions, voir la section intitulée « Valider une réponse du serveur ».

Analyser les erreurs sur un déroulement de scénario

Le déroulement d'un scénario va engendrer des résultats statistiques et fournir une liste exhaustive de toutes les erreurs (ainsi que les échecs d'assertion) qui sont survenus durant l'exécution de ce scénario. La capture d'écran ci-dessous vous montre ce que l'onglet Erreurs affiche dans le mode Résultats après avoir déroulé un scénario particulier. Comme mentionné précédemment, l'information présentée dans cet onglet est très similaire à celle présentée dans la boîte de dialogue Valider un Utilisateur Virtuel:

Les erreurs sont également affichées par NeoLoad en mode Exécution pendant l'exécution du scénario dans l'onglet Erreurs.

Les points suivants mettent en évidence les différences entre la boîte de dialogue Valider un Utilisateur Virtuel et l'onglet Erreurs:

  1. L'onglet Erreurs liste les lignes pour les requêtes uniquement, contrairement à la boîte de dialogue qui présente une ligne pour la page HTML à laquelle la requête appartient. Ceci s'explique principalement par le fait que l'onglet Erreurs affiche une ligne d'erreur pour chaque type et chaque instance d'utilisateur virtuel joué durant le scénario.

  2. L'onglet Erreurs affiche les erreurs pour chaque Utilisateur Virtuel joué durant le scénario, contrairement à la boîte de dialogue qui, par définition, ne concerne qu'un utilisateur unique. Un scénario définit un nombre d'utilisateurs virtuels à jouer. Ces utilisateurs appartiennent à différentes populations et comprennent différents types d'utilisateurs. De ce fait, des erreurs peuvent survenir pour des utilisateurs multiples et pour des types multiples d'utilisateurs.

    Dans notre exemple, le scénario comporte des erreurs concernant deux types d'utilisateurs, SimpleUser et OccasionnalUser. NeoLoad numérote les utilisateurs dans l'ordre de leur entrée dans le scénario.

  3. L'onglet Erreurs fournit la réponse et la requête précédant la requête causant l'erreur. Dans certains cas, une erreur de requête peut être causée par la requête ou réponse précédente. Par conséquent, pouvoir accéder facilement à ces éléments vous aide considérablement à comprendre la raison d'une erreur.

La suite de cette section décrit comment les nouveaux éléments fournis par l'onglet Erreurs peuvent être utilisés.

Filtrer et trier par Utilisateurs Virtuels

Dans notre exemple, nous souhaitons analyser l'erreur 500 générée sur l'utilisateur virtuel OccasionnalUser. De même, nous souhaitons nous concentrer sur un utilisateur particulier de ce type: OccasionnalUser#5.

  • Filtrer: Pour travailler avec un type spécifique d'utilisateur, le plus simple est de filtrer l'affichage des erreurs en sélectionnant le type d'utilisateur virtuel dans la liste déroulante Utilisateur virtuel.

  • Trier: En cliquant sur le titre de la colonne Utilisateur Virtuel, vous pouvez trier les erreurs par type d'utilisateur virtuel. Vous pouvez ainsi facilement travailler avec un type d'utilisateur particulier.

La capture d'écran suivante met en évidence les informations d'erreur après un filtrage sur OccasionnalUser et un tri par Utilisateur virtuel:

Utilisation de la requête précédente

Dans notre exemple, la requête GET /loadtest/error a retourné un code d'erreur HTTP 500. Il s'agit d'un code d'erreur Erreur Interne de Servlet.

En jettant un oeil à la requête précédente (en sélectionnant le bouton radio Requête précédente), on s'aperçoit que la page loadtest/redirect/simple.jsp a été appelée:

Poussons à présent notre recherche un peu plus loin en affichant la réponse retournée par la requête précédente. Pour ce faire, cliquons sur le bouton radio "réponse précédente":

La réponse contient un code 302 Moved Temporarily qui redirige l'agent client vers la page intitulée loadtest/error. Notre problème se trouve donc dans loadtest/redirect/simple.jsp qui nous redirige vers une page en erreur. Cet exemple simple vous montre comment utiliser à bon escient les informations fournies par NeoLoad concernant le contexte dans lequel une erreur survient.

Liens connexes

Pour plus d'informations sur l'utilisation des assertions et la validation des réponses serveur, voir la section intitulée « Valider une réponse du serveur ».

Pour plus d'informations sur les codes de réponses HTTP et les codes de statuts de NeoLoad, voir l'annexe.