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.
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.

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.
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 |
|---|---|
L'utilisateur virtuel ne stoppera pas sont exécution dans un
conteneur |
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.
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.

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 |
|---|---|
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).

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 |
|---|---|
Le nom de la page est un lien qui permet de la selectionner rapidement dans la bibliothèque. |
![]() | 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. |

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
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
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.

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).

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.

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).

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).

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
"". En revanche, il est
possible de composer le nom de la variable: par exemple
"${myVar}data_for_${login}" si vous avez défini la variable
"data_for_jsmith".

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 |
|---|---|
le temps de réponse du conteneur inclut le temps d'attente des pages web contenues. |

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 |
|---|---|
le temps de réponse du conteneur inclut le temps d'attente des pages web qui ont été jouées. |
![]() | 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. |

Utiliser une action try ...
pour effectuer des actions spécifique
en cas d'erreur ou de validation incorrecte. Une action
catchpeut capturer les
erreurs, les assertions (erreur de validation) ou les deux.try...catch
Lors de la création d'une action
try..., deux conteneurs sont
créés catchTry / 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 |
|---|---|
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. |

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.

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 |
|---|---|
Lorsque le fil principal de l'utilisateur virtuel s'arrête, tous
les fils créés par des actions |
![]() | Note |
|---|---|
Dans la validation d'utilisateur virtuel, les actions jouées
dans une action |
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.