Les Utilisateurs Virtuels

Un utilisateur virtuel simule la navigation d'un utilisateur réel. Il s'agit d'une succession de pages web qui peut contenir des actions logiques comme des conteneurs, des boucles ou des pauses pour un comportement plus complexe.

Créer un utilisateur virtuel

Lorsque l'enregistrement est terminé, un assistant permet de créer un utilisateur virtuel contenant toutes les pages enregistrées.

Le panneau "Utilisateur Virtuel" permet de créer et de modifier les utilisateurs virtuels.

actions

L'arbre sur la gauche du panneau contient les actions logiques (conteneurs, boucles, délais) ainsi que les pages de la bibliothèque. Il faut utiliser ces éléments pour construire ou modifier les utilisateurs virtuels en utilisant le glisser-déposer ou le bouton '>'. Le glisser-déposer ou les boutons Monter et Descendre permettent de changer l'ordre des éléments.

erreurs

Par défaut, l'exécution de l'utilisateur virtuel continue en cas d'erreur. Ce comportement peut être modifié sur le panneau de définition de l'utilisateur virtuel. Dans le cas où l'utilisateur virtuel utilise des extracteurs de liens ou des extracteurs de formulaires, une erreur dans une requête précédente peut faire échouer l'extracteur. Dans ce cas, il est recommandé d'arrêter l'utilisateur virtuel en cas d'erreur. De la même manière, il est possible d'interrompre l'exécution de l'utilisateur en cas d'échec de la validation d'une assertion.

[Note]Note

L'utilisateur virtuel ne stoppera pas sont exécution dans un conteneur try.

Temps d'attente

Le temps d'attente permet de simuler le temps passé par l'utilisateur sur la page précédente avant d'accéder à la page courante. Ce temps peut être défini pour chaque page, ou globalement pour toutes les pages.

Valider un Utilisateur Virtuel

Il est fortement recommandé de tester la validité d'un utilisateur virtuel avant d'effectuer un test complet. En effet, les pages utilisées peuvent nécessiter quelques ajustements. C'est toujours le cas quand le serveur génère des liens avec des paramètres dynamiques. Parfois, la requête devra être modifiée en extracteur de lien ou utiliser un extracteur de variable.

Utiliser le menu "Lancer / Démarrer la validation" pour lancer la fenêtre de vérification:

Corriger les erreurs éventuelles dans la bibliothèque.

Lors de la vérification, NeoLoad lance un utilisateur virtuel et montre dans la fenêtre de validation le détail de toutes les actions joués. Aussi bien les actions logiques (pages, conteneurs ...) que les requêtes.

Sommaire

A la fin de la validation, un résumé est disponible contenant des statistiques sur l'utilisateur venant d'être joué:

  • Nombre de page: Le nombre de page joué lors de la validation.

  • Nombre de requête: Le nombre de requête joué lors de la validation.

  • Taille de l'utilisateur virtuel: Taille complète de l'ensemble des pages de la validation (Somme des tailles de toutes les réponses du serveur).

  • Temps d'exécution de l'utilisateur virtuel: Temps d'exécution complet de cet utilisateur virtuel. Lors de la validation de l'utilisateur, les temps d'attente entre les pages ne sont pas joués. Néanmoins, le temps d'execution de l'utilisateur virtuel comprend les temps d'attente calculés pour refléter le temps réel que cet utilisateur prendra durant le test.

  • Nombre d'erreurs: Nombre total de requête en erreur (erreur HTTP et validation). Des boutons permettent de naviguer d'une erreur directement à une autre erreur.

Requête

Pour chaque requête, il est possible d'analyser en détail la requête envoyé par NeoLoad, la réponse du serveur, et les assertions éventuelles. Pour cela, il suffit de cliquer sur la requête à analyser dans le tableau, puis de sélectionner dans la partie détails le détail à afficher (Requête, Réponse, Assertions).

[Note]Note

Le nom de la requête et de la page sont des liens qui permettent la selectionner rapide dans la bibliothèque.

Lors de la visualisation de la réponse du serveur, il est possible de la visualiser dans un navigateur. NeoLoad ouvre alors un navigateur contenant la page de réponse du serveur lors de la validation. Cette visualisation permet d'avoir un aperçu de la page au lieu du source HTML. Lors de cet aperçu, les images ne sont pas visibles dans le navigateur, car seulement le source HTML de la requête courante est envoyé au navigateur.

D'autre part, il est aussi possible de comparer la requête et la réponse du serveur avec ceux de l'enregistrement. Ceci permet de trouver rapidement les paramètres ayant été modifiés (paramètres dynamiques, ou modification de l'application).

Pages

Pour chaque page, vous trouvez dans les détails la durée de la page (avec le temps d'attente qui n'est pas joué durant la validation) ainsi que sa taille (somme de la taille de toutes les requête de cette page).

[Note]Note

Le nom de la page est un lien qui permet de la selectionner rapidement dans la bibliothèque.

[Note]Note

Le temps d'exécution de la page n'est pas la somme des temps de réponse des requêtes. Certaines requêtes étant jouées en parallèle.

Paramètres avancés

Lors de la validation il est possible de modifier certains paramètres avancés de l'utilisateur virtuel:

  • la bande passante montante (upload) et descendante (download)

  • le navigateur

  • les gestion des cookies

  • le nombre de connexions simultanées possibles avec le serveur

  • le comportement du cache

  • l'injecteur de charge à utiliser pour valider cet utilisateur virtuel

Exportation

Il est possible d'exporter la validation courante. NeoLoad va alors créer un fichier texte comprenant toutes les requêtes envoyées ainsi que les réponses du serveur. Cette export peut vous servir pour analyser un script, ou pour communiquer avec notre support technique. Voici une partie d'un fichier texte d'un export:

NeoLoad export de la validation d'un utilisateur virtuel
Utilisateur virtuel:Surfer
Date:1 juin 2006

********** UTILISATEUR VIRTUEL *************
Nom:  Surfer

*************** PAGE HTTP ******************
Nom:  /jpetstore

************* ENTREE *****************
Nom de la requête: /jpetstore
De la page: /jpetstore

------------ REQUETE ----------------
GET http://localhost:8080/jpetstore
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: en-us,ja;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: localhost:8080



------------ REPONSE ----------------
HTTP/1.1 302 D?plac? Temporairement
Server: Apache-Coyote/1.1
Location: http://localhost:8080/jpetstore/
Date: Thu, 01 Jun 2006 07:36:49 GMT

Recheche des paramètres dynamiques

Voir la section intitulée « Gestion des paramètres dynamiques »

Les actions logiques

NeoLoad fournit des actions logiques pour aider à la création des scénarios plus avancés. Ajouter des délais, boucles, conteneurs à vos utilisateurs virtuels.

Délai

L'action délai suspend l'exécution de l'utilisateur virtuel pendant un certain temps. Cette période est exprimée en milliseconde et peut être une variable (utile pour les délais aléatoires).

Boucle

Utiliser une boucle pour itérer sur plusieurs éléments comme les pages. Définir le nombre d'itérations à effectuer. Ce nombre peut être une variable, dans ce cas celle-ci sera évaluée une fois seulement avant la première itération.

A l'intérieur de la boucle une variable nommée <MonNomDeBoucle>_counter est crée, elle contient l'index de l'itération courante. Cette valeur commence à 1 pour la première itération et est incrémentée de 1 à chaque itération.

Tant Que

Utiliser une action tant que permet d'itérer sur plusieurs éléments comme les pages tant qu'une condition n'est pas remplie. Une condition est composée de deux opérandes et d'un opérateur. Les opérateurs sont les suivants:

  • est égal à - vrai si les 2 opérandes ont la même valeur

  • n'est pas égal à - vrai si les 2 opérandes n'ont pas la même valeur

  • contient - vrai si l'opérande1 contient l'opérande2

  • ne contient pas - vrai si l'opérande1 ne contient pas l'opérande2

  • commence par - vrai si l'opérande1 commence par l'opérande2, y compris si les 2 opérande sont égale.

  • ne commence pas par - vrai si l'opérande1 ne commence pas par l'opérande2.

  • termine par - vrai si l'opérande1 termine par l'opérande2, y compris si les 2 opérande sont égale.

  • ne termine pas par - vrai si l'opérande1 ne termine pas par l'opérande2.

  • vérifie l'expression régulière - vrai si l'opérande1 vérifie l'expression régulière de l'opérande2.

  • ne vérifie pas l'expression régulière - vrai si l'opérande1 ne vérifie pas l'expression régulière de l'opérande2.

Chaque opérande peut être une variable ${nomVariable} ou une chaîne statique.

Il est possible d'utiliser plusieurs conditions dans une action tant que. Afin d'ajouter une condition, il suffit de cliquer sur le bouton '+' sous la table des conditions. Vous devez alors configurer si l'action est exécuté si toutes les conditions sont vrai (Résout tous les éléments suivants), ou si au moins l'une d'entre elle est vrai (Résout l'un des éléments suivants).

Si ... Alors ... Sinon

Utiliser une action Si ... Alors ... Sinon pour effectuer des actions conditionnelles. Lors de la création d'une action conditionnelle, deux conteneurs sont créés Alors / Sinon. Si la condition est vérifiée, les actions du conteneur Alors seront executées, sinon, les actions du conteneur Sinon seront exécutées. Une condition est composée de deux opérandes et d'un opérateur. Les opérateurs sont les suivants:

  • est égal à - vrai si les 2 opérandes ont la même valeur

  • n'est pas égal à - vrai si les 2 opérandes n'ont pas la même valeur

  • contient - vrai si l'opérande1 contient l'opérande2

  • ne contient pas - vrai si l'opérande1 ne contient pas l'opérande2

  • commence par - vrai si l'opérande1 commence par l'opérande2, y compris si les 2 opérande sont égale.

  • ne commence pas par - vrai si l'opérande1 ne commence pas par l'opérande2.

  • termine par - vrai si l'opérande1 termine par l'opérande2, y compris si les 2 opérande sont égale.

  • ne termine pas par - vrai si l'opérande1 ne termine pas par l'opérande2.

  • vérifie l'expression régulière - vrai si l'opérande1 vérifie l'expression régulière de l'opérande2.

  • ne vérifie pas l'expression régulière - vrai si l'opérande1 ne vérifie pas l'expression régulière de l'opérande2.

Chaque opérande peut être une variable ${nomVariable} ou une chaîne statique.

Il est possible d'utiliser plusieurs conditions dans une action Si ... Alors ... Sinon. Afin d'ajouter une condition, il suffit de cliquer sur le bouton '+' sous la table des conditions. Vous devez alors configurer si l'action est exécuté si toutes les conditions sont vrai (Résout tous les éléments suivants), ou si au moins l'une d'entre elle est vrai (Résout l'un des éléments suivants).

Modification Variable

Utiliser une action Modification Variable pour changer la valeur d'une variable définie dans la configuration. Il est possible de changer la valeur de la variable (prendre la valeur suivante) ou de réinitialiser la variable (retourner à la première valeur). Cette action permet de changer la valeur de la variable en dehors de sa politique de changement de valeur. Il est par exemple possible de modifier la valeur de la variable dans une boucle de l'utilisateur virtuel.

Préciser le nom de la variable sur laquelle cette action va être effectuée. Préciser le nom, par exemple "myVar", mais pas l'expression telle que "${myVar}". En revanche, il est possible de composer le nom de la variable: par exemple "data_for_${login}" si vous avez défini la variable "data_for_jsmith".

Conteneur

Un conteneur permet de regrouper certaines actions, par exemple correspondant à une action métier, pour en obtenir des statistiques. Le conteneur est considéré de la même manière que les autres actions de résultats comme les pages. Ainsi, vous obtenez les mêmes statistiques comme la durée moyenne, Hits/s, ...

[Note]Note

le temps de réponse du conteneur inclut le temps d'attente des pages web contenues.

Conteneur Aléatoire

Un Conteneur Aléatoire permet de spécifier des requêtes à jouer dans un ordre aléatoire. Il est possible de jouer toutes les requêtes du conteneur, ou seulement quelques unes.

  • Jouer toutes les pages au hasard. Toutes les pages du conteneur seront jouées une fois, dans un ordre aléatoire.

  • Jouer certaines pages au hasard. Dans ce mode, il est possible de stipuler le nombre de page aléatoire qui va être joués. A chaque itération, une page est choisie aléatoirement parmi toutes les pages du conteneur. Il est donc possible dans ce mode qu'une même page soit jouée plusieurs fois.

[Note]Note

le temps de réponse du conteneur inclut le temps d'attente des pages web qui ont été jouées.

[Note]Note

uniquement les actions de premier niveau sont exécutées de manière aléatoire. Si un conteneur aléatoire contient un conteneur, et que ce conteneur est joué, alors toutes les actions du conteneur seront jouées dans l'ordre.

try ... catch

Utiliser une action try ... catch pour effectuer des actions spécifique en cas d'erreur ou de validation incorrecte. Une action try...catch peut capturer les erreurs, les assertions (erreur de validation) ou les deux.

Lors de la création d'une action try...catch, deux conteneurs sont créés Try / Catch. Toutes les actions du conteneur try seront exécutées jusqu'à ce qu'une erreur ou une assertion se produise (en fonction de la configuration de l'action). En cas d'erreur ou d'assertion, les actions du conteneur catch seront exécutées.

[Note]Note

Dans un conteneur try, l'utilisateur virtuel ne stoppera pas son exécution sur erreur ou sur assertion, même si il est configuré pour cela dans sa configuration.

Stop Utilisateur Virtuel

Cette action permet de stopper l'exécution de l'utilisateur virtuel à un moment donné du scénario. Cela peut être particulièrement utile en combinaison avec un action si ... alors ... sinon, ou avec une action try ... catch. Afin de maintenir la charge constante, NeoLoad lancera alors un nouvel utilisateur virtuel.

Fork

L'action fork permet de jouer des actions dans un fil d'exécution différent du fil courant. Ce fil d'exécution est parallèle au fil principal de l'utilisateur virtuel.

Cette action permet notamment de modéliser des actions automatiques jouées par le navigateur pendant que l'utilisateur utilise l'application web normalement. Prenons l'exemple d'une action jouée toutes les x secondes sur le serveur pour rafraîchir un composant web (Ajax, plugin Flash, ...), cette requête doit être exécutée parallèlement au scénario classique de l'utilisateur virtuel.

[Note]Note

Lorsque le fil principal de l'utilisateur virtuel s'arrête, tous les fils créés par des actions fork sont arrêtés immédiatement.

[Note]Note

Dans la validation d'utilisateur virtuel, les actions jouées dans une action fork apparaissent dans la liste au moment de leur exécution. Cet effet peut compliquer la lecture du résultat de cette validation car plusieurs fils d'exécutions se retrouvent imbriqués dans la liste.

JavaScript

Cette action permet d'exécuter du code JavaScript lors du déroulement d'un utilisateur virtuel.

Se reporter à la section intitulée « Javascript » pour plus d'information.