NeoLoad permet d'exécuter du code Javascript au sein des Utilisateurs Virtuels. Il est ainsi possible d'insérer une action Javascript lors de la conception de l'utilisateur virtuel. Son code peut faire appel à des fonctions javascript communes déclarées dans les librairies javascript de NeoLoad.
l'API NeoLoad permet principalement de manipuler des variables Neoload et de positionner des cookies sur l'utilisateur virtuel en cours. Les fonctions de bases Javascript permettent d'effectuer des manipulations de chaînes, de date, des calculs,...
la section intitulée « Vue d'ensemble de l'API » décrit les possibilités de l'API NeoLoad.
L'exécution du script est en dehors du contexte de la requête HTML, il est donc impossible de manipuler l'arbre DOM de la réponse d'une requête. Ainsi, les fonctions incluses au sein des navigateurs afin d'extraire ou de manipuler le document HTML ne sont pas incluses.
Voici une liste non exhaustive des fonctions ou objets non supportés:
window
document (dont
document.cookie,
document.forms[0],
document.getElementById(), ...)
navigator
alert()
confirm()
...
Noter que les scripts utilisant de tels objets compilent correctement, et échoueront à l'exécution au moment où l'objet non supporté sera utilisé.
Une action Javascript peut être ajoutée dans la définition d'un utilisateur virtuel. Une action Javascript est définie par un nom et une description et contient le script à exécuter.
Suivre la procédure suivante:
Procédure 8.7. Créer une Action Javascript
Se rendre dans l'onglet Utilisateur Virtuel
de la section Design
Sélectionner l'action logique
Javascript
Glisser-déposer l'action à l'endroit souhaité dans l'arbre des Utilisateurs Virtuels.

NeoLoad crée l'action avec un squelette de script. L'adapter à vos besoins ou l'effacer entièrement pour commencer d'un script vierge.
Lors d'une modification d'un script, il est nécessaire d'appliquer les modifications pour qu'elles soient prises en compte. Avant d'appliquer, il est possible d'annuler les modifications, le dernier script sauvegardé est alors rechargé. Il est possible d'éditer les scripts directement dans les fichiers du projet (répertoire 'scripts'). Dans ce cas on peut recharger dans NeoLoad le contenu du fichier modifié en cliquant sur le bouton 'Recharger'.
Les scripts peuvent être compilés avant exécution. Cette compilation vérifie la syntaxe du script (parenthèse manquante ...) mais ne vérifie pas sa validité (nom des méthodes ...).
Lors du test, une action Javascript est marquée en erreur dans les cas suivants:
Le script de compile pas. (Erreur de syntaxe)
Le script n'est pas valide (une méthode n'existe pas)
Le script à appelé la méthode
context.fail(message) de l'API.
Les librairies javascript permettent de créer des fonctions qui pourront être utilisées dans tous les scripts des utilisateurs virtuels. Outre le partage du code entre plusieurs scripts, l'utilisation des librairies permet d'économiser de la mémoire sur les injecteurs de charge car le code des librairies est partagé par les utilisateurs alors que celui des scripts est chargé en mémoire pour chaque utilisateur. Il est donc conseillé d'utiliser dans la mesure du possible des fonctions codées dans la librairie.

Une librairie Javascript est définie par son nom et le fichier de librairie. Utiliser un fichier existant, ou créer un nouveau fichier vide. Chaque librairie peut contenir une ou plusieurs fonctions Javascript.
Procédure 8.8. Créer une Librairie Javascript
Utiliser le menu .Editer /
Librairies JS
Utiliser le bouton Nouvelle
librairie
Un assistant apparaît, choisir le nom de la librairie
Choisir l'option appropriée: créer une nouvelle librairie ou utiliser un fichier existant.
Valider le choix pour fermer l'assistant
Sélectionner la librairie crée dans le liste des librairies.
Utiliser le menu pour accéder aux librairies.Editer / Librairies
JS
Si vous éditez le fichier à l'aide d'un éditeur de texte en dehors de NeoLoad, vous pouvez recharger le fichier dans l'interface grâce au bouton 'Recharger'.
Utiliser le bouton compiler pour compiler vos
Librairies Javascript avant exécution. Cette compilation vérifie la
syntaxe de la librairie (parenthèse manquante ...) mais pas la validité
(nom des appels de méthodes ...).
Si vous désirez utiliser des méthodes utilitaires des fichiers javascript de votre application web, vous pouvez les ajouter facilement à la librairie via le menu contextuel sur la requête:
Sélectionner dans la bibliothèque la requête du fichier
javascript à ajouter dans la librairie,
/app/mylib.js par exemple.
Utiliser la fonction ajouter à la librairie
JS disponible au clic droit.
Cette action n'est disponible que sur les requêtes javascript. Elle ajoute le contenu de la réponse du serveur dans les librairies Javascript, il est alors possible d'utiliser vos fonctions utilitaires dans les scripts des utilisateurs virtuels.
![]() | Avertissement |
|---|---|
Comme précisé dans la section intitulée « Ce qu'il n'est pas possible de faire », de nombreux objets et fonctions du navigateur ne sont pas supportés (window, document,...). Seules les méthodes utilitaires peuvent être utilisées. Noter que les méthodes utilisant de tels objets non supportés peuvent être déclarées dans la librairie à partir du moment où aucun script n'y fait appel. |
Cette section présente l'API NeoLoad. Se reporter à la documentation de l'API pour plus de détails.
Afin de manipuler les variables, les erreurs et les cookies,
NeoLoad fourni un contexte d'exécution à tous les scripts: la variable
prédéfinie context permet d'effectuer des opérations sur
l'utilisateur virtuel en cours d'exécution.
Voir la documentation de l'objet RuntimeContext de l'API.
NeoLoad fourni un gestionnaire de variables permettant de
récupérer la valeur d'une variable, de créer une nouvelle variable ou de
faire avancer la valeur d'une variable définie dans NeoLoad. Le
gestionnaire de variables est accessible par le contexte:
context.variableManager.
Exemple de script qui récupère la valeur d'une variable NeoLoad, la modifie et crée une nouvelle variable avec cette nouvelle valeur. Cette variable pourra alors être utilisée dans la suite des actions de l'utilisateur virtuel, et être injectée dans un formulaire par exemple.
var varMng = context.variableManager;
var searchID = varMng.getValue("searchID");
varMng.setValue("newSearchID",parseInt(searchID)+1);Voir la documentation de l'objet VariableManager de l'API.
Afin de pouvoir tracer des informations lors de l'exécution d'un script vous pouvez utiliser le logger. Il permet d'écrire des messages à la fois dans le fichier de log de l'injecteur de charge ("loadGenerator.log.00x" dans le dossier des logs, voir la section intitulée « Les fichiers logs ») et dans l'interface de NeoLoad en cas d'erreur. Il existe 5 niveaux de log qui sont hiérarchisés ainsi:
FATAL_ERROR
ERROR
WARNINGCl
INFO
DEBUG
Vous pouvez réglez le niveau de log maximum à utiliser dans les préférences du projets:

En mode validation d'un utilisateur virtuel, le niveau DEBUG est automatiquement sélectionné.
Exemple de script écrivant un message d'erreur dans les logs.
logger.error("Invalid value: "+myvar);Voir la documentation de l'objet Logger de l'API.
Lors de l'exécution d'un javascript, il est possible de simultanément marquer cette action en erreur et d'arrêter l'exécution du script. Cette erreur est alors visible dans les résultats de test. L'erreur contient le message d'erreur ainsi que les logs correspondant au niveau sélectionné.
Exemple de script marquant l'action en erreur.
context.currentVU.fail("Invalid value: "+myvar);Voir la documentation de l'objet VirtualUser de l'API.
L'API permet aussi d'ajouter un cookie pour un serveur donné lors de l'exécution d'un utilisateur virtuel.
Voir la documentation de l'objet VirtualUser de l'API.
var varMng = context.variableManager;
// Récupère la variable searchID extrait d'une requête précédent ce JavaScript
var searchID = varMng.getValue("searchID");
// Logger la valeur de searchID en mode debug
logger.debug("searchID="+searchID);
// Gestion d'erreur si la variable searchID n'existe pas
if(!searchID) {
// Arreter l'execution du script et positionner une erreur NeoLoad
context.fail("variable SearchID not found");
}
// Créer un nouveau cookie pour le serveur 'myServer_80'
context.currentVU.setCookieForServer("myServer_80","cookieName="+searchID+"; Expires=Sat, 30-Sep-2006 21:03:07 GMT; path=/");
// Créer une nouvelle variable d'execution nommée 'newSearchID'
// Note: toutes les variable NeoLoad sont des chaines de caractères,
// il peut être necessaire de les convertir à l'aide
// des méthodes parseInt(), parseFloat(),...
var newSearchID = parseInt(searchID)+1;
varMng.setValue("newSearchID",newSearchID);
NeoLoad permet d'utiliser des classes et des méthodes Java dans
les actions Javascript. Pour utiliser une librairie Java, copier
simplement les fichiers JAR dans le répertoire
<projet-neoload>/lib/jslib/. Les fichiers
ajoutés seront pris en compte automatiquement.
Au sein du Javascript, les noms de classes doivent être pleinement
qualifiés (même pour les classes Java comme
java.util.List) et précédés par
"Packages.".
Par exemple:
var myObj = new Packages.com.company.MyClass(); var result = myObj.compute(myArg); var result2 = Packages.com.company.MyClass.someStaticMethod(result);