18 Introduction

Plusieurs éléments de test utilisent les propriétés JMeter pour contrôler leur comportement. Ces propriétés sont normalement résolues lorsque la classe est chargée. Cela se produit généralement avant le début du plan de test, il n'est donc pas possible de modifier les paramètres à l'aide de la fonction __setProperty() .

18.1 Échantillonneurs

Les échantillonneurs effectuent le travail réel de JMeter. Chaque échantillonneur (à l'exception de Flow Control Action ) génère un ou plusieurs résultats d'échantillon. Les résultats de l'échantillon ont divers attributs (succès/échec, temps écoulé, taille des données, etc.) et peuvent être visualisés dans les différents écouteurs.

Requête FTP

Ce contrôleur permet d'envoyer une requête FTP "récupérer fichier" ou "télécharger fichier" vers un serveur FTP. Si vous envisagez d'envoyer plusieurs requêtes au même serveur FTP, envisagez d'utiliser un élément de configuration FTP Request Defaults afin de ne pas avoir à saisir les mêmes informations pour chaque FTP Request Generative Controller. Lors du téléchargement d'un fichier, celui-ci peut être stocké sur disque (fichier local) ou dans les données de réponse, ou les deux.

La latence est définie sur le temps nécessaire pour se connecter.

Capture d'écran du panneau de configuration de la requête FTP
Capture d'écran du panneau de configuration de la requête FTP

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Nom du serveur ou IP
Nom de domaine ou adresse IP du serveur FTP.
Oui
Port
Port à utiliser. Si c'est >0 , alors ce port spécifique est utilisé, sinon JMeter utilise le port FTP par défaut.
Non
Fichier distant :
Fichier à récupérer ou nom du fichier de destination à télécharger.
Oui
Fichier local :
Fichier à télécharger ou destination des téléchargements (par défaut, nom de fichier distant).
Oui, si téléchargement (*)
Contenu du fichier local :
Fournit le contenu du téléchargement, remplace la propriété Fichier local.
Oui, si téléchargement (*)
obtenir (RETR) / mettre (STOR)
Que ce soit pour récupérer ou télécharger un fichier.
Oui
Utiliser le mode binaire ?
Cochez cette case pour utiliser le mode binaire (ASCII par défaut)
Oui
Enregistrer le fichier en réponse ?
S'il faut stocker le contenu du fichier récupéré dans les données de réponse. Si le mode est ASCII, le contenu sera visible dans l' arborescence des résultats d'affichage .
Oui, si téléchargement
Nom d'utilisateur
Nom d'utilisateur du compte FTP.
Généralement
Mot de passe
Mot de passe du compte FTP. NB Cela sera visible dans le plan de test.
Généralement
^

Requête HTTP

Cet échantillonneur vous permet d'envoyer une requête HTTP/HTTPS à un serveur Web. Il vous permet également de contrôler si JMeter analyse ou non les fichiers HTML à la recherche d'images et d'autres ressources intégrées et envoie des requêtes HTTP pour les récupérer. Les types de ressources intégrées suivants sont récupérés :

  • images
  • applets
  • feuilles de style (CSS) et ressources référencées à partir de ces fichiers
  • scripts externes
  • cadres, iframes
  • images de fond (corps, table, TD, TR)
  • fond sonore

L'analyseur par défaut est org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser . Cela peut être changé en utilisant la propriété " htmlparser.className " - voir jmeter.properties pour plus de détails.

Si vous envisagez d'envoyer plusieurs requêtes au même serveur Web, envisagez d'utiliser un élément de configuration HTTP Request Defaults afin de ne pas avoir à saisir les mêmes informations pour chaque requête HTTP.

Ou, au lieu d'ajouter manuellement des requêtes HTTP, vous pouvez utiliser l' enregistreur de script de test HTTP(S) de JMeter pour les créer. Cela peut vous faire gagner du temps si vous avez beaucoup de requêtes HTTP ou des requêtes avec de nombreux paramètres.

Trois éléments de test différents sont utilisés pour définir les échantillonneurs :

Échantillonneur AJP/1.3
utilise le protocole Tomcat mod_jk (permet de tester Tomcat en mode AJP sans avoir besoin d'Apache httpd) L'échantillonneur AJP ne prend pas en charge le téléchargement de plusieurs fichiers ; seul le premier fichier sera utilisé.
Requête HTTP
cela a une liste déroulante d'implémentation, qui sélectionne l'implémentation du protocole HTTP à utiliser :
Java
utilise l'implémentation HTTP fournie par la JVM. Cela présente certaines limitations par rapport aux implémentations HttpClient - voir ci-dessous.
HTTPClient4
utilise Apache HttpComponents HttpClient 4.x.
Valeur vide
ne définit pas l'implémentation sur les échantillonneurs HTTP, s'appuie donc sur les valeurs par défaut de la requête HTTP si elles sont présentes ou sur la propriété jmeter.httpsampler définie dans jmeter.properties
Requête HTTP GraphQL
il s'agit d'une variante GUI de la requête HTTP pour fournir des éléments d'interface utilisateur plus pratiques pour afficher ou modifier GraphQL Query , Variables et Operation Name , tout en les convertissant automatiquement en arguments HTTP sous le capot à l'aide du même échantillonneur. Cela masque ou personnalise les éléments d'interface utilisateur suivants car ils sont moins pratiques ou non pertinents pour GraphQL sur les requêtes HTTP/HTTPS :
  • Méthode : Seules les méthodes POST et GET sont disponibles conformément à la spécification GraphQL sur HTTP. La méthode POST est sélectionnée par défaut.
  • Paramètres et onglets Post Body : vous pouvez afficher ou modifier le contenu des paramètres via les éléments d'interface utilisateur Requête, Variables et Nom de l'opération à la place.
  • Onglet Téléchargement de fichier : non pertinent pour les requêtes GraphQL.
  • Ressources intégrées à partir de la section Fichiers HTML dans l'onglet Avancé : non pertinent dans les réponses GraphQL JSON.

L'implémentation Java HTTP présente certaines limitations :

  • Il n'y a aucun contrôle sur la façon dont les connexions sont réutilisées. Lorsqu'une connexion est libérée par JMeter, elle peut ou non être réutilisée par le même thread.
  • L'API est mieux adaptée à une utilisation à un seul thread - divers paramètres sont définis via les propriétés du système et s'appliquent donc à toutes les connexions.
  • Pas de prise en charge de l'authentification Kerberos
  • Il ne prend pas en charge les tests de certificats basés sur le client avec Keystore Config.
  • Meilleur contrôle du mécanisme Retry
  • Il ne prend pas en charge les hôtes virtuels.
  • Il ne prend en charge que les méthodes suivantes : GET , POST , HEAD , OPTIONS , PUT , DELETE et TRACE
  • Meilleur contrôle sur la mise en cache DNS avec DNS Cache Manager
Remarque : le protocole FILE est destiné à des fins de test uniquement. Il est géré par le même code quel que soit l'échantillonneur HTTP utilisé.

Si la demande nécessite une autorisation de connexion au serveur ou au proxy (c'est-à-dire lorsqu'un navigateur créerait une boîte de dialogue contextuelle), vous devrez également ajouter un élément de configuration HTTP Authorization Manager . Pour les connexions normales (c'est-à-dire lorsque l'utilisateur entre les informations de connexion dans un formulaire), vous devrez déterminer ce que fait le bouton d'envoi du formulaire et créer une requête HTTP avec la méthode appropriée (généralement POST ) et les paramètres appropriés à partir de la définition du formulaire. . Si la page utilise HTTP, vous pouvez utiliser le proxy JMeter pour capturer la séquence de connexion.

Un contexte SSL distinct est utilisé pour chaque thread. Si vous souhaitez utiliser un seul contexte SSL (pas le comportement standard des navigateurs), définissez la propriété JMeter :

https.sessioncontext.shared=true
Par défaut, depuis la version 5.0, le contexte SSL est conservé lors d'une itération de groupe de threads et réinitialisé à chaque itération de test. Si, dans votre plan de test, le même utilisateur itère plusieurs fois, vous devez le définir sur false.
httpclient.reset_state_on_thread_group_iteration=true
Remarque : cela ne s'applique pas à l'implémentation Java HTTP.
JMeter utilise par défaut le niveau de protocole SSL TLS. Si le serveur a besoin d'un niveau différent, par exemple SSLv3 , modifiez la propriété JMeter, par exemple :
https.default.protocol=SSLv3

JMeter permet également d'activer des protocoles supplémentaires, en modifiant la propriété https.socket.protocols .

Si la requête utilise des cookies, vous aurez également besoin d'un HTTP Cookie Manager . Vous pouvez ajouter l'un ou l'autre de ces éléments au groupe de threads ou à la requête HTTP. Si vous avez plusieurs requêtes HTTP nécessitant des autorisations ou des cookies, ajoutez les éléments au groupe de threads. De cette façon, tous les contrôleurs de requête HTTP partageront les mêmes éléments du gestionnaire d'autorisations et du gestionnaire de cookies.

Si la requête utilise une technique appelée « réécriture d'URL » pour maintenir les sessions, consultez la section  6.1 Gestion des sessions utilisateur avec la réécriture d'URL pour des étapes de configuration supplémentaires.

Capture d'écran du panneau de configuration de la requête HTTP
Capture d'écran du panneau de configuration de la requête HTTP
Champs de configuration avancée de requête HTTP
Champs de configuration avancée de requête HTTP
Capture d'écran du panneau de configuration de la requête HTTP GraphQL
Capture d'écran du panneau de configuration de la requête HTTP GraphQL
Champ de variables pour la requête HTTP GraphQL
Champ de variables pour la requête HTTP GraphQL

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Serveur
Nom de domaine ou adresse IP du serveur Web, par exemple www.example.com . [N'incluez pas le préfixe http:// .] Remarque : Si l'en-tête « Hôte » est défini dans un gestionnaire d'en-tête, il sera utilisé comme nom d'hôte virtuel.
Le serveur est requis, sauf si :
  • il est fourni par HTTP Request Defaults
  • ou une URL complète comprenant le schéma, l'hôte et le port ( schema://host:port ) est définie dans le champ Path
Non
Port
Port sur lequel le serveur Web écoute. Par défaut : 80
Non
Délai de connexion
Délai de connection dépassé. Nombre de millisecondes à attendre pour qu'une connexion s'ouvre.
Non
Délai de réponse
Délai de réponse. Nombre de millisecondes d'attente d'une réponse. Notez que cela s'applique à chaque attente d'une réponse. Si la réponse du serveur est envoyée en plusieurs blocs, le temps écoulé global peut être plus long que le délai d'expiration.

Une assertion de durée peut être utilisée pour détecter les réponses qui prennent trop de temps à se terminer.

Non
Serveur (proxy)
Nom d'hôte ou adresse IP d'un serveur proxy pour effectuer la requête. [N'incluez pas le préfixe http:// .]
Non
Port
Port sur lequel le serveur proxy écoute.
Non, sauf si le nom d'hôte du proxy est spécifié
Nom d'utilisateur
(Facultatif) nom d'utilisateur pour le serveur proxy.
Non
Mot de passe
(Facultatif) mot de passe pour le serveur proxy. (NB ceci est stocké non chiffré dans le plan de test)
Non
Mise en œuvre
Java , HttpClient4 . Si non spécifié (et non défini par HTTP Request Defaults), la valeur par défaut dépend de la valeur de la propriété JMeter jmeter.httpsampler , à défaut, l'implémentation HttpClient4 est utilisée.
Non
Protocole
HTTP , HTTPS ou FICHIER . Par défaut : HTTP
Non
Méthode
GET , POST , HEAD , TRACE , OPTIONS , PUT , DELETE , PATCH (non pris en charge pour l' implémentation JAVA ). Avec HttpClient4 , les méthodes suivantes liées à WebDav sont également autorisées : COPY , LOCK , MKCOL , MOVE , PROPFIND , PROPPATCH , UNLOCK , REPORT , MKCALENDAR , SEARCH .

D'autres méthodes peuvent être prédéfinies pour HttpClient4 en utilisant la propriété JMeter httpsampler.user_defined_methods .

Oui
Encodage du contenu
Encodage du contenu à utiliser (pour POST , PUT , PATCH et FILE ). Il s'agit du codage de caractères à utiliser et n'est pas lié à l'en-tête HTTP Content-Encoding.
Non
Rediriger automatiquement
Définit le gestionnaire de protocole http sous-jacent pour qu'il suive automatiquement les redirections, afin qu'elles ne soient pas vues par JMeter et n'apparaissent donc pas comme des exemples. Ne doit être utilisé que pour les requêtes GET et HEAD . L'échantillonneur HttpClient rejettera les tentatives d'utilisation pour POST ou PUT .
Avertissement : voir ci-dessous pour plus d'informations sur la gestion des cookies et des en-têtes.
Non
Suivre les redirections
Cela n'a d'effet que si " Rediriger automatiquement " n'est pas activé. S'il est défini, l'échantillonneur JMeter vérifiera si la réponse est une redirection et la suivra si c'est le cas. La redirection initiale et les réponses ultérieures apparaîtront comme des exemples supplémentaires. L'URL et les champs de données de l'échantillon parent seront extraits de l'échantillon final (non redirigé), mais le nombre d'octets parent et le temps écoulé incluent tous les échantillons. La latence est tirée de la réponse initiale. Notez que l'échantillonneur HttpClient peut enregistrer le message suivant :
"Redirection demandée mais followRedirects est désactivé"
Cela peut être ignoré.
JMeter réduira les chemins de la forme ' /../segment ' dans les URL de redirection absolues et relatives. Par exemple , http://host/one/../two sera réduit à http://host/two . Si nécessaire, ce comportement peut être supprimé en définissant la propriété JMeter httpsampler.redirect.removeslashdotdot=false
Non
Utiliser KeepAlive
JMeter définit l'en-tête Connection: keep-alive . Cela ne fonctionne pas correctement avec l'implémentation HTTP par défaut, car la réutilisation de la connexion n'est pas sous le contrôle de l'utilisateur. Cela fonctionne avec les implémentations Apache HttpComponents HttpClient.
Non
Utiliser multipart/form-data pour HTTP POST
Utilisez une demande de publication multipart/form-data ou application/x-www-form-urlencoded
Non
En-têtes compatibles avec le navigateur
Lors de l'utilisation de multipart/form-data , cela supprime les en-têtes Content-Type et Content-Transfer-Encoding ; seul l' en-tête Content-Disposition est envoyé.
Non
Chemin
Chemin d'accès à la ressource (par exemple, /servlets/myServlet ). Si la ressource nécessite des paramètres de chaîne de requête, ajoutez-les ci-dessous dans la section "Envoyer les paramètres avec la demande".
Dans un cas particulier, si le chemin commence par « http:// » ou « https:// », il est utilisé comme URL complète.
Dans ce cas, les champs serveur, port et protocole sont ignorés ; les paramètres sont également ignorés pour les méthodes GET et DELETE . Veuillez également noter que le chemin n'est pas encodé - à part le remplacement des espaces par %20 - il peut donc être nécessaire d'encoder des caractères non sûrs pour éviter des erreurs telles que URISyntaxException .
Non
Envoyer les paramètres avec la requête
La chaîne de requête sera générée à partir de la liste de paramètres que vous fournissez. Chaque paramètre a un nom et une valeur , les options pour coder le paramètre et une option pour inclure ou exclure un signe égal (certaines applications n'attendent pas de signe égal lorsque la valeur est la chaîne vide). La chaîne de requête sera générée de la manière correcte, selon le choix de "Méthode" que vous avez fait (c'est-à-dire si vous avez choisi GET ou DELETE , la chaîne de requête sera ajoutée à l'URL, si POST ou PUT, alors il sera envoyé séparément). De même, si vous envoyez un fichier à l'aide d'un formulaire en plusieurs parties, la chaîne de requête sera créée à l'aide des spécifications du formulaire en plusieurs parties. Voir ci-dessous pour plus d'informations sur la gestion des paramètres.

De plus, vous pouvez spécifier si chaque paramètre doit être encodé en URL. Si vous n'êtes pas sûr de ce que cela signifie, il est probablement préférable de le sélectionner. Si vos valeurs contiennent des caractères tels que les suivants, un encodage est généralement requis :

  • Caractères de contrôle ASCII
  • Caractères non ASCII
  • Caractères réservés : les URL utilisent certains caractères pour une utilisation spéciale dans la définition de leur syntaxe. Lorsque ces caractères ne sont pas utilisés dans leur rôle spécial à l'intérieur d'une URL, ils doivent être encodés, exemple : ' $ ', ' & ', ' + ', ' , ' , ' / ', ' : ', ' ; ', ' = ', ' ? ', ' @ '
  • Caractères dangereux : certains caractères présentent la possibilité d'être mal compris dans les URL pour diverses raisons. Ces caractères doivent également toujours être codés, exemple : ' ', ' < ', ' > ', ' # ', ' % ', …
Non
Chemin du fichier:
Nom du fichier à envoyer. Si laissé vide, JMeter n'envoie pas de fichier, s'il est rempli, JMeter envoie automatiquement la demande en tant que demande de formulaire en plusieurs parties.

S'il s'agit d'une requête POST ou PUT ou PATCH et qu'il existe un seul fichier dont l'attribut 'Nom du paramètre' (ci-dessous) est omis, alors le fichier est envoyé en tant que corps entier de la requête, c'est-à-dire qu'aucun wrapper n'est ajouté. Cela permet d'envoyer des corps arbitraires. Cette fonctionnalité est présente pour les requêtes POST , ainsi que pour les requêtes PUT . Voir ci-dessous pour plus d'informations sur la gestion des paramètres.

Non
Le nom du paramètre:
Valeur du paramètre de requête Web " nom ".
Non
Type MIME
Type MIME (par exemple, text/plain ). S'il s'agit d'une requête POST ou PUT ou PATCH et que l'attribut ' name ' (ci-dessous) est omis ou que le corps de la requête est construit à partir de valeurs de paramètres uniquement, la valeur de ce champ est utilisée comme valeur de la requête de type de contenu entête.
Non
Récupérer toutes les ressources intégrées à partir de fichiers HTML
Dites à JMeter d'analyser le fichier HTML et d'envoyer des requêtes HTTP/HTTPS pour toutes les images, applets Java, fichiers JavaScript, CSS, etc. référencés dans le fichier. Voir ci-dessous pour plus de détails.
Non
Enregistrer la réponse sous forme de hachage MD5 ?
Si cette option est sélectionnée, la réponse n'est pas stockée dans le résultat de l'échantillon. Au lieu de cela, le hachage MD5 de 32 caractères des données est calculé et stocké à la place. Ceci est destiné à tester de grandes quantités de données.
Non
Les URL doivent correspondre :
S'il est présent, il doit s'agir d'une expression régulière utilisée pour établir une correspondance avec les URL intégrées trouvées. Donc, si vous souhaitez uniquement télécharger des ressources intégrées à partir de http://example.invalid/ , utilisez l'expression : http://example\.invalid/.*
Non
Les URL ne doivent pas correspondre :
S'il est présent, il doit s'agir d'une expression régulière utilisée pour filtrer toutes les URL intégrées trouvées. Donc, si vous ne voulez pas télécharger de fichiers PNG ou SVG à partir de n'importe quelle source, utilisez l'expression : .*\.(?i:svg|png)
Non
Utiliser le pool simultané
Utilisez un pool de connexions simultanées pour obtenir des ressources intégrées.
Non
Taille
Taille du pool pour les connexions simultanées utilisées pour obtenir des ressources intégrées.
Non
Type d'adresse source
[Uniquement pour la requête HTTP avec implémentation HTTPClient]
Pour distinguer la valeur de l'adresse source, sélectionnez le type de celles-ci :
  • Sélectionnez IP/Hostname pour utiliser une adresse IP spécifique ou un nom d'hôte (local)
  • Sélectionnez Périphérique pour choisir la première adresse disponible pour cette interface, qui peut être IPv4 ou IPv6
  • Sélectionnez Device IPv4 pour sélectionner l'adresse IPv4 du nom de l'appareil (comme eth0 , lo , em0 , etc.)
  • Sélectionnez Device IPv6 pour sélectionner l'adresse IPv6 du nom de l'appareil (comme eth0 , lo , em0 , etc.)
Non
Champ d'adresse source
[Uniquement pour la requête HTTP avec implémentation HTTPClient]
Cette propriété est utilisée pour activer l'usurpation d'adresse IP. Il remplace l'adresse IP locale par défaut pour cet exemple. L'hôte JMeter doit avoir plusieurs adresses IP (c'est-à-dire des alias IP, des interfaces réseau, des périphériques). La valeur peut être un nom d'hôte, une adresse IP ou un périphérique d'interface réseau tel que " eth0 " ou " lo " ou " wlan0 ".
Si la propriété httpclient.localaddress est définie, elle est utilisée pour toutes les requêtes HttpClient.
Non

Les paramètres suivants sont disponibles uniquement pour la requête HTTP GraphQL :

Paramètres

Attribut
La description
Obligatoire
Requête
Requête GraphQL (ou mutation).
Oui
variables
Variables de requête (ou de mutation) GraphQL dans une chaîne JSON valide. Remarque : Si la chaîne d'entrée n'est pas une chaîne JSON valide, elle sera ignorée avec un journal ERROR.
Non
Nom de l'opération
Nom d'opération GraphQL facultatif lors d'une demande de documents multi-opérations.
Non
Lors de l'utilisation de la redirection automatique, les cookies ne sont envoyés que pour l'URL initiale. Cela peut entraîner un comportement inattendu pour les sites Web qui redirigent vers un serveur local. Par exemple, si www.example.com redirige vers www.example.co.uk . Dans ce cas, le serveur renverra probablement des cookies pour les deux URL, mais JMeter ne verra que les cookies du dernier hôte, c'est-à-dire www.example.co.uk . Si la requête suivante dans le plan de test utilise www.example.com , plutôt que www.example.co.uk, il n'obtiendra pas les bons cookies. De même, les en-têtes sont envoyés pour la demande initiale et ne seront pas envoyés pour la redirection. Ce n'est généralement un problème que pour les plans de test créés manuellement, car un plan de test créé à l'aide d'un enregistreur continuerait à partir de l'URL redirigée.

Gestion des paramètres :
pour les méthodes POST et PUT , s'il n'y a pas de fichier à envoyer et que le ou les noms du ou des paramètres sont omis, le corps est créé en concaténant toutes les valeurs des paramètres. Notez que les valeurs sont concaténées sans ajouter de caractères de fin de ligne. Ceux-ci peuvent être ajoutés en utilisant la fonction __char() dans les champs de valeur. Cela permet d'envoyer des corps arbitraires. Les valeurs sont codées si l'indicateur de codage est défini. Voir également le type MIME ci-dessus pour savoir comment contrôler l' en- tête de demande de type de contenu qui est envoyé.
Pour les autres méthodes, si le nom du paramètre est manquant, le paramètre est ignoré. Ceci permet l'utilisation de paramètres facultatifs définis par des variables.


Vous avez la possibilité de basculer vers l'onglet Données corporelles lorsqu'une demande n'a que des paramètres sans nom (ou aucun paramètre du tout). Cette option est utile dans les cas suivants (entre autres) :

  • Requête HTTP GWT RPC
  • Requête HTTP JSON REST
  • Requête HTTP REST XML
  • Requête HTTP SOAP
Notez qu'une fois que vous avez quitté le nœud Tree, vous ne pouvez pas revenir à l'onglet des paramètres à moins que vous n'effaciez l' onglet Body Data de ses données.

En mode Body Data , chaque ligne sera envoyée avec CRLF en annexe, à l'exception de la dernière ligne. Pour envoyer un CRLF après la dernière ligne de données, assurez-vous simplement qu'il y a une ligne vide à la suite. (Cela ne peut pas être vu, sauf en notant si le curseur peut être placé sur la ligne suivante.)

Figure 1 - Requête HTTP avec un paramètre sans nom
Figure 1 - Requête HTTP avec un paramètre sans nom
Figure 2 - Confirmer la boîte de dialogue pour basculer
Figure 2 - Confirmer la boîte de dialogue pour basculer
Figure 3 - Requête HTTP utilisant les données corporelles
Figure 3 - Requête HTTP utilisant les données corporelles

Gestion des méthodes :
les méthodes de requête GET , DELETE , POST , PUT et PATCH fonctionnent de la même manière, sauf qu'à partir de la version 3.1, seule la méthode POST prend en charge les requêtes en plusieurs parties ou le téléchargement de fichiers. Le corps des méthodes PUT et PATCH doit être fourni comme suit :

  • définir le corps comme un fichier avec un champ de nom de paramètre vide ; auquel cas le type MIME est utilisé comme type de contenu
  • définir le corps en tant que valeur(s) de paramètre sans nom
  • utilisez l' onglet Données corporelles

Les méthodes GET , DELETE et POST ont un moyen supplémentaire de passer des paramètres en utilisant l' onglet Paramètres . GET , DELETE , PUT et PATCH nécessitent un Content-Type. Si vous n'utilisez pas de fichier, attachez un gestionnaire d'en-tête à l'échantillonneur et définissez-y le type de contenu.

JMeter analyse les réponses des ressources intégrées. Il utilise la propriété HTTPResponse.parsers , qui est une liste d'identifiants d'analyseur, par exemple htmlParser , cssParser et wmlParser . Pour chaque identifiant trouvé, JMeter vérifie deux propriétés supplémentaires :

  • id.types - une liste de types de contenu
  • id.className - l'analyseur à utiliser pour extraire les ressources intégrées

Voir le fichier jmeter.properties pour les détails des paramètres. Si la propriété HTTPResponse.parser n'est pas définie, JMeter revient au comportement précédent, c'est-à-dire que seules les réponses text/html seront analysées

Émulation de connexions lentes :

HttpClient4 et Java Sampler prennent en charge l'émulation des connexions lentes ; voir les entrées suivantes dans jmeter.properties :

# Définir des caractères par seconde> 0 pour émuler des connexions lentes
#httpclient.socket.http.cps=0
#httpclient.socket.https.cps=0
Cependant, l' échantillonneur Java ne prend en charge que les connexions HTTPS lentes.

Calcul de la taille de la réponse

L' implémentation Java n'inclut pas la surcharge de transport telle que les en-têtes de bloc dans la taille du corps de la réponse.
L' implémentation HttpClient4 inclut la surcharge dans la taille du corps de la réponse, de sorte que la valeur peut être supérieure au nombre d'octets dans le contenu de la réponse.

Gestion
des nouvelles tentatives Par défaut, la nouvelle tentative a été définie sur 0 pour les implémentations HttpClient4 et Java, ce qui signifie qu'aucune nouvelle tentative n'est tentée.
Pour HttpClient4, le nombre de tentatives peut être remplacé en définissant la propriété JMeter appropriée, par exemple :

httpclient4.retrycount=3
Avec l'implémentation HC4, la nouvelle tentative sera effectuée par défaut sur les méthodes HTTP idempotentes. Si vous souhaitez réessayer pour toutes les méthodes, définissez la propriété
httpclient4.request_sent_retry_enabled=true
Notez que l'implémentation Java ne réessaye pas non plus par défaut, vous pouvez changer cela en définissant
http.java.sampler.retries=3

Remarque : Les certificats ne sont pas conformes aux contraintes de l'algorithme
Vous pouvez rencontrer l'erreur suivante : java.security.cert.CertificateException : les certificats ne sont pas conformes aux contraintes de l'algorithme si vous exécutez une requête HTTPS sur un site Web avec un certificat SSL (lui-même ou l'un des certificats SSL dans sa chaîne de confiance) avec un algorithme de signature utilisant MD2 (comme md2WithRSAEncryption ) ou avec un certificat SSL de taille inférieure à 1024 bits.

Cette erreur est liée à une sécurité accrue dans Java 8.

Pour vous permettre d'effectuer votre requête HTTPS, vous pouvez rétrograder la sécurité de votre installation Java en modifiant la propriété Java jdk.certpath.disabledAlgorithms . Supprimez la valeur MD2 ou la contrainte de taille, selon votre cas.

Cette propriété est dans ce fichier :

JAVA_HOME/jre/lib/security/java.security

Voir le bogue 56357 pour plus de détails.

^

Requête JDBC

Cet échantillonneur vous permet d'envoyer une requête JDBC (une requête SQL) à une base de données.

Avant de l'utiliser, vous devez configurer un élément de configuration de la configuration de la connexion JDBC

Si la liste des noms de variables est fournie, pour chaque ligne renvoyée par une instruction Select, les variables sont définies avec la valeur de la colonne correspondante (si un nom de variable est fourni) et le nombre de lignes est également défini. Par exemple, si l'instruction Select renvoie 2 lignes de 3 colonnes et que la liste de variables est A,,C , alors les variables suivantes seront configurées :

A_#=2 (nombre de lignes)
A_1=colonne 1, ligne 1
A_2=colonne 1, ligne 2
C_#=2 (nombre de lignes)
C_1=colonne 3, ligne 1
C_2=colonne 3, ligne 2

Si l'instruction Select renvoie zéro ligne, les variables A_# et C_# seraient définies sur 0 et aucune autre variable ne serait définie.

Les anciennes variables sont effacées si nécessaire - par exemple, si la première sélection récupère six lignes et qu'une seconde sélection ne renvoie que trois lignes, les variables supplémentaires pour les lignes quatre, cinq et six seront supprimées.

Le temps de latence est défini à partir du temps qu'il a fallu pour acquérir une connexion.
Capture d'écran du panneau de configuration de la demande JDBC
Capture d'écran du panneau de configuration de la demande JDBC

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Nom de variable du pool déclaré dans la configuration de la connexion JDBC
Nom de la variable JMeter à laquelle le pool de connexions est lié. Cela doit correspondre au champ ' Variable Name ' d' une configuration de connexion JDBC .
Oui
Type de requête
Définissez ceci en fonction du type d'instruction :
  • Sélectionnez le relevé
  • Déclaration de mise à jour - utilisez-la également pour les insertions et les suppressions
  • Déclaration appelable
  • Instruction Select préparée
  • Déclaration de mise à jour préparée - utilisez-la également pour les insertions et les suppressions
  • Commettre
  • Retour en arriere
  • Validation automatique (faux)
  • Validation automatique (vrai)
  • Modifier - cela devrait être une référence de variable qui correspond à l'un des éléments ci-dessus
Les types Commit , Rollback , Autocommit(false) et Autocommit(true) sont spéciaux, car ils ignorent les instructions SQL données et modifient uniquement l'état de la connexion.
Oui
Requête SQL
Requête SQL.
N'entrez pas de point-virgule à la fin.
Il n'est généralement pas nécessaire d'utiliser { et } pour encadrer des instructions Callable ; cependant, ils peuvent être utilisés si la base de données utilise une syntaxe non standard.
Le pilote JDBC convertit automatiquement l'instruction si nécessaire lorsqu'elle est entre {} .
Par exemple:
  • sélectionnez * parmi t_customers où id=23
  • APPELER SYSCS_UTIL.SYSCS_EXPORT_TABLE (null, ?, ?, null, null, null)
    • Valeurs des paramètres : nom de la table , nom du fichier
    • Types de paramètres : VARCHAR , VARCHAR
Le deuxième exemple suppose que vous utilisez Apache Derby.
Oui
Valeurs des paramètres
Liste de valeurs de paramètres séparées par des virgules. Utilisez ]NULL[ pour indiquer un paramètre NULL . (Si nécessaire, la chaîne nulle peut être modifiée en définissant la propriété " jdbcsampler.nullmarker ".)
La liste doit être entourée de guillemets doubles si l'une des valeurs contient une virgule ou un guillemet double, et tout guillemet double incorporé doit être doublé, par exemple :
"Dbl-Quote : " et virgule : ,"
Il doit y avoir autant de valeurs qu'il y a d'espaces réservés dans l'instruction même si vos paramètres sont des paramètres OUT . Assurez-vous de définir une valeur même si la valeur ne sera pas utilisée (par exemple dans un CallableStatement).
Oui, si une instruction préparée ou appelable a des paramètres
Types de paramètres
Liste séparée par des virgules des types de paramètres SQL (par exemple INTEGER , DATE , VARCHAR , DOUBLE ) ou des valeurs entières de constantes. Ces valeurs entières peuvent être utilisées lorsque vous utilisez des types de base de données personnalisés proposés par le pilote (par exemple , OracleTypes.CURSOR peut être représenté par sa valeur entière -10 ).
Ceux-ci sont définis comme des champs dans la classe java.sql.Types , voir par exemple :
Javadoc pour java.sql.Types .
Remarque : JMeter utilisera tous les types définis par la JVM d'exécution. Par conséquent, si vous utilisez une autre JVM, assurez-vous de consulter la documentation appropriée.
Si l'instruction appelable a des paramètres INOUT ou OUT , ceux-ci doivent être indiqués en préfixant les types de paramètres appropriés, par exemple au lieu de " INTEGER ", utilisez " INOUT INTEGER ".
S'il n'est pas spécifié, " IN " est supposé, c'est-à-dire que " DATE " est identique à " IN DATE ".
Si le type n'est pas l'un des champs trouvés dans java.sql.Types , JMeter accepte également le nombre entier correspondant, par exemple depuis OracleTypes.CURSOR == -10 , vous pouvez utiliser " INOUT -10 ".
Il doit y avoir autant de types qu'il y a d'espaces réservés dans l'instruction.
Oui, si une instruction préparée ou appelable a des paramètres
Noms des variables
Liste de noms de variables séparés par des virgules pour contenir les valeurs renvoyées par les instructions Select, les instructions Select préparées ou CallableStatement. Notez que lorsqu'elle est utilisée avec CallableStatement, la liste des variables doit être dans la même séquence que les paramètres OUT renvoyés par l'appel. S'il y a moins de noms de variables que de paramètres OUT , autant de résultats doivent être stockés dans les variables de contexte de fil d'exécution que de noms de variables ont été fournis. S'il existe plus de noms de variables que de paramètres OUT , les variables supplémentaires seront ignorées
Non
Nom de la variable de résultat
Si spécifié, cela créera une variable d'objet contenant une liste de mappages de lignes. Chaque carte contient le nom de la colonne comme clé et les données de la colonne comme valeur. Usage:
columnValue = vars.getObject("resultObject").get(0).get("Column Name");
Non
Délai(s) de requête
Définissez un délai d'attente en secondes pour la requête, une valeur vide signifie 0, ce qui est infini. -1 signifie ne pas définir de délai d'expiration de requête qui pourrait être nécessaire pour un cas d'utilisation ou lorsque certains pilotes ne prennent pas en charge le délai d'expiration. La valeur par défaut est 0.
Non
Limiter l'ensemble de résultats
Limite le nombre de lignes à parcourir dans le ResultSet. Une valeur vide signifie -1 , par exemple aucune limitation, qui est également la valeur par défaut. Cela peut aider à réduire la quantité de données à extraire de la base de données via le pilote JDBC, mais affecte respectivement toutes les options possibles de Handle ResultSet - par exemple ResultSet incomplet et un nombre d'enregistrements ≤ la limite.
Non
Gérer l'ensemble de résultats
Définit comment le ResultSet renvoyé par les instructions appelables doit être géré :
  • Stocker en tant que chaîne (par défaut) - Toutes les variables de la liste des noms de variables sont stockées sous forme de chaînes et ne parcourront pas un ResultSet lorsqu'elles sont présentes dans la liste. Les CLOB seront convertis en chaînes. Les BLOB seront convertis en chaînes comme s'il s'agissait d'un tableau d'octets encodé en UTF-8. Les CLOB et les BLOB seront coupés après jdbcsampler.max_retain_result_size octets.
  • Stocker en tant qu'objet - Les variables de type ResultSet sur la liste des noms de variables seront stockées en tant qu'objet et pourront être consultées dans les tests/scripts suivants et itérées, ne seront pas itérées dans le ResultSet . Les CLOB seront traités comme si Store As String était sélectionné. Les BLOB seront stockés sous la forme d'un tableau d'octets. Les CLOB et les BLOB seront coupés après jdbcsampler.max_retain_result_size octets.
  • Compter les enregistrements - Les variables des types ResultSet seront itérées en affichant le nombre d'enregistrements comme résultat. Les variables seront stockées sous forme de chaînes. Pour les BLOB , la taille de l'objet sera stockée.
Non
Les versions actuelles de JMeter utilisent UTF-8 comme encodage de caractères. Auparavant, la plate-forme par défaut était utilisée.
Assurez-vous que le nom de la variable est unique dans le plan de test.
^

Requête Java

Cet échantillonneur vous permet de contrôler une classe Java qui implémente l' interface org.apache.jmeter.protocol.java.sampler.JavaSamplerClient . En écrivant votre propre implémentation de cette interface, vous pouvez utiliser JMeter pour exploiter plusieurs threads, le contrôle des paramètres d'entrée et la collecte de données.

Le menu déroulant fournit la liste de toutes ces implémentations trouvées par JMeter dans son classpath. Les paramètres peuvent ensuite être spécifiés dans le tableau ci-dessous - tels que définis par votre implémentation. Deux exemples simples ( JavaTest et SleepTest ) sont fournis.

L' échantillonneur d'exemple JavaTest peut être utile pour vérifier les plans de test, car il permet de définir des valeurs dans presque tous les champs. Celles-ci peuvent ensuite être utilisées par Assertions, etc. Les champs permettent d'utiliser des variables, de sorte que les valeurs de celles-ci peuvent être facilement vues.

Capture d'écran du panneau de configuration de la requête Java
Capture d'écran du panneau de configuration de la requête Java
Si la méthode teardownTest n'est pas remplacée par une sous-classe de AbstractJavaSamplerClient , sa méthode teardownTest ne sera pas appelée. Cela réduit les besoins en mémoire de JMeter. Cela n'aura aucun impact sur les plans de test existants.
Les boutons Ajouter/Supprimer ne servent à rien pour le moment.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Nom du cours
L'implémentation spécifique de l'interface JavaSamplerClient à échantillonner.
Oui
Envoyer les paramètres avec la requête
Une liste d'arguments qui seront passés à la classe échantillonnée. Tous les arguments sont envoyés sous forme de chaînes. Voir ci-dessous pour les paramètres spécifiques.
Non

Les paramètres suivants s'appliquent aux implémentations SleepTest et JavaTest :

Paramètres

Attribut
La description
Obligatoire
Temps de sommeil
Combien de temps dormir (ms)
Oui
Sleep_mask
Combien de « hasard » ajouter :
Le temps de sommeil est calculé comme suit :
totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)
Oui

Les paramètres suivants s'appliquent en plus à l' implémentation de JavaTest :

Paramètres

Attribut
La description
Obligatoire
Étiquette
L'étiquette à utiliser. Si fourni, remplace le nom
Non
Code de réponse
S'il est fourni, définit le SampleResult ResponseCode.
Non
Message de réponse
S'il est fourni, définit le SampleResult ResponseMessage.
Non
Statut
S'il est fourni, définit le SampleResult Status. Si cela est égal à « OK » (en ignorant la casse), l'état est défini sur succès, sinon l'échantillon est marqué comme ayant échoué.
Non
SamplerData
S'il est fourni, définit le SampleResult SamplerData.
Non
Données de résultat
S'il est fourni, définit le SampleResult ResultData.
Non
^

Requête LDAP

Cet échantillon vous permet d'envoyer une requête LDAP différente ( Ajouter , Modifier , Supprimer et Rechercher ) à un serveur LDAP.

Si vous envisagez d'envoyer plusieurs requêtes au même serveur LDAP, envisagez d'utiliser un élément de configuration des valeurs par défaut des requêtes LDAP afin de ne pas avoir à saisir les mêmes informations pour chaque requête LDAP.

De la même manière, l' élément de configuration de connexion utilise également pour la connexion et le mot de passe.
Capture d'écran du panneau de configuration de la requête LDAP
Capture d'écran du panneau de configuration de la requête LDAP

Il existe deux manières de créer des scénarios de test pour tester un serveur LDAP.

  1. Cas de test intégrés.
  2. Scénarios de test définis par l'utilisateur.

Il existe quatre scénarios de test de LDAP. Les tests sont donnés ci-dessous :

  1. Ajouter un essai
    1. Test intégré :

      Cela ajoutera une entrée prédéfinie dans le serveur LDAP et calculera le temps d'exécution. Après l'exécution du test, l'entrée créée sera supprimée du serveur LDAP.

    2. Test défini par l'utilisateur :

      Cela ajoutera l'entrée dans le serveur LDAP. L'utilisateur doit entrer tous les attributs dans la table. Les entrées sont collectées à partir de la table à ajouter. Le temps d'exécution est calculé. L'entrée créée ne sera pas supprimée après le test.

  2. Modifier l'essai
    1. Test intégré :

      Cela créera d'abord une entrée prédéfinie, puis modifiera l'entrée créée dans le serveur LDAP. Et calculera le temps d'exécution. Après l'exécution du test, l'entrée créée sera supprimée du serveur LDAP.

    2. Test défini par l'utilisateur :

      Cela modifiera l'entrée dans le serveur LDAP. L'utilisateur doit entrer tous les attributs dans le tableau. Les entrées sont collectées à partir de la table à modifier. Le temps d'exécution est calculé. L'entrée ne sera pas supprimée du serveur LDAP.

  3. Essai de recherche
    1. Test intégré :

      Cela créera d'abord l'entrée, puis recherchera si les attributs sont disponibles. Il calcule le temps d'exécution de la requête de recherche. À la fin de l'exécution, l'entrée créée sera supprimée du serveur LDAP.

    2. Test défini par l'utilisateur :

      Cela recherchera l'entrée définie par l'utilisateur (filtre de recherche) dans la base de recherche (encore une fois, définie par l'utilisateur). Les entrées doivent être disponibles dans le serveur LDAP. Le temps d'exécution est calculé.

  4. Supprimer l'essai
    1. Test intégré :

      Cela créera d'abord une entrée prédéfinie, puis elle sera supprimée du serveur LDAP. Le temps d'exécution est calculé.

    2. Test défini par l'utilisateur :

      Cela supprimera l'entrée définie par l'utilisateur dans le serveur LDAP. Les entrées doivent être disponibles dans le serveur LDAP. Le temps d'exécution est calculé.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Nom du serveur ou IP
Nom de domaine ou adresse IP du serveur LDAP. JMeter suppose que le serveur LDAP écoute sur le port par défaut ( 389 ).
Oui
Port
Port auquel se connecter (la valeur par défaut est 389 ).
Oui
DN racine
DN de base à utiliser pour les opérations LDAP
Oui
Nom d'utilisateur
Nom d'utilisateur du serveur LDAP.
Généralement
Mot de passe
Mot de passe du serveur LDAP. (NB ceci est stocké non chiffré dans le plan de test)
Généralement
DN d'entrée
le nom du contexte à créer ou à modifier ; peut ne pas être vide.
Vous devez définir vous-même les bons attributs de l'objet. Donc, si vous voulez ajouter cn=apache,ou=test, vous devez ajouter le nom et la valeur de la table à cn et apache .
Oui, si Test défini par l'utilisateur et Ajouter un test ou Modifier un test est sélectionné
Effacer
le nom du contexte à supprimer ; peut ne pas être vide
Oui, si Test défini par l'utilisateur et Supprimer le test est sélectionné
Base de recherche
le nom du contexte ou de l'objet à rechercher
Oui, si Test défini par l'utilisateur et Test de recherche est sélectionné
Filtre de recherche
l'expression de filtre à utiliser pour la recherche ; peut ne pas être nul
Oui, si Test défini par l'utilisateur et Test de recherche est sélectionné
ajouter un essai
Utilisez ces paires nom , valeur pour la création du nouvel objet dans le contexte donné
Oui, si Test défini par l'utilisateur et ajouter un test est sélectionné
modifier l'essai
Utilisez ces paires nom , valeur pour modifier l'objet de contexte donné
Oui, si Test défini par l'utilisateur et Modifier le test est sélectionné
^

Requête étendue LDAP

Cet échantillonneur peut envoyer les 8 requêtes LDAP différentes à un serveur LDAP. Il s'agit d'une version étendue de l'échantillonneur LDAP, il est donc plus difficile à configurer, mais peut être beaucoup plus proche d'une véritable session LDAP.

Si vous envisagez d'envoyer plusieurs requêtes au même serveur LDAP, envisagez d'utiliser un élément de configuration des valeurs par défaut des requêtes étendues LDAP afin de ne pas avoir à saisir les mêmes informations pour chaque requête LDAP.

Capture d'écran du panneau de configuration de la demande étendue LDAP
Capture d'écran du panneau de configuration de la demande étendue LDAP

Neuf opérations de test sont définies. Ces opérations sont données ci-dessous :

Liaison de fil

Toute demande LDAP fait partie d'une session LDAP, la première chose à faire est donc de démarrer une session sur le serveur LDAP. Pour démarrer cette session, un thread bind est utilisé, ce qui équivaut à l'opération " bind " de LDAP. L'utilisateur est invité à donner un nom d' utilisateur (Nom distinctif) et un mot de passe , qui seront utilisés pour lancer une session. Lorsqu'aucun mot de passe ou un mot de passe incorrect n'est spécifié, une session anonyme est lancée. Attention, omettre le mot de passe ne fera pas échouer ce test, un mauvais mot de passe le fera. (NB ceci est stocké non chiffré dans le plan de test)

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Nom du serveur
Le nom (ou l'adresse IP) du serveur LDAP.
Oui
Port
Le numéro de port sur lequel le serveur LDAP écoute. Si cela est omis, JMeter suppose que le serveur LDAP écoute sur le port par défaut (389).
Non
DN
Nom distinctif de l'objet de base qui sera utilisé pour toute opération ultérieure. Il peut être utilisé comme point de départ pour toutes les opérations. Vous ne pouvez démarrer aucune opération à un niveau supérieur à ce DN !
Non
Nom d'utilisateur
Nom distinctif complet de l'utilisateur que vous souhaitez lier.
Non
Mot de passe
Mot de passe pour l'utilisateur ci-dessus. S'il est omis, il en résultera une liaison anonyme. S'il est incorrect, l'échantillonneur renverra une erreur et reviendra à une liaison anonyme. (NB ceci est stocké non chiffré dans le plan de test)
Non
Délai de connexion (en millisecondes)
Délai d'expiration de la connexion, si dépassé, la connexion sera interrompue
Non
Utiliser le protocole LDAP sécurisé
Utilisez le schéma ldaps:// au lieu de ldap://
Non
Faire confiance à tous les certificats
Faire confiance à tous les certificats, utilisé uniquement si Utiliser le protocole LDAP sécurisé est coché
Non
Délier le fil

C'est simplement l'opération pour terminer une session. C'est l'équivalent de l'opération LDAP « unbind ».

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Liaison/déliaison simple

Il s'agit d'une combinaison des opérations LDAP « bind » et « unbind ». Il peut être utilisé pour une demande d'authentification/vérification du mot de passe pour n'importe quel utilisateur. Il ouvrira une nouvelle session, juste pour vérifier la validité de la combinaison utilisateur/mot de passe, et terminera à nouveau la session.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Nom d'utilisateur
Nom distinctif complet de l'utilisateur que vous souhaitez lier.
Oui
Mot de passe
Mot de passe pour l'utilisateur ci-dessus. S'il est omis, il en résultera une liaison anonyme. S'il est incorrect, l'échantillonneur renverra une erreur. (NB ceci est stocké non chiffré dans le plan de test)
Non
Renommer l'entrée

Il s'agit de l'opération LDAP « moddn ». Il peut être utilisé pour renommer une entrée, mais aussi pour déplacer une entrée ou une sous-arborescence complète vers un autre endroit de l'arborescence LDAP.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Ancien nom d'entrée
Le nom distinctif actuel de l'objet que vous souhaitez renommer ou déplacer, par rapport au DN donné dans l'opération de liaison de thread.
Oui
Nouveau nom distinctif
Le nouveau nom distinctif de l'objet que vous souhaitez renommer ou déplacer, par rapport au DN donné dans l'opération de liaison de thread.
Oui
Ajouter un test

Il s'agit de l'opération « add » LDAP . Il peut être utilisé pour ajouter n'importe quel type d'objet au serveur LDAP.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
DN d'entrée
Nom distinctif de l'objet que vous souhaitez ajouter, par rapport au DN donné dans l'opération de liaison de thread.
Oui
Ajouter un test
Une liste d'attributs et leurs valeurs que vous souhaitez utiliser pour l'objet. Si vous devez ajouter un attribut à valeurs multiples, vous devez ajouter plusieurs fois le même attribut avec leurs valeurs respectives à la liste.
Oui
Supprimer l'essai

C'est l'opération LDAP " delete ", elle peut être utilisée pour supprimer un objet de l'arborescence LDAP

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Effacer
Nom distinctif de l'objet que vous souhaitez supprimer, par rapport au DN donné dans l'opération de liaison de thread.
Oui
Essai de recherche

Il s'agit de l'opération de « recherche » LDAP , et sera utilisée pour définir des recherches.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Base de recherche
Nom distinctif de la sous-arborescence dans laquelle vous souhaitez que votre recherche porte, par rapport au DN donné dans l'opération de liaison de thread.
Non
Filtre de recherche
searchfilter, doit être spécifié dans la syntaxe LDAP.
Oui
Portée
Utilisez 0 pour baseobject-, 1 pour onelevel- et 2 pour une recherche de sous-arborescence. (Par défaut= 0 )
Non
Limite de taille
Spécifiez le nombre maximum de résultats que vous souhaitez obtenir du serveur. (par défaut = 0 , ce qui signifie qu'il n'y a pas de limite.) Lorsque l'échantillonneur atteint le nombre maximum de résultats, il échoue avec le code d'erreur 4
Non
Limite de temps
Spécifiez le temps (cpu) maximal (en millisecondes) que le serveur peut consacrer à votre recherche. Attention, cela ne dit rien sur le temps de réponse. (la valeur par défaut est 0 , ce qui signifie qu'il n'y a pas de limite)
Non
Les attributs
Spécifiez les attributs que vous souhaitez renvoyer, séparés par un point-virgule. Un champ vide renverra tous les attributs
Non
Objet de retour
Indique si l'objet sera renvoyé ( true ) ou non ( false ). Par défaut = faux
Non
Déréférencer les alias
Si true , il déréférencera les alias, si false , il ne les suivra pas (default= false )
Non
Analyser les résultats de la recherche ?
Si true , les résultats de la recherche seront ajoutés aux données de réponse. Si false , un marqueur - que les résultats aient été trouvés ou non - sera ajouté aux données de réponse.
Non
Essai de modifications

Il s'agit de l'opération " modifier " LDAP . Il peut être utilisé pour modifier un objet. Il peut être utilisé pour ajouter, supprimer ou remplacer les valeurs d'un attribut.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Nom de l'entrée
Nom distinctif de l'objet que vous souhaitez modifier, par rapport au DN donné dans l'opération de liaison de thread
Oui
Essai de modifications
L'attribut-valeur-opCode triple.
L' opCode peut être n'importe quel code d'opération LDAP valide ( add , delete , remove ou replace ).
Si vous ne spécifiez pas de valeur avec une opération de suppression , toutes les valeurs de l'attribut donné seront supprimées.
Si vous spécifiez une valeur dans une opération de suppression , seule la valeur donnée sera supprimée.
Si cette valeur est inexistante, l'échantillonneur échouera au test.
Oui
Comparer

Il s'agit de l'opération " comparer " LDAP . Il peut être utilisé pour comparer la valeur d'un attribut donné avec une valeur déjà connue. En réalité, cela est principalement utilisé pour vérifier si une personne donnée est membre d'un groupe. Dans un tel cas, vous pouvez comparer le DN de l'utilisateur en tant que valeur donnée, avec les valeurs de l'attribut « membre » d'un objet de type groupOfNames . Si l'opération de comparaison échoue, ce test échoue avec le code d'erreur 49 .

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
DN d'entrée
Le nom distinctif actuel de l'objet dont vous souhaitez comparer un attribut, par rapport au DN donné dans l'opération de liaison de thread.
Oui
Comparer le filtre
Sous la forme " attribut=valeur "
Oui
^

Accéder à l'échantillonneur de journaux ¶

AccessLogSampler a été conçu pour lire les journaux d'accès et générer des requêtes http. Pour ceux qui ne connaissent pas le journal d'accès, il s'agit du journal que le serveur Web conserve pour chaque demande acceptée. Cela signifie que chaque image, fichier CSS, fichier JavaScript, fichier html, …

Tomcat utilise le format commun pour les journaux d'accès. Cela signifie que tout serveur Web qui utilise le format de journal commun peut utiliser AccessLogSampler. Les serveurs qui utilisent le format de journal commun incluent : Tomcat, Resin, Weblogic et SunOne. Le format de journal courant ressemble à ceci :

127.0.0.1 - - [21/Oct/2003:05:37:21 -0500] "GET /index.jsp?%2Findex.jsp= HTTP/1.1" 200 8343
L'implémentation actuelle de l'analyseur ne regarde que le texte entre guillemets qui contient l'une des méthodes du protocole HTTP ( GET , PUT , POST , DELETE , …). Tout le reste est dépouillé et ignoré. Par exemple, le code de réponse est complètement ignoré par l'analyseur.

À l'avenir, il pourrait être utile de filtrer les entrées qui n'ont pas de code de réponse 200 . L'extension de l'échantillonneur devrait être assez simple. Il y a deux interfaces que vous devez implémenter :

  • org.apache.jmeter.protocol.http.util.accesslog.LogParser
  • org.apache.jmeter.protocol.http.util.accesslog.Generator

L'implémentation actuelle d'AccessLogSampler utilise le générateur pour créer un nouveau HTTPSampler. Le nom du serveur, le port et les images get sont définis par AccessLogSampler. Ensuite, l'analyseur est appelé avec l'entier 1 , lui indiquant d'analyser une entrée. Après cela, HTTPSampler.sample() est appelé pour effectuer la requête.

samp = (HTTPSampler) GENERATOR.generateRequest();
samp.setDomain(this.getDomain());
samp.setPort(this.getPort());
samp.setImageParser(this.isImageParser());
PARSER.parse(1);
res = samp.sample();
res.setSampleLabel(samp.toString());
Les méthodes requises dans LogParser sont :
  • setGenerator(Générateur)
  • analyser (entier)

Les classes implémentant l'interface Generator doivent fournir une implémentation concrète pour toutes les méthodes. Pour un exemple d'implémentation de l'une ou l'autre interface, reportez-vous à StandardGenerator et TCLogParser .

Capture d'écran du panneau de configuration de l'échantillonneur de journaux d'accès
Capture d'écran du panneau de configuration de l'échantillonneur de journaux d'accès

(Code bêta)

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Serveur
Nom de domaine ou adresse IP du serveur Web.
Oui
Protocole
Schème
Non (par défaut, http
Port
Port sur lequel le serveur Web écoute.
Non (par défaut à 80)
Classe d'analyseur de journal
La classe d'analyseur de journaux est responsable de l'analyse des journaux.
Oui (fourni par défaut)
Filtre
La classe filter est utilisée pour filtrer certaines lignes.
Non
Emplacement du fichier journal
L'emplacement du fichier journal d'accès.
Oui

Le TCLogParser traite le journal d'accès indépendamment pour chaque thread. SharedTCLogParser et OrderPreservingLogParser partagent l' accès au fichier, c'est-à-dire que chaque thread obtient l'entrée suivante dans le journal.

Le SessionFilter est destiné à gérer les cookies à travers les threads. Il ne filtre aucune entrée, mais modifie le gestionnaire de cookies afin que les cookies d'une adresse IP donnée soient traités par un seul thread à la fois. Si deux threads tentent de traiter des échantillons à partir de la même adresse IP client, l'un sera obligé d'attendre que l'autre ait terminé.

Le LogFilter est destiné à permettre aux entrées du journal d'accès d'être filtrées par nom de fichier et regex, ainsi qu'au remplacement des extensions de fichier. Cependant, il n'est actuellement pas possible de le configurer via l'interface graphique, il ne peut donc pas vraiment être utilisé.

^

Échantillonneur BeanShell

Cet échantillonneur vous permet d'écrire un échantillonneur à l'aide du langage de script BeanShell.

Pour plus de détails sur l'utilisation de BeanShell, veuillez consulter le site Web de BeanShell.

La migration vers JSR223 Sampler + Groovy est fortement recommandée pour les performances, la prise en charge des nouvelles fonctionnalités Java et la maintenance limitée de la bibliothèque BeanShell.

L'élément de test prend en charge les méthodes d'interface ThreadListener et TestListener . Ceux-ci doivent être définis dans le fichier d'initialisation. Voir le fichier BeanShellListeners.bshrc pour des exemples de définitions.

L'échantillonneur BeanShell prend également en charge l' interface Interruptible . La méthode interrupt() peut être définie dans le script ou le fichier init.

Capture d'écran du panneau de configuration de BeanShell Sampler
Capture d'écran du panneau de configuration de BeanShell Sampler

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence. Le nom est stocké dans la variable de script Label
Non
Réinitialiser bsh.Interpreter avant chaque appel
Si cette option est sélectionnée, l'interpréteur sera recréé pour chaque échantillon. Cela peut être nécessaire pour certains scripts de longue durée. Pour plus d'informations, consultez Meilleures pratiques - Scripts BeanShell .
Oui
Paramètres
Paramètres à transmettre au script BeanShell. Ceci est destiné à être utilisé avec des fichiers de script ; pour les scripts définis dans l'interface graphique, vous pouvez utiliser toutes les références de variable et de fonction dont vous avez besoin dans le script lui-même. Les paramètres sont stockés dans les variables suivantes :
Paramètres
chaîne contenant les paramètres comme une seule variable
bsh.args
Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script BeanShell à exécuter. Le nom du fichier est stocké dans la variable de script FileName
Non
Scénario
Le script BeanShell à exécuter. La valeur de retour (si elle n'est pas null ) est stockée comme résultat de l'échantillonneur.
Oui (sauf si un fichier de script est fourni)
NB Chaque instance de Sampler a son propre interpréteur BeanShell, et les Samplers ne sont appelés qu'à partir d'un seul thread

Si la propriété " beanshell.sampler.init " est définie, elle est transmise à l'interpréteur en tant que nom d'un fichier sourcé. Cela peut être utilisé pour définir des méthodes et des variables communes. Il existe un exemple de fichier init dans le répertoire bin : BeanShellSampler.bshrc .

Si un fichier de script est fourni, il sera utilisé, sinon le script sera utilisé.

JMeter traite les références de fonction et de variable avant de transmettre le champ de script à l'interpréteur, de sorte que les références ne seront résolues qu'une seule fois. Les références de variables et de fonctions dans les fichiers de script seront transmises textuellement à l'interpréteur, ce qui est susceptible de provoquer une erreur de syntaxe. Afin d'utiliser des variables d'exécution, veuillez utiliser les méthodes props appropriées, par exemple props.get("START.HMS"); props.put("PROP1","1234");
BeanShell ne prend actuellement pas en charge la syntaxe Java 5 telle que les génériques et la boucle for améliorée.

Avant d'invoquer le script, certaines variables sont configurées dans l'interpréteur BeanShell :

Le contenu du champ Paramètres est placé dans la variable « Paramètres ». La chaîne est également divisée en jetons séparés en utilisant un seul espace comme séparateur, et la liste résultante est stockée dans le tableau String bsh.args .

La liste complète des variables BeanShell configurées est la suivante :

  • log - l' enregistreur
  • Étiquette - l'étiquette Sampler
  • FileName - le nom du fichier, le cas échéant
  • Paramètres - texte du champ Paramètres
  • bsh.args - les paramètres, divisés comme décrit ci-dessus
  • SampleResult - pointeur vers le SampleResult actuel
  • ResponseCode par défaut est 200
  • ResponseMessage est par défaut " OK "
  • IsSuccess est vrai par défaut
  • ctx - JMeterContext
  • vars - JMeterVariables - par exemple
    vars.get("VAR1");
    vars.put("VAR2","valeur");
    vars.remove("VAR3");
    vars.putObject("OBJ1",nouvel objet());
  • accessoires - JMeterProperties (classe java.util.Properties ) - par exemple
    props.get("START.HMS");
    props.put("PROP1","1234");

Une fois le script terminé, le contrôle est rendu à Sampler et il copie le contenu des variables de script suivantes dans les variables correspondantes de SampleResult :

  • ResponseCode - par exemple 200
  • ResponseMessage - par exemple " OK "
  • IsSuccess - vrai ou faux

Le SampleResult ResponseData est défini à partir de la valeur de retour du script. Si le script renvoie null, il peut définir la réponse directement, en utilisant la méthode SampleResult.setResponseData(data) , où data est soit une chaîne, soit un tableau d'octets. Le type de données par défaut est " text ", mais peut être défini sur binaire à l'aide de la méthode SampleResult.setDataType(SampleResult.BINARY) .

La variable SampleResult donne au script un accès complet à tous les champs et méthodes de SampleResult . Par exemple, le script a accès aux méthodes setStopThread(boolean) et setStopTest(boolean) . Voici un exemple de script simple (pas très utile !) :

if (bsh.args[0].equalsIgnoreCase("StopThread")) {
    log.info("Arrêter le thread détecté !");
    SampleResult.setStopThread(true);
}
return "Données de l'échantillon avec Label "+Label ;
//ou
SampleResult.setResponseData("Mes données");
renvoie nul ;

Autre exemple :
assurez-vous que la propriété beanshell.sampler.init=BeanShellSampler.bshrc est définie dans jmeter.properties . Le script suivant affichera les valeurs de toutes les variables dans le champ ResponseData :

retourne getVariables();

Pour plus de détails sur les méthodes disponibles pour les différentes classes ( JMeterVariables , SampleResult etc.), veuillez consulter la Javadoc ou le code source. Méfiez-vous cependant que l'utilisation abusive de toute méthode peut entraîner des défauts subtils qui peuvent être difficiles à trouver.

^

Échantillonneur JSR223

L'échantillonneur JSR223 permet d'utiliser le code de script JSR223 pour effectuer un échantillon ou un calcul requis pour créer/mettre à jour des variables.

Si vous ne souhaitez pas générer de SampleResult lors de l'exécution de cet échantillonneur, appelez la méthode suivante :
SampleResult.setIgnore();
Cet appel aura l'impact suivant :
  • SampleResult ne sera pas livré aux SampleListeners comme View Results Tree, Summariser ...
  • SampleResult ne sera pas évalué dans Assertions ni PostProcessors
  • SampleResult sera évalué pour calculer l'état du dernier échantillon (${JMeterThread.last_sample_ok}) et ThreadGroup "Action à entreprendre après une erreur Sampler" (depuis JMeter 5.4)

Les éléments de test JSR223 ont une fonctionnalité (compilation) qui peut augmenter considérablement les performances. Pour bénéficier de cette fonctionnalité :

  • Utilisez des fichiers de script au lieu de les intégrer. Cela obligera JMeter à les compiler si cette fonctionnalité est disponible sur ScriptEngine et à les mettre en cache.
  • Ou utilisez le texte du script et cochez la propriété Script compilé en cache si disponible .
    Lorsque vous utilisez cette fonctionnalité, assurez-vous que votre code de script n'utilise pas de variables JMeter ou d'appels de fonction JMeter directement dans le code de script, car la mise en cache ne mettrait en cache que le premier remplacement. Utilisez plutôt des paramètres de script.
    Pour bénéficier de la mise en cache et de la compilation, le moteur de langage utilisé pour les scripts doit implémenter l' interface compilable JSR223 (Groovy en fait partie, java, beanshell et javascript ne le sont pas)
    Lorsque vous utilisez Groovy comme langage de script et que vous ne cochez pas le script compilé du cache s'il est disponible (alors que la mise en cache est recommandée), vous devez définir cette propriété JVM -Dgroovy.use.classvalue=true en raison d'une fuite de mémoire Groovy à partir de la version 2.4.6, voir :
La taille du cache est contrôlée par la propriété JMeter suivante ( jmeter.properties ) :
jsr223.compiled_scripts_cache_size=100
Contrairement à BeanShell Sampler , l'interpréteur n'est pas enregistré entre les invocations.
Les éléments de test JSR223 utilisant un fichier de script ou un texte de script + un script compilé en cache coché, si disponible , sont maintenant compilés si ScriptEngine prend en charge cette fonctionnalité, ce qui permet d'améliorer considérablement les performances.
Capture d'écran du panneau de commande de l'échantillonneur JSR223
Capture d'écran du panneau de commande de l'échantillonneur JSR223
JMeter traite les références de fonction et de variable avant de transmettre le champ de script à l'interpréteur, de sorte que les références ne seront résolues qu'une seule fois. Les références de variables et de fonctions dans les fichiers de script seront transmises textuellement à l'interpréteur, ce qui est susceptible de provoquer une erreur de syntaxe. Afin d'utiliser des variables d'exécution, veuillez utiliser les méthodes d'accessoires appropriées, par exemple
props.get("START.HMS");
props.put("PROP1","1234");

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Langage de script
Nom du langage de script JSR223 à utiliser.
Il existe d'autres langues prises en charge que celles qui apparaissent dans la liste déroulante. D'autres peuvent être disponibles si le jar approprié est installé dans le répertoire lib de JMeter.
Notez que certains langages tels que Velocity peuvent utiliser une syntaxe différente pour les variables JSR223, par exemple
$log.debug("Bonjour " + $vars.get("a"));
pour la vitesse.
Oui
Fichier de script
Nom d'un fichier à utiliser comme script JSR223, si un chemin de fichier relatif est utilisé, il sera relatif au répertoire référencé par " user.dir " Propriété système
Non
Paramètres
Liste des paramètres à passer au fichier de script ou au script.
Non
Script compilé en cache si disponible
Si coché (conseillé) et que le langage utilisé prend en charge l'interface compilable (Groovy en fait partie, java, beanshell et javascript ne le sont pas), JMeter compilera le script et le mettra en cache en utilisant son hachage MD5 comme clé de cache unique
Non
Scénario
Script à passer au langage JSR223
Oui (sauf si un fichier de script est fourni)

Si un fichier de script est fourni, il sera utilisé, sinon le script sera utilisé.

Avant d'invoquer le script, certaines variables sont configurées. Notez qu'il s'agit de variables JSR223 - c'est-à-dire qu'elles peuvent être utilisées directement dans le script.

  • log - l' enregistreur
  • Étiquette - l'étiquette Sampler
  • FileName - le nom du fichier, le cas échéant
  • Paramètres - texte du champ Paramètres
  • args - les paramètres, divisés comme décrit ci-dessus
  • SampleResult - pointeur vers le SampleResult actuel
  • sampler - ( Sampler ) - pointeur vers l'échantillonneur actuel
  • ctx - JMeterContext
  • vars - JMeterVariables - par exemple
    vars.get("VAR1");
    vars.put("VAR2","valeur");
    vars.remove("VAR3");
    vars.putObject("OBJ1",nouvel objet());
  • accessoires - JMeterProperties (classe java.util.Properties ) - par exemple
    props.get("START.HMS");
    props.put("PROP1","1234");
  • OUT - System.out - par exemple OUT.println("message")

Le SampleResult ResponseData est défini à partir de la valeur de retour du script. Si le script renvoie null , il peut définir la réponse directement, en utilisant la méthode SampleResult.setResponseData(data) , où data est soit une chaîne soit un tableau d'octets. Le type de données par défaut est " text ", mais peut être défini sur binaire à l'aide de la méthode SampleResult.setDataType(SampleResult.BINARY) .

La variable SampleResult donne au script un accès complet à tous les champs et méthodes de SampleResult. Par exemple, le script a accès aux méthodes setStopThread(boolean) et setStopTest(boolean) .

Contrairement à l'échantillonneur BeanShell, l'échantillonneur JSR223 ne définit pas le ResponseCode , le ResponseMessage et l'état de l'échantillon via des variables de script. Actuellement, le seul moyen de les modifier est via les méthodes SampleResult :

  • SampleResult.setSuccessful(true/false)
  • SampleResult.setResponseCode("code")
  • SampleResult.setResponseMessage("message")
^

Échantillonneur TCP

L'échantillonneur TCP ouvre une connexion TCP/IP au serveur spécifié. Il envoie ensuite le texte et attend une réponse.

Si « Réutiliser la connexion » est sélectionné, les connexions sont partagées entre les échantillonneurs dans le même thread, à condition que la même chaîne de nom d'hôte et le même port soient utilisés. Différentes combinaisons hôtes/ports utiliseront différentes connexions, tout comme différents threads. Si " Réutiliser la connexion " et " Fermer la connexion " sont tous les deux sélectionnés, la prise sera fermée après l'exécution de l'échantillonneur. Sur le sampler suivant, un autre socket sera créé. Vous voudrez peut-être fermer un socket à la fin de chaque boucle de thread.

Si une erreur est détectée - ou " Réutiliser la connexion " n'est pas sélectionné - le socket est fermé. Une autre prise sera rouverte sur le prochain échantillon.

Les propriétés suivantes peuvent être utilisées pour contrôler son fonctionnement :

tcp.status.prefix
texte qui précède un numéro d'état
tcp.status.suffix
texte qui suit un numéro d'état
tcp.status.properties
nom du fichier de propriétés pour convertir les codes d'état en messages
tcp.handler
Nom de la classe TCP Handler (par défaut TCPClientImpl ) - utilisé uniquement s'il n'est pas spécifié sur l'interface graphique
La classe qui gère la connexion est définie par l'interface graphique, à défaut la propriété tcp.handler . Si elle n'est pas trouvée, la classe est alors recherchée dans le package org.apache.jmeter.protocol.tcp.sampler .

Les utilisateurs peuvent fournir leur propre implémentation. La classe doit étendre org.apache.jmeter.protocol.tcp.sampler.TCPClient .

Les implémentations suivantes sont actuellement fournies.

  • TCPClientImpl
  • BinaryTCPCClientImpl
  • LengthPrefixedBinaryTCPClientImpl
Les implémentations se comportent comme suit :
TCPClientImpl
Cette implémentation est assez basique. Lors de la lecture de la réponse, il lit jusqu'à l'octet de fin de ligne, si cela est défini en définissant la propriété tcp.eolByte , sinon jusqu'à la fin du flux d'entrée. Vous pouvez contrôler l'encodage du jeu de caractères en définissant tcp.charset , qui sera par défaut l'encodage par défaut de la plate-forme.
BinaryTCPCClientImpl
Cette implémentation convertit l'entrée de l'interface graphique, qui doit être une chaîne codée en hexadécimal, en binaire, et effectue l'inverse lors de la lecture de la réponse. Lors de la lecture de la réponse, il lit jusqu'à la fin de l'octet de message, si cela est défini en définissant la propriété tcp.BinaryTCPClient.eomByte , sinon jusqu'à la fin du flux d'entrée.
LengthPrefixedBinaryTCPClientImpl
Cette implémentation étend BinaryTCPClientImpl en préfixant les données du message binaire avec un octet de longueur binaire. Le préfixe de longueur par défaut est de 2 octets. Cela peut être modifié en définissant la propriété tcp.binarylength.prefix.length .
Gestion du délai d'attente
Si le délai d'attente est défini, la lecture sera terminée à son expiration. Donc, si vous utilisez un eolByte / eomByte , assurez-vous que le délai d'attente est suffisamment long, sinon la lecture sera terminée plus tôt.
Gestion des réponses
Si tcp.status.prefix est défini, le message de réponse est recherché pour le texte suivant jusqu'au suffixe. Si un tel texte est trouvé, il est utilisé pour définir le code de réponse. Le message de réponse est ensuite extrait du fichier de propriétés (s'il est fourni).
Utilisation du pré- et du suffixe
Par exemple, si le préfixe = " [ " et le suffixe = " ] ", alors la réponse suivante :
[J28] XI123,23,GBP,CR
aurait le code de réponse J28 .
Les codes de réponse dans la plage " 400 "-" 499 " et " 500 "-" 599 " sont actuellement considérés comme des échecs ; tous les autres réussissent. [Cela doit être rendu configurable !]
Le nom de connexion/mot de passe ne sont pas utilisés par les implémentations TCP fournies.

Les prises sont déconnectées à la fin d'un test.
Capture d'écran du panneau de configuration de l'échantillonneur TCP
Capture d'écran du panneau de configuration de l'échantillonneur TCP

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Nom de classe TCPClient
Nom de la classe TCPClient. La valeur par défaut est la propriété tcp.handler , à défaut TCPClientImpl .
Non
Nom du serveur ou IP
Nom ou IP du serveur TCP
Oui
Numéro de port
Port à utiliser
Oui
Réutiliser la connexion
Si cette option est sélectionnée, la connexion est maintenue ouverte. Sinon, il est fermé lorsque les données ont été lues.
Oui
Fermer la connexion
Si cette option est sélectionnée, la connexion sera fermée après l'exécution de l'échantillonneur.
Oui
SO_LINGER
Activer/désactiver SO_LINGER avec le temps d'attente spécifié en secondes lorsqu'un socket est créé. Si vous définissez la valeur " SO_LINGER " sur 0 , vous pouvez empêcher un grand nombre de sockets de rester avec un statut TIME_WAIT .
Non
Valeur d'octet de fin de ligne (EOL)
Valeur d'octet pour la fin de ligne, définissez-la sur une valeur en dehors de la plage -128 à +127 pour ignorer la vérification EOL . Vous pouvez également le définir dans le fichier jmeter.properties avec la propriété eolByte . Si vous définissez ceci dans TCP Sampler Config et dans le fichier jmeter.properties en même temps, la valeur de réglage dans TCP Sampler Config sera utilisée.
Non
Délai de connexion
Connect Timeout (millisecondes, 0 désactive).
Non
Délai de réponse
Délai de réponse (millisecondes, 0 désactive).
Non
Définir aucun délai
Voir java.net.Socket.setTcpNoDelay() . Si sélectionné, cela désactivera l'algorithme de Nagle, sinon l'algorithme de Nagle sera utilisé.
Oui
Texte à envoyer
Texte à envoyer
Oui
Utilisateur de connexion
Nom d'utilisateur - non utilisé par l'implémentation par défaut
Non
Mot de passe
Mot de passe - non utilisé par l'implémentation par défaut (NB, il est stocké non chiffré dans le plan de test)
Non
^

Éditeur JMS

JMS Publisher publiera les messages vers une destination donnée (sujet/file d'attente). Pour ceux qui ne connaissent pas JMS, il s'agit de la spécification J2EE pour la messagerie. Il existe de nombreux serveurs JMS sur le marché et plusieurs options open source.


JMeter n'inclut aucun jar d'implémentation JMS ; ceci doit être téléchargé depuis le fournisseur JMS et placé dans le répertoire lib
Capture d'écran du panneau de configuration de JMS Publisher
Capture d'écran du panneau de configuration de JMS Publisher

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
utiliser le fichier de propriétés JNDI
utilisez jndi.properties . Notez que le fichier doit être sur le classpath - par exemple en mettant à jour la propriété user.classpath JMeter. Si cette option n'est pas sélectionnée, JMeter utilise les champs " JNDI Initial Context Factory " et " Provider URL " pour créer la connexion.
Oui
Usine de contexte initial JNDI
Nom de la fabrique de contexte
Non
URL du fournisseur
L'URL du fournisseur JMS
Oui, sauf si vous utilisez jndi.properties
Destination
La destination du message (nom du sujet ou de la file d'attente)
Oui
Installer
Le type de configuration de destination. Avec Au démarrage , le nom de la destination est statique (c'est-à-dire toujours le même nom pendant le test), avec Chaque échantillon , le nom de la destination est dynamique et est évalué à chaque échantillon (c'est-à-dire que le nom de la destination peut être une variable)
Oui
Authentification
Exigence d'authentification pour le fournisseur JMS
Oui
Utilisateur
Nom d'utilisateur
Non
Mot de passe
Mot de passe (NB celui-ci est stocké non crypté dans le plan de test)
Non
Expiration
Le délai d'expiration (en millisecondes) du message avant qu'il ne devienne obsolète. Si vous ne spécifiez pas de délai d'expiration, la valeur par défaut est 0 (n'expire jamais).
Non
Priorité
Le niveau de priorité du message. Il existe dix niveaux de priorité allant de 0 (le plus bas) à 9 (le plus élevé). Si vous ne spécifiez pas de niveau de priorité, le niveau par défaut est 4 .
Non
Reconnectez-vous sur les codes d'erreur (regex)
Expression régulière pour les codes d'erreur JMSException qui forcent la reconnexion. Si vide aucune reconnexion ne sera effectuée
Non
Nombre d'échantillons à agréger
Nombre d'échantillons à agréger
Oui
Origine des messages
Où obtenir le message :
À partir du fichier
signifie que le fichier référencé sera lu et réutilisé par tous les échantillons. Si le nom du fichier change, il est rechargé depuis JMeter 3.0
Fichier aléatoire du dossier spécifié ci-dessous
signifie qu'un fichier aléatoire sera sélectionné dans le dossier spécifié ci-dessous, ce dossier doit contenir soit des fichiers avec l'extension .dat pour les messages Bytes, soit des fichiers avec l'extension .txt ou .obj pour les messages Object ou Text
Zone de texte
Le message à utiliser pour le message texte ou objet
Oui
Type de message
Texte, carte, message d'objet ou message d'octets
Oui
Encodage du contenu
Spécifiez l'encodage pour lire le fichier source du message :
BRUT :
Pas de prise en charge des variables à partir du fichier et chargez-le avec le jeu de caractères système par défaut.
PAR DÉFAUT :
Charger le fichier avec l'encodage système par défaut, à l'exception de XML qui repose sur le prologue XML. Si le fichier contient des variables, elles seront traitées.
Jeux de caractères standard :
L'encodage spécifié (valide ou non) est utilisé pour la lecture du fichier et le traitement des variables
Oui
Utiliser le mode de diffusion non persistant ?
S'il faut définir DeliveryMode.NON_PERSISTENT (valeur par défaut à false )
Non
Propriétés JMS
Les propriétés JMS sont des propriétés spécifiques au système de messagerie sous-jacent. Vous pouvez configurer le nom, la valeur et la classe (type) de valeur. Le type par défaut est String . Par exemple : pour les services Web WebSphere 5.1, vous devrez définir la propriété JMS targetService pour tester les services Web via JMS.
Non

Pour le type MapMessage, JMeter lit la source sous forme de lignes de texte. Chaque ligne doit comporter 3 champs, délimités par des virgules. Les champs sont :

  • Nom de l'entrée
  • Nom de classe d'objet, par exemple " String " (suppose le package java.lang s'il n'est pas spécifié)
  • Valeur de chaîne d'objet
valueOf(String)
nom, chaîne, exemple
taille,Entier,1234
Le message d'objet est implémenté et fonctionne comme suit :
  • Mettez le JAR qui contient votre objet et ses dépendances dans le dossier jmeter_home/lib/
  • Sérialisez votre objet en XML à l'aide de XStream
  • Mettez le résultat dans un fichier suffixé par .txt ou .obj ou placez le contenu XML directement dans la zone de texte
Notez que si le message est dans un fichier, le remplacement des propriétés ne se produira pas alors qu'il le fera si vous utilisez la zone de texte.

Le tableau suivant montre quelques valeurs qui peuvent être utiles lors de la configuration de JMS :

Apache ActiveMQ Valeurs) Commentaire
Usine de contexteorg.apache.activemq.jndi.ActiveMQInitialContextFactory.
URL du fournisseurvm://localhost
URL du fournisseurmachine virtuelle :(broker :(vm://localhost)?persistent=false)Désactiver la persistance
Référence de file d'attentefiles d'attente dynamiques/NOM DE LA FILE Définir dynamiquement le QUEUENAME à JNDI
Référence de rubriqueSujets dynamiques/NOM DU SUJET Définir dynamiquement le TOPICNAME à JNDI
^

Abonné JMS

L'abonné JMS s'abonnera aux messages d'une destination donnée (sujet ou file d'attente). Pour ceux qui ne connaissent pas JMS, il s'agit de la spécification J2EE pour la messagerie. Il existe de nombreux serveurs JMS sur le marché et plusieurs options open source.


JMeter n'inclut aucun jar d'implémentation JMS ; ceci doit être téléchargé depuis le fournisseur JMS et placé dans le répertoire lib
Capture d'écran du panneau de configuration de l'abonné JMS
Capture d'écran du panneau de configuration de l'abonné JMS

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
utiliser le fichier de propriétés JNDI
utilisez jndi.properties . Notez que le fichier doit être sur le classpath - par exemple en mettant à jour la propriété user.classpath JMeter. Si cette option n'est pas sélectionnée, JMeter utilise les champs " JNDI Initial Context Factory " et " Provider URL " pour créer la connexion.
Oui
Usine de contexte initial JNDI
Nom de la fabrique de contexte
Non
URL du fournisseur
L'URL du fournisseur JMS
Non
Destination
la destination du message (nom du sujet ou de la file d'attente)
Oui
ID d'abonnement durable
ID à utiliser pour un abonnement durable. Lors de la première utilisation, la file d'attente correspondante sera automatiquement générée par le fournisseur JMS si elle n'existe pas encore.
Non
identité du client
ID client à utiliser lorsque vous utilisez un abonnement durable. Assurez-vous d'ajouter une variable comme ${__threadNum} lorsque vous avez plus d'un Thread.
Non
Sélecteur JMS
Sélecteur de message tel que défini par la spécification JMS pour extraire uniquement les messages qui respectent la condition du sélecteur. La syntaxe utilise une sous-partie de SQL 92.
Non
Installer
Le type de configuration de destination. Avec Au démarrage , le nom de la destination est statique (c'est-à-dire toujours le même nom pendant le test), avec Chaque échantillon , le nom de la destination est dynamique et est évalué à chaque échantillon (c'est-à-dire que le nom de la destination peut être une variable)
Oui
Authentification
Exigence d'authentification pour le fournisseur JMS
Oui
Utilisateur
Nom d'utilisateur
Non
Mot de passe
Mot de passe (NB celui-ci est stocké non crypté dans le plan de test)
Non
Nombre d'échantillons à agréger
nombre d'échantillons à agréger
Oui
Enregistrer la réponse
si l'échantillonneur stocke la réponse. Sinon, seule la longueur de la réponse est renvoyée.
Oui
Temps libre
Spécifiez le délai d'attente à appliquer, en millisecondes. 0 = aucun. Il s'agit du délai d'expiration global global, et non par échantillon.
Oui
Client
Quelle implémentation client utiliser. Les deux créent des connexions qui peuvent lire les messages. Cependant, ils utilisent une stratégie différente, comme décrit ci-dessous :
MessageConsumer.receive()
appelle receive() pour chaque message demandé. Conserve la connexion entre les échantillons, mais ne récupère pas les messages à moins que l'échantillonneur ne soit actif. Ceci est mieux adapté aux abonnements à la file d'attente.
MessageListener.onMessage()
établit un écouteur qui stocke tous les messages entrants dans une file d'attente. L'écouteur reste actif une fois l'échantillonneur terminé. Ceci est mieux adapté aux abonnements Topic.
Oui
Arrêt entre échantillons ?
Si sélectionné, alors JMeter appelle Connection.stop() à la fin de chaque échantillon (et appelle start() avant chaque échantillon). Cela peut être utile dans certains cas où plusieurs échantillons/threads ont des connexions à la même file d'attente. S'il n'est pas sélectionné, JMeter appelle Connection.start() au début du thread et n'appelle pas stop() jusqu'à la fin du thread.
Oui
Séparateur
Séparateur utilisé pour séparer les messages lorsqu'il y en a plusieurs (lié au paramètre Nombre d'échantillons à agréger). Notez que \n , \r , \t sont acceptés.
Non
Reconnectez-vous sur les codes d'erreur (regex)
Expression régulière pour les codes d'erreur JMSException qui forcent la reconnexion. Si vide aucune reconnexion ne sera effectuée
Non
Pause entre les erreurs (ms)
Pause en millisecondes que l'abonné fera lorsqu'une erreur se produit
Non
^

Point à point JMS

Cet échantillonneur envoie et reçoit éventuellement des messages JMS via des connexions point à point (files d'attente). Il est différent des messages pub/sub et est généralement utilisé pour gérer les transactions.

request_only sera généralement utilisé pour charger un système JMS.
request_reply sera utilisé lorsque vous souhaitez tester le temps de réponse d'un service JMS qui traite les messages envoyés à la file d'attente des demandes car ce mode attendra la réponse sur la file d'attente des réponses envoyée par ce service.
parcourir renvoie la profondeur actuelle de la file d'attente, c'est-à-dire le nombre de messages dans la file d'attente.
read lit un message de la file d'attente (le cas échéant).
clear vide la file d'attente, c'est-à-dire supprime tous les messages de la file d'attente.

JMeter utilise les propriétés java.naming.security.[principal|credentials] - si elles sont présentes - lors de la création de la connexion à la file d'attente. Si ce comportement n'est pas souhaité, définissez la propriété JMeter JMSSampler.useSecurity.properties=false


JMeter n'inclut aucun jar d'implémentation JMS ; ceci doit être téléchargé depuis le fournisseur JMS et placé dans le répertoire lib
Capture d'écran du panneau de configuration de JMS point à point
Capture d'écran du panneau de configuration de JMS point à point

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
QueueConnection Factory
Nom JNDI de la fabrique de connexions de file d'attente à utiliser pour se connecter au système de messagerie.
Oui
File d'attente de demande de nom JNDI
Il s'agit du nom JNDI de la file d'attente à laquelle les messages sont envoyés.
Oui
File d'attente de réponse de nom JNDI
Le nom JNDI de la file d'attente de réception. Si une valeur est fournie ici et que le style de communication est Demande de réponse , cette file d'attente sera surveillée pour les réponses aux demandes envoyées.
Non
Nombre d'échantillons à agréger
Nombre d'échantillons à agréger. Uniquement applicable pour le style de communication Lecture.
Oui
Sélecteur JMS
Sélecteur de message tel que défini par la spécification JMS pour extraire uniquement les messages qui respectent la condition du sélecteur. La syntaxe utilise une sous-partie de SQL 92.
Non
Style de communication
Le style de communication peut être Request Only (également appelé Fire and Forget), Request Response , Read , Browse , Clear :
Demande uniquement
n'enverra que des messages et ne surveillera pas les réponses. En tant que tel, il peut être utilisé pour charger un système.
Demande de réponse
enverra des messages et surveillera les réponses qu'il reçoit. Le comportement dépend de la valeur de la file d'attente de réponse de nom JNDI. Si JNDI Name Reply Queue a une valeur, cette file d'attente est utilisée pour surveiller les résultats. La correspondance de la demande et de la réponse est effectuée avec l'ID de message de la demande et l'ID de corrélation de la réponse. Si la file d'attente de réponse de nom JNDI est vide, des files d'attente temporaires seront utilisées pour la communication entre le demandeur et le serveur. Ceci est très différent de la file d'attente de réponse fixe. Avec les files d'attente temporaires, le thread d'envoi sera bloqué jusqu'à ce que le message de réponse ait été reçu. Avec le mode Request Response , vous devez disposer d'un serveur qui écoute les messages envoyés à Request Queue et envoie des réponses à la file d'attente référencée par message.getJMSReplyTo() .
Lis
lira un message d'une file d'attente sortante qui n'a aucun écouteur attaché. Cela peut être pratique à des fins de test. Cette méthode peut être utilisée si vous avez besoin de gérer des files d'attente sans fichier de liaison (au cas où la bibliothèque jmeter-jms-skip-jndi est utilisée), qui ne fonctionne qu'avec l'échantillonneur JMS Point-to-Point. Dans le cas où des fichiers de liaison sont utilisés, on peut également utiliser l'échantillonneur d'abonnés JMS pour lire à partir d'une file d'attente.
Parcourir
déterminera la profondeur actuelle de la file d'attente sans supprimer les messages de la file d'attente, renvoyant le nombre de messages dans la file d'attente.
Dégager
effacera la file d'attente, c'est-à-dire supprimera tous les messages de la file d'attente.
Oui
Utiliser des champs alternatifs pour la corrélation des messages
Ces cases à cocher sélectionnent les champs qui seront utilisés pour faire correspondre le message de réponse avec la demande d'origine.
Utiliser l'identifiant du message de demande
si sélectionné, la requête JMSMessageID sera utilisée, sinon la requête JMSCorrelationID sera utilisée. Dans ce dernier cas, l'identifiant de corrélation doit être spécifié dans la requête.
Utiliser l'identifiant du message de réponse
si sélectionné, la réponse JMSMessageID sera utilisée, sinon la réponse JMSCorrelationID sera utilisée.
Il existe deux modèles de corrélation JMS fréquemment utilisés :
Modèle d'ID de corrélation JMS
c'est-à-dire faire correspondre la demande et la réponse sur leurs identifiants de corrélation => décochez les deux cases et fournissez un identifiant de corrélation.
Modèle d'ID de message JMS
c'est-à-dire faire correspondre l'identifiant du message de requête avec l'identifiant de corrélation de réponse => sélectionnez "Utiliser l'identifiant de message de requête" uniquement.
Dans les deux cas, l'application JMS est responsable du remplissage de l'ID de corrélation si nécessaire.
si la même file d'attente est utilisée pour envoyer et recevoir des messages, le message de réponse sera le même que le message de requête. Dans ce cas, fournissez un identifiant de corrélation et décochez les deux cases ; ou cochez les deux cases pour utiliser l'ID de message pour la corrélation. Cela peut être utile pour vérifier le débit JMS brut.
Oui
Temps libre
Délai d'attente en millisecondes pour les messages de réponse. Si une réponse n'a pas été reçue dans le délai spécifié, le cas de test spécifique échoue et le message de réponse spécifique reçu après l'expiration du délai est rejeté. La valeur par défaut est 2000 ms. 0 signifie pas de délai d'attente.
Oui
Expiration
Le délai d'expiration (en millisecondes) du message avant qu'il ne devienne obsolète. Si vous ne spécifiez pas de délai d'expiration, la valeur par défaut est 0 (n'expire jamais).
Non
Priorité
Le niveau de priorité du message. Il existe dix niveaux de priorité allant de 0 (le plus bas) à 9 (le plus élevé). Si vous ne spécifiez pas de niveau de priorité, le niveau par défaut est 4 .
Non
Utiliser le mode de diffusion non persistant ?
S'il faut définir DeliveryMode.NON_PERSISTENT .
Oui
Contenu
Le contenu du message.
Non
Propriétés JMS
Les propriétés JMS sont des propriétés spécifiques au système de messagerie sous-jacent. Vous pouvez configurer le nom, la valeur et la classe (type) de valeur. Le type par défaut est String . Par exemple : pour les services Web WebSphere 5.1, vous devrez définir la propriété JMS targetService pour tester les services Web via JMS.
Non
Usine de contexte initial
La fabrique de contexte initial est la fabrique à utiliser pour rechercher les ressources JMS.
Non
Propriétés JNDI
Les propriétés JNDI sont les propriétés spécifiques de l'implémentation JNDI sous-jacente.
Non
URL du fournisseur
URL du fournisseur JMS.
Non
^

Requête JUnit

L'implémentation actuelle prend en charge la convention et les extensions JUnit standard. Il comprend également des extensions comme oneTimeSetUp et oneTimeTearDown . L'échantillonneur fonctionne comme la requête Java avec quelques différences.
  • plutôt que d'utiliser l'interface de test de JMeter, il analyse les fichiers jar pour les classes étendant la classe TestCase de JUnit . Cela inclut toute classe ou sous-classe.
  • Les fichiers jar de test JUnit doivent être placés dans jmeter/lib/junit au lieu du répertoire /lib . Vous pouvez également utiliser la propriété " user.classpath " pour spécifier où chercher les classes TestCase .
  • L'échantillonneur JUnit n'utilise pas de paires nom/valeur pour la configuration comme Java Request . L'échantillonneur suppose que setUp et tearDown configureront le test correctement.
  • L'échantillonneur mesure le temps écoulé uniquement pour la méthode de test et n'inclut pas setUp et tearDown .
  • Chaque fois que la méthode de test est appelée, JMeter transmettra le résultat aux écouteurs.
  • La prise en charge de oneTimeSetUp et oneTimeTearDown se fait en tant que méthode. Étant donné que JMeter est multi-thread, nous ne pouvons pas appeler oneTimeSetUp / oneTimeTearDown de la même manière que Maven le fait.
  • L'échantillonneur signale les exceptions inattendues comme des erreurs. Il existe des différences importantes entre les exécuteurs de test JUnit standard et l'implémentation de JMeter. Plutôt que de créer une nouvelle instance de la classe pour chaque test, JMeter crée 1 instance par échantillonneur et la réutilise. Cela peut être changé avec la case à cocher " Créer une nouvelle instance par échantillon ".
L'implémentation actuelle de l'échantillonneur essaiera d'abord de créer une instance en utilisant le constructeur de chaîne. Si la classe de test ne déclare pas de constructeur de chaîne, l'échantillonneur recherchera un constructeur vide. Exemple ci-dessous :
Constructeurs JUnit
Constructeur vide :
public class myTestCase {
  public myTestCase() {}
}
Constructeur de chaînes :
public class myTestCase {
  public myTestCase(String text) {
    super(texte);
  }
}
Par défaut, JMeter fournira des valeurs par défaut pour le code de réussite/échec et le message. Les utilisateurs doivent définir un ensemble de codes de réussite et d'échec uniques et les utiliser uniformément dans tous les tests.

Conditions générales d'Utilisation

Si vous utilisez setUp et tearDown , assurez-vous que les méthodes sont déclarées publiques. Si vous ne le faites pas, le test risque de ne pas s'exécuter correctement.
Voici quelques directives générales pour écrire des tests JUnit afin qu'ils fonctionnent bien avec JMeter. Étant donné que JMeter fonctionne en multithread, il est important de garder certaines choses à l'esprit.
  • Écrivez les méthodes setUp et tearDown afin qu'elles soient thread-safe. Cela signifie généralement éviter d'utiliser des membres statiques.
  • Faites en sorte que les méthodes de test soient des unités de travail discrètes et non de longues séquences d'actions. En gardant la méthode de test à une opération discrète, il est plus facile de combiner des méthodes de test pour créer de nouveaux plans de test.
  • Évitez de faire dépendre les méthodes de test les unes des autres. Étant donné que JMeter permet le séquençage arbitraire des méthodes de test, le comportement d'exécution est différent du comportement par défaut de JUnit.
  • Si une méthode de test est configurable, faites attention à l'endroit où les propriétés sont stockées. Il est recommandé de lire les propriétés du fichier Jar.
  • Chaque échantillonneur crée une instance de la classe de test, alors écrivez votre test pour que la configuration se fasse dans oneTimeSetUp et oneTimeTearDown .
Capture d'écran du panneau de configuration de JUnit Request
Capture d'écran du panneau de configuration de JUnit Request

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Rechercher des annotations JUnit4
Sélectionnez cette option pour rechercher des tests JUnit4 (annotations @Test )
Oui
Filtre de paquet
Liste séparée par des virgules des packages à afficher. Exemple, org.apache.jmeter , junit.framework .
Nom du cours
Nom qualifié complet de la classe de test JUnit.
Oui
Chaîne de constructeur
Passage de chaîne au constructeur de chaîne. Si une chaîne est définie, l'échantillonneur utilisera le constructeur de chaîne au lieu du constructeur vide.
Méthode d'essai
La méthode à tester.
Oui
Message de réussite
Un message descriptif indiquant ce que signifie le succès.
Code de réussite
Un code unique indiquant que le test a réussi.
Message d'échec
Un message descriptif indiquant ce que signifie un échec.
Code d'échec
Un code unique indiquant que le test a échoué.
Message d'erreur
Une description des erreurs.
Code d'erreur
Quelques codes pour les erreurs. N'a pas besoin d'être unique.
Ne pas appeler setUp et tearDown
Définissez l'échantillonneur pour qu'il n'appelle pas setUp et tearDown . Par défaut, setUp et tearDown doivent être appelés. Ne pas appeler ces méthodes pourrait affecter le test et le rendre inexact. Cette option ne doit être utilisée qu'avec l'appel de oneTimeSetUp et oneTimeTearDown . Si la méthode sélectionnée est oneTimeSetUp ou oneTimeTearDown , cette option doit être cochée.
Oui
Ajouter des erreurs d'assertion
S'il faut ou non ajouter les erreurs d'assertion au message de réponse.
Oui
Ajouter des exceptions d'exécution
S'il faut ou non ajouter des exceptions d'exécution au message de réponse. Ne s'applique que si " Ajouter les erreurs d'assertion " n'est pas sélectionné.
Oui
Créer une nouvelle instance par échantillon
Créer ou non une nouvelle instance JUnit pour chaque échantillon. La valeur par défaut est false, ce qui signifie que JUnit TestCase est créé et réutilisé.
Oui

Les annotations JUnit4 suivantes sont reconnues :

@Test
utilisé pour trouver des méthodes de test et des classes. Les attributs " attendu " et " timeout " sont supportés.
@Avant de
traité de la même manière que setUp() dans JUnit3
@Après
traité de la même manière que tearDown() dans JUnit3
@AvantClasse , @AprèsClasse
traités comme des méthodes de test afin qu'ils puissent être exécutés indépendamment selon les besoins
Notez que JMeter exécute actuellement les méthodes de test directement, plutôt que de le laisser à JUnit. Cela permet d' exclure les méthodes setUp / tearDown du temps d'échantillonnage. Par conséquent, le temps d'échantillonnage exclut le temps nécessaire pour appeler les méthodes setUp / tearDown et leurs alternatives basées sur les annotations.
^

Échantillonneur de lecteur de courrier

L'échantillonneur de lecteur de courrier peut lire (et éventuellement supprimer) des messages électroniques à l'aide des protocoles POP3(S) ou IMAP(S).

Capture d'écran du panneau de configuration de Mail Reader Sampler
Capture d'écran du panneau de configuration de Mail Reader Sampler

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Type de serveur
Le protocole utilisé par le fournisseur : par exemple pop3 , pop3s , imap , imaps . ou une autre chaîne représentant le protocole du serveur. Par exemple , fichier à utiliser avec le fournisseur de fichiers de messagerie en lecture seule. Les noms de fournisseur réels pour POP3 et IMAP sont pop3 et imap
Oui
Serveur
Nom d'hôte ou adresse IP du serveur. Voir ci-dessous pour une utilisation avec le protocole de fichier .
Oui
Port
Port à utiliser pour se connecter au serveur (optionnel)
Non
Nom d'utilisateur
Nom de connexion de l'utilisateur
Mot de passe
Mot de passe de connexion de l'utilisateur (NB, il est stocké en clair dans le plan de test)
Dossier
Le dossier IMAP(S) à utiliser. Voir ci-dessous pour une utilisation avec le protocole de fichier .
Oui, si vous utilisez IMAP(S)
Nombre de messages à récupérer
Réglez ceci pour récupérer tout ou partie des messages
Oui
Ne récupérer que les en-têtes
Si cette option est sélectionnée, seuls les en-têtes de message seront récupérés.
Oui
Supprimer les messages du serveur
Si défini, les messages seront supprimés après récupération
Oui
Stocker le message à l'aide de MIME
Indique s'il faut stocker le message au format MIME. Si c'est le cas, alors le message brut entier est stocké dans les données de réponse ; les en-têtes ne sont pas stockés car ils sont disponibles dans les données. Sinon, les en-têtes de message sont stockés en tant qu'en-têtes de réponse. Quelques en-têtes sont stockés ( Date , To , From , Subject ) dans le corps.
Oui
N'utilisez aucune fonction de sécurité
Indique que la connexion au serveur n'utilise aucun protocole de sécurité.
Utiliser SSL
Indique que la connexion au serveur doit utiliser le protocole SSL.
Utiliser StartTLS
Indique que la connexion au serveur doit tenter de démarrer le protocole TLS.
Appliquer StartTLS
Si le serveur ne démarre pas le protocole TLS, la connexion sera interrompue.
Faire confiance à tous les certificats
Lorsqu'il est sélectionné, il acceptera tous les certificats indépendants de l'autorité de certification.
Utiliser le truststore local
Lorsqu'il est sélectionné, il n'acceptera que les certificats approuvés localement.
Truststore local
Chemin d'accès au fichier contenant les certificats de confiance. Les chemins relatifs sont résolus par rapport au répertoire courant.
A défaut, contre le répertoire contenant le script de test (fichier JMX).
Vous pouvez transmettre les propriétés d'environnement liées à la messagerie en ajoutant à user.properties l'une des propriétés décrites ici .

Les messages sont stockés en tant que sous-échantillons de l'échantillonneur principal. Les parties de message en plusieurs parties sont stockées en tant que sous-échantillons du message.

Traitement spécial pour le protocole " file
" : Le fournisseur de fichiers JavaMail peut être utilisé pour lire des messages bruts à partir de fichiers. Le champ serveur est utilisé pour spécifier le chemin d'accès au parent du dossier . Les fichiers de messages individuels doivent être stockés avec le nom n.msg , où n est le numéro du message. Alternativement, le champ du serveur peut être le nom d'un fichier qui contient un seul message. L'implémentation actuelle est assez basique et est principalement destinée à des fins de débogage.

^

Action de contrôle de flux (auparavant : Action de test )

L'échantillonneur Flow Control Action est un échantillonneur destiné à être utilisé dans un contrôleur conditionnel. Plutôt que de générer un échantillon, l'élément de test met en pause ou arrête la cible sélectionnée.

Cet échantillonneur peut également être utile en conjonction avec le contrôleur de transaction, car il permet d'inclure des pauses sans avoir besoin de générer un échantillon. Pour les retards variables, réglez le temps de pause sur zéro et ajoutez un minuteur en tant qu'enfant.

L'action " Arrêter " arrête le thread ou le test après avoir terminé tous les échantillons en cours. L'action « Arrêter maintenant » arrête le test sans attendre que les échantillons soient terminés ; cela interrompra tous les échantillons actifs. Si certains threads ne s'arrêtent pas dans le délai de 5 secondes, un message s'affichera en mode GUI. Vous pouvez essayer d'utiliser la commande Stop pour voir si cela arrêtera les threads, mais si ce n'est pas le cas, vous devez quitter JMeter. En mode CLI, JMeter se fermera si certains threads ne s'arrêtent pas dans le délai de 5 secondes.

Le temps d'attente peut être modifié à l'aide de la propriété JMeter jmeterengine.threadstop.wait . Le temps est donné en millisecondes.

Capture d'écran du panneau de configuration de l'action de contrôle de flux
Capture d'écran du panneau de configuration de l'action de contrôle de flux

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Cible
Thread actuel / Tous les threads (ignoré pour Pause et Go to next loop iteration )
Oui
Action
Pause / Arrêter / Arrêter maintenant / Aller à la prochaine itération de la boucle
Oui
Durée
Combien de temps mettre en pause (millisecondes)
Oui, si Pause est sélectionné
^

Échantillonneur SMTP

L'échantillonneur SMTP peut envoyer des messages électroniques à l'aide du protocole SMTP/SMTPS. Il est possible de définir des protocoles de sécurité pour la connexion (SSL et TLS), ainsi que l'authentification des utilisateurs. Si un protocole de sécurité est utilisé, une vérification sur le certificat du serveur aura lieu.
Deux alternatives pour gérer cette vérification sont disponibles :

Faire confiance à tous les certificats
Cela ignorera la vérification de la chaîne de certificats
Utiliser un truststore local
Avec cette option, la chaîne de certificats sera validée par rapport au fichier truststore local.
Capture d'écran du panneau de configuration de l'échantillonneur SMTP
Capture d'écran du panneau de configuration de l'échantillonneur SMTP

Paramètres

Attribut
La description
Obligatoire
Serveur
Nom d'hôte ou adresse IP du serveur. Voir ci-dessous pour une utilisation avec le protocole de fichier .
Oui
Port
Port à utiliser pour se connecter au serveur. Les valeurs par défaut sont : SMTP=25, SSL=465, StartTLS=587
Non
Délai de connection dépassé
Valeur du délai d'expiration de la connexion en millisecondes (au niveau du socket). La valeur par défaut est un délai d'attente infini.
Non
Délai de lecture
Lire la valeur du délai d'attente en millisecondes (niveau socket). La valeur par défaut est un délai d'attente infini.
Non
Adresse de
L'adresse d'expédition qui apparaîtra dans l'e-mail
Oui
Adressé à
L'adresse e-mail de destination (plusieurs valeurs séparées par " ; ")
Oui, sauf si CC ou BCC est spécifié
Adresse à CC
Adresse e-mail des destinations en copie carbone (plusieurs valeurs séparées par " ; ")
Non
Adresse à BCC
Adresse e-mail des destinations en copie carbone invisible (plusieurs valeurs séparées par " ; ")
Non
Répondre à l'adresse
Adresse de réponse alternative (plusieurs valeurs séparées par " ; ")
Non
Utiliser l'authentification
Indique si le serveur SMTP requiert une authentification de l'utilisateur
Nom d'utilisateur
Nom de connexion de l'utilisateur
Mot de passe
Mot de passe de connexion de l'utilisateur (NB, il est stocké en clair dans le plan de test)
N'utilisez aucune fonction de sécurité
Indique que la connexion au serveur SMTP n'utilise aucun protocole de sécurité.
Utiliser SSL
Indique que la connexion au serveur SMTP doit utiliser le protocole SSL.
Utiliser StartTLS
Indique que la connexion au serveur SMTP doit tenter de démarrer le protocole TLS.
Appliquer StartTLS
Si le serveur ne démarre pas le protocole TLS, la connexion sera interrompue.
Faire confiance à tous les certificats
Lorsqu'il est sélectionné, il acceptera tous les certificats indépendants de l'autorité de certification.
Utiliser le truststore local
Lorsqu'il est sélectionné, il n'acceptera que les certificats approuvés localement.
Truststore local
Chemin d'accès au fichier contenant les certificats de confiance. Les chemins relatifs sont résolus par rapport au répertoire courant.
A défaut, contre le répertoire contenant le script de test (fichier JMX).
Remplacer les protocoles système SSL/TLS
Spécifiez un protocole SSL/TLS personnalisé en tant que liste séparée par des espaces à utiliser dans l'exemple de prise de contact TLSv1 TLSv1.1 TLSv1.2 . Par défaut, tous les protocoles pris en charge.
Non
Matière
L'objet du message électronique.
Supprimer l'en-tête du sujet
S'il est sélectionné, l'en-tête « Objet : » est omis du courrier envoyé. Ceci est différent de l'envoi d'un en-tête " Objet : " vide, bien que certains clients de messagerie puissent l'afficher de manière identique.
Inclure l'horodatage dans le sujet
Inclut le System.currentTimemillis() dans la ligne d'objet.
Ajouter un en-tête
Des en-têtes supplémentaires peuvent être définis à l'aide de ce bouton.
Non
Message
Le corps du message.
Envoyer un corps brut (c'est-à-dire pas en plusieurs parties/mixte)
Si cette option est sélectionnée, envoyez le corps sous forme de message clair, c'est-à-dire non multipart/mixed , si possible. Si le corps du message est vide et qu'il n'y a qu'un seul fichier, envoyez le contenu du fichier comme corps du message.
Remarque : Si le corps du message n'est pas vide et qu'il y a au moins un fichier joint, le corps est envoyé en tant que multipart/mixed .
Non
Joindre des fichiers
Fichiers à joindre au message.
Envoyer .eml
S'il est défini, le fichier .eml sera envoyé à la place des entrées dans les champs Objet , Message et Fichier(s) joint(s)
Calculer la taille des messages
Calcule la taille du message et la stocke dans l'exemple de résultat.
Activer la journalisation de débogage ?
Si elle est définie, alors la propriété " mail.debug " est définie sur " true "
^

Échantillonneur de processus de système d'exploitation

L'échantillonneur de processus du système d'exploitation est un échantillonneur qui peut être utilisé pour exécuter des commandes sur la machine locale.
Il devrait permettre l'exécution de toute commande pouvant être exécutée à partir de la ligne de commande.
La validation du code de retour peut être activée et le code de retour attendu peut être spécifié.

Notez que les shells du système d'exploitation fournissent généralement une analyse de ligne de commande. Cela varie d'un système d'exploitation à l'autre, mais généralement, le shell divisera les paramètres sur l'espace blanc. Certains shells étendent les noms de fichiers génériques ; certains ne le font pas. Le mécanisme de citation varie également entre les systèmes d'exploitation. L'échantillonneur ne fait délibérément aucune analyse ou gestion des citations. La commande et ses paramètres doivent être fournis sous la forme attendue par l'exécutable. Cela signifie que les paramètres de l'échantillonneur ne seront pas portables entre les systèmes d'exploitation.

De nombreux systèmes d'exploitation ont des commandes intégrées qui ne sont pas fournies en tant qu'exécutables séparés. Par exemple, la commande Windows DIR fait partie de l'interpréteur de commandes ( CMD.EXE ). Ces éléments intégrés ne peuvent pas être exécutés en tant que programmes indépendants, mais doivent être fournis en tant qu'arguments à l'interpréteur de commandes approprié.

Par exemple, la ligne de commande Windows : DIR C:\TEMP doit être spécifiée comme suit :

Commande:
CMD
Paramètre 1 :
/C
Paramètre 2 :
REP
Paramètre 3 :
C:\TEMP
Capture d'écran du panneau de configuration de l'échantillonneur de processus du système d'exploitation
Capture d'écran du panneau de configuration de l'échantillonneur de processus du système d'exploitation

Paramètres

Attribut
La description
Obligatoire
Commande
Le nom du programme à exécuter.
Oui
Directeur de travail
Répertoire à partir duquel la commande sera exécutée, par défaut le dossier référencé par " user.dir " Propriété système
Non
Paramètres de commande
Paramètres passés au nom du programme.
Non
Paramètres d'environnement
Paires clé/valeur ajoutées à l'environnement lors de l'exécution de la commande.
Non
Entrée standard (stdin)
Nom du fichier à partir duquel l'entrée doit être prise ( STDIN ).
Non
Sortie standard (stdout
Nom du fichier de sortie pour la sortie standard ( STDOUT ). S'il est omis, la sortie est capturée et renvoyée en tant que données de réponse.
Non
Erreur standard (stderr)
Nom du fichier de sortie pour l'erreur standard ( STDERR ). S'il est omis, la sortie est capturée et renvoyée en tant que données de réponse.
Non
Vérifier le code de retour
Si cette case est cochée, l'échantillonneur comparera le code de retour avec le code de retour attendu .
Non
Code de retour attendu
Code de retour attendu pour l'appel système, requis si " Vérifier le code de retour " est coché. Remarque 500 est utilisé comme indicateur d'erreur dans JMeter, vous ne devez donc pas l'utiliser.
Non
Temps libre
Délai d'expiration de la commande en millisecondes, la valeur par défaut est 0 , ce qui signifie qu'il n'y a pas de délai d'expiration. Si le délai expire avant la fin de la commande, JMeter tentera de tuer le processus du système d'exploitation.
Non
^

Script MongoDB (OBSOLETE)

Cet échantillonneur vous permet d'envoyer une requête à une MongoDB.

Avant de l'utiliser, vous devez configurer un élément MongoDB Source Config Configuration

Cet élément utilise actuellement com.mongodb.DB#eval qui prend un verrou d'écriture global provoquant un impact sur les performances de la base de données, voir db.eval() . Il est donc préférable d'éviter d'utiliser cet élément pour les tests de charge et d'utiliser les scripts JSR223+Groovy en utilisant MongoDBHolder à la place. MongoDB Script est plus adapté aux tests fonctionnels ou à la configuration des tests (threads de configuration/démontage)
Capture d'écran du panneau de configuration du script MongoDB (obsolète)
Capture d'écran du panneau de configuration du script MongoDB (obsolète)

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
Source MongoDB
Nom de la variable JMeter à laquelle la connexion MongoDB est liée. Cela doit correspondre au champ ' MongoDB Source ' d'une configuration de source MongoDB.
Oui
Nom de la base de données
Nom de la base de données, sera utilisé dans votre script
Oui
Nom d'utilisateur
Non
Mot de passe
Non
Scénario
Script Mongo tel qu'il serait utilisé dans le shell MongoDB
Oui
Assurez-vous que le nom de la variable est unique dans le plan de test.
^
^

Requête de boulon

Cet échantillonneur vous permet d'exécuter des requêtes Cypher via le protocole Bolt.

Avant de l'utiliser, vous devez configurer une configuration de connexion par boulon

Chaque demande utilise une connexion acquise à partir du pool et la renvoie au pool lorsque l'échantillonneur se termine. La taille du pool de connexion utilise les valeurs par défaut du pilote (~100) et n'est pas configurable pour le moment.

Le temps de réponse mesuré correspond à l'exécution "complète" de la requête, comprenant à la fois le temps d'exécution de la requête de chiffrement ET le temps de consommation des résultats renvoyés par la base de données.

Capture d'écran du panneau de configuration de Bolt Request
Capture d'écran du panneau de configuration de Bolt Request

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
commentaires
Texte libre pour plus de détails.
Non
Déclaration de chiffrement
Requête à exécuter.
Oui
Paramètres
Les valeurs des paramètres, au format JSON.
Non
Enregistrer les résultats de la requête
S'il faut ajouter ou non les données de résultat de la requête à la réponse de l'échantillonneur (false par défaut). Notez que l'activation de ceci a une surcharge de mémoire, utilisez-la judicieusement.
Non
Il est fortement conseillé d'utiliser des paramètres de requête, permettant à la base de données de mettre en cache et de réutiliser les plans d'exécution.
^
^

18.2 Contrôleurs logiques


Les contrôleurs logiques déterminent l'ordre dans lequel les échantillonneurs sont traités.

Contrôleur simple

Le contrôleur logique simple vous permet d'organiser vos échantillonneurs et autres contrôleurs logiques. Contrairement aux autres contrôleurs logiques, ce contrôleur ne fournit aucune fonctionnalité au-delà de celle d'un périphérique de stockage.

Capture d'écran du panneau de configuration du contrôleur simple
Capture d'écran du panneau de configuration du contrôleur simple

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
Utilisation du contrôleur simple

Téléchargez cet exemple (voir Figure 6). Dans cet exemple, nous avons créé un plan de test qui envoie deux requêtes HTTP Ant et deux requêtes HTTP Log4J. Nous avons regroupé les requêtes Ant et Log4J en les plaçant dans des contrôleurs logiques simples. N'oubliez pas que le contrôleur logique simple n'a aucun effet sur la façon dont JMeter traite le ou les contrôleurs que vous y ajoutez. Ainsi, dans cet exemple, JMeter envoie les requêtes dans l'ordre suivant : Ant Home Page, Ant News Page, Log4J Home Page, Log4J History Page.

A noter, le File Reporter est configuré pour stocker les résultats dans un fichier nommé " simple-test.dat " dans le répertoire courant.

Figure 6 Exemple de contrôleur simple
Figure 6 Exemple de contrôleur simple
^

Contrôleur de boucle

Si vous ajoutez des contrôleurs génératifs ou logiques à un contrôleur de boucle, JMeter les parcourra un certain nombre de fois, en plus de la valeur de boucle que vous avez spécifiée pour le groupe de threads. Par exemple, si vous ajoutez une requête HTTP à un contrôleur de boucle avec un nombre de boucles de deux et que vous configurez le nombre de boucles du groupe de threads sur trois, JMeter enverra un total de 2 * 3 = 6 requêtes HTTP.

JMeter exposera l'index de boucle sous la forme d'une variable nommée __jm__<Name of your element>__idx . Ainsi, par exemple, si votre contrôleur de boucle est nommé LC, vous pouvez accéder à l'index de boucle via ${__jm__LC__idx} . L'index commence à 0

Capture d'écran du panneau de configuration du contrôleur de boucle
Capture d'écran du panneau de configuration du contrôleur de boucle

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
Nombre de boucles
Le nombre de fois où les sous-éléments de ce contrôleur seront itérés à chaque fois lors d'un test.

La valeur -1 équivaut à cocher la bascule Forever .

Cas particulier : le contrôleur de boucle intégré dans l' élément Groupe de threads se comporte légèrement différemment. À moins qu'il ne soit défini sur pour toujours, il arrête le test après que le nombre donné d'itérations ait été effectué.

Lorsque vous utilisez une fonction dans ce champ, sachez qu'elle peut être évaluée plusieurs fois. L' exemple utilisant __Random l'évaluera à une valeur différente pour chaque échantillonneur enfant de Loop Controller et entraînera un comportement indésirable.
Oui, sauf si "Pour toujours" est coché
Exemple de boucle

Téléchargez cet exemple (voir Figure 4). Dans cet exemple, nous avons créé un plan de test qui envoie une seule requête HTTP particulière et envoie cinq fois une autre requête HTTP.

Figure 4 - Exemple de contrôleur de boucle
Figure 4 - Exemple de contrôleur de boucle

Nous avons configuré le groupe de threads pour un seul thread et une valeur de nombre de boucles de un. Au lieu de laisser le groupe de threads contrôler la boucle, nous avons utilisé un contrôleur de boucle. Vous pouvez voir que nous avons ajouté une requête HTTP au groupe de threads et une autre requête HTTP à un contrôleur de boucle. Nous avons configuré le contrôleur de boucle avec une valeur de nombre de boucles de cinq.

JMeter enverra les demandes dans l'ordre suivant : page d'accueil, page d'actualités, page d'actualités, page d'actualités, page d'actualités et page d'actualités.

Notez que le File Reporter est configuré pour stocker les résultats dans un fichier nommé " loop-test.dat " dans le répertoire courant.
^

Contrôleur unique

Le contrôleur logique unique indique à JMeter de traiter le ou les contrôleurs à l'intérieur une seule fois par thread et de transmettre toutes les requêtes sous celui-ci lors d'itérations ultérieures dans le plan de test.

Le contrôleur Once Only s'exécutera désormais toujours lors de la première itération de tout contrôleur parent en boucle. Ainsi, si le contrôleur unique est placé sous un contrôleur de boucle spécifié pour boucler 5 fois, le contrôleur unique ne s'exécutera qu'à la première itération via le contrôleur de boucle (c'est-à-dire toutes les 5 fois).

Notez que cela signifie que le contrôleur Once Only se comportera toujours comme prévu s'il est placé dans un groupe de threads (s'exécute une seule fois par test et par thread), mais l'utilisateur dispose désormais d'une plus grande flexibilité dans l'utilisation du contrôleur Once Only.

Pour les tests nécessitant une connexion, envisagez de placer la demande de connexion dans ce contrôleur, car chaque thread n'a besoin de se connecter qu'une seule fois pour établir une session.

Capture d'écran du panneau de configuration du contrôleur Once Only
Capture d'écran du panneau de configuration du contrôleur Once Only

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
Exemple unique

Téléchargez cet exemple (voir Figure 5). Dans cet exemple, nous avons créé un plan de test qui comporte deux threads qui envoient une requête HTTP. Chaque thread envoie une requête à la page d'accueil, suivie de trois requêtes à la page de bogue. Bien que nous ayons configuré le groupe de threads pour itérer trois fois, chaque thread JMeter n'envoie qu'une seule requête à la page d'accueil car cette requête réside dans un contrôleur unique.

Figure 5. Exemple de contrôleur unique
Figure 5. Exemple de contrôleur unique

Chaque thread JMeter enverra les requêtes dans l'ordre suivant : page d'accueil, page de bogue, page de bogue, page de bogue.

Notez que le File Reporter est configuré pour stocker les résultats dans un fichier nommé " loop-test.dat " dans le répertoire courant.

^

Contrôleur d'entrelacement

Si vous ajoutez des contrôleurs génératifs ou logiques à un contrôleur entrelacé, JMeter alternera entre chacun des autres contrôleurs pour chaque itération de boucle.

Capture d'écran du panneau de configuration du contrôleur d'entrelacement
Capture d'écran du panneau de configuration du contrôleur d'entrelacement

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
ignorer les blocs de sous-contrôleur
Si cette case est cochée, le contrôleur d'entrelacement traitera les sous-contrôleurs comme des éléments de demande unique et n'autorisera qu'une seule demande par contrôleur à la fois.
Non
Entrelacer à travers les threads
Si cette case est cochée, le contrôleur d'entrelacement alternera entre chacun de ses contrôleurs enfants pour chaque itération de boucle mais sur tous les threads, par exemple dans une configuration avec 4 threads et 3 contrôleurs enfants, à la première itération, le thread 1 exécutera le premier enfant, le thread 2 deuxième enfant , thread 3 troisième enfant, thread 4 premier enfant, à la prochaine itération chaque thread exécutera le contrôleur enfant suivant
Non
Exemple d'entrelacement simple

Téléchargez cet exemple (voir Figure 1). Dans cet exemple, nous avons configuré le groupe de threads pour avoir deux threads et un nombre de boucles de cinq, pour un total de dix requêtes par thread. Voir le tableau ci-dessous pour la séquence JMeter envoie les requêtes HTTP.

Figure 1 - Exemple de contrôleur d'entrelacement 1
Figure 1 - Exemple de contrôleur d'entrelacement 1
Itération de boucleChaque thread JMeter envoie ces requêtes HTTP
1Actualités
1Page du journal
2FAQ
2Page du journal
3Page Gump
3Page du journal
4Comme il n'y a plus de requêtes dans le contrôleur,

JMeter recommence et envoie la première requête HTTP, qui est la page d'actualités.
4Page du journal
5FAQ
5Page du journal
Exemple d'entrelacement utile

Téléchargez un autre exemple (voir Figure 2). Dans cet exemple, nous avons configuré le groupe de threads pour avoir un seul thread et un nombre de boucles de huit. Notez que le plan de test a un contrôleur d'entrelacement externe avec deux contrôleurs d'entrelacement à l'intérieur.


        Figure 2 - Exemple de contrôleur d'entrelacement 2
Figure 2 - Exemple de contrôleur d'entrelacement 2

Le contrôleur d'entrelacement externe alterne entre les deux contrôleurs internes. Ensuite, chaque contrôleur d'entrelacement interne alterne entre chacune des requêtes HTTP. Chaque thread JMeter enverra les requêtes dans l'ordre suivant : page d'accueil, entrelacée, page de bogue, entrelacée, page CVS, entrelacée et page FAQ, entrelacée.

Notez que le File Reporter est configuré pour stocker les résultats dans un fichier nommé « interleave-test2.dat » dans le répertoire courant.


        Figure 3 - Exemple de contrôleur d'entrelacement 3
Figure 3 - Exemple de contrôleur d'entrelacement 3

Si les deux contrôleurs d'entrelacement sous le contrôleur d'entrelacement principal étaient à la place de simples contrôleurs, alors l'ordre serait : page d'accueil, page CVS, entrelacé, page de bogue, page FAQ, entrelacé.

Cependant, si " ignorer les blocs de sous-contrôleur " était coché sur le contrôleur d'entrelacement principal, alors l'ordre serait : page d'accueil, entrelacé, page de bogue, entrelacé, page CVS, entrelacé et page FAQ, entrelacé.

^

Contrôleur aléatoire

Le contrôleur logique aléatoire agit de la même manière que le contrôleur d'entrelacement, sauf qu'au lieu de parcourir ses sous-contrôleurs et échantillonneurs dans l'ordre, il en choisit un au hasard à chaque passage.

Les interactions entre plusieurs contrôleurs peuvent produire un comportement complexe. C'est particulièrement vrai pour le Random Controller. Expérimentez avant de supposer quels résultats une interaction donnée donnera
Capture d'écran du panneau de configuration du contrôleur aléatoire
Capture d'écran du panneau de configuration du contrôleur aléatoire

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
ignorer les blocs de sous-contrôleur
Si cette case est cochée, le contrôleur d'entrelacement traitera les sous-contrôleurs comme des éléments de demande unique et n'autorisera qu'une seule demande par contrôleur à la fois.
Non
^

Contrôleur d'ordre aléatoire

Le contrôleur d'ordre aléatoire ressemble beaucoup à un contrôleur simple en ce sens qu'il exécutera chaque élément enfant au plus une fois, mais l'ordre d'exécution des nœuds sera aléatoire.

Capture d'écran du panneau de configuration du contrôleur d'ordre aléatoire
Capture d'écran du panneau de configuration du contrôleur d'ordre aléatoire

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
^

Contrôleur de débit

Le contrôleur de débit permet à l'utilisateur de contrôler la fréquence d'exécution. Il existe deux modes :

  • pourcentage d'exécution
  • nombre total d'exécutions
Pourcentage d'exécutions
oblige le contrôleur à exécuter un certain pourcentage d'itérations dans le plan de test.
Total des exécutions
provoque l'arrêt de l'exécution du contrôleur après un certain nombre d'exécutions.
Comme le contrôleur unique, ce paramètre est réinitialisé lorsqu'un contrôleur de boucle parent redémarre.

Ce contrôleur porte mal son nom, car il ne contrôle pas le débit. Veuillez vous référer à la minuterie de débit constant pour un élément qui peut être utilisé pour ajuster le débit.
Capture d'écran du panneau de configuration du contrôleur de débit
Capture d'écran du panneau de configuration du contrôleur de débit
Le contrôleur de débit peut produire un comportement très complexe lorsqu'il est combiné avec d'autres contrôleurs - en particulier avec des contrôleurs entrelacés ou aléatoires en tant que parents (également très utiles).

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
Style d'exécution
Indique si le contrôleur s'exécutera en pourcentage d'exécutions ou en mode d'exécutions totales.
Oui
Débit
Un numéro. Pour le mode d'exécution en pourcentage, un nombre compris entre 0 et 100 qui indique le pourcentage de fois que le contrôleur s'exécutera. " 50 " signifie que le contrôleur s'exécutera pendant la moitié des itérations du plan de test. Pour le mode d'exécution total, le nombre indique le nombre total de fois que le contrôleur s'exécutera.
Oui
Par utilisateur
Si coché, par utilisateur, le contrôleur calculera s'il doit s'exécuter sur une base par utilisateur (par thread). Si elle n'est pas cochée, le calcul sera global pour tous les utilisateurs. Par exemple, si vous utilisez le mode d'exécution total et que vous décochez " par utilisateur ", le nombre donné pour le débit sera le nombre total d'exécutions effectuées. Si " par utilisateur " est coché, alors le nombre total d'exécutions sera le nombre d'utilisateurs multiplié par le nombre donné pour le débit.
Non
^

Contrôleur d'exécution

Le contrôleur d'exécution contrôle la durée d'exécution de ses enfants. Le contrôleur exécutera ses enfants jusqu'à ce que le ou les temps d' exécution configurés soient dépassés.

Capture d'écran du panneau de configuration du contrôleur d'exécution
Capture d'écran du panneau de configuration du contrôleur d'exécution

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence et utilisé pour nommer la transaction.
Oui
Durée d'exécution (secondes)
Durée d'exécution souhaitée en secondes. 0 signifie pas d'exécution.
Oui
^

Si Contrôleur

Le contrôleur If permet à l'utilisateur de contrôler si les éléments de test situés en dessous (ses enfants) sont exécutés ou non.

Par défaut, la condition n'est évaluée qu'une seule fois lors de la saisie initiale, mais vous avez la possibilité de la faire évaluer pour chaque élément exécutable contenu dans le contrôleur.

La meilleure option (par défaut) consiste à cocher Interpréter la condition comme une expression variable ? , puis dans le champ condition vous avez 2 options :

  • Option 1 : Utiliser une variable qui contient vrai ou faux
    Si vous voulez tester si le dernier échantillon a réussi, vous pouvez utiliser ${JMeterThread.last_sample_ok}
    Si le contrôleur utilise la variable
    Si le contrôleur utilise la variable
  • Option 2 : Utiliser une fonction ( ${__jexl3()} est conseillé) pour évaluer une expression qui doit retourner vrai ou faux
    Si le contrôleur utilise l'expression
    Si le contrôleur utilise l'expression
Par exemple, auparavant on pouvait utiliser la condition : ${__jexl3(${VAR} == 23)} et celle-ci serait évaluée comme true / false , le résultat serait alors passé à JavaScript qui retournerait alors true / false . Si l'option Variable Expression est sélectionnée, alors l'expression est évaluée et comparée à " true ", sans avoir besoin d'utiliser JavaScript.

Pour tester si une variable est indéfinie (ou nulle), procédez comme suit, supposons que var s'appelle myVar , expression sera :
"${maVar}" == "\${maVar}"
Ou utiliser:
"${maVar}" != "\${maVar}"
pour tester si une variable est définie et n'est pas nulle.
Si vous décochez Interpréter la condition en tant qu'expression variable ? , Si le contrôleur utilise en interne javascript pour évaluer la condition qui a une pénalité de performance qui peut être très importante et rendre votre test moins évolutif.
Si le contrôleur utilise javascript
Si le contrôleur utilise javascript
Capture d'écran du panneau de configuration de If Controller
Capture d'écran du panneau de configuration de If Controller

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
Condition (JavaScript par défaut)
Par défaut, la condition est interprétée comme du code JavaScript qui renvoie « vrai » ou « faux », mais cela peut être remplacé (voir ci-dessous)
Oui
Interpréter la condition comme une expression variable ?
Si cette option est sélectionnée, la condition doit être une expression évaluée à « true » (la casse est ignorée). Par exemple, ${FOUND} ou ${__jexl3(${VAR} > 100)} . Contrairement au cas JavaScript, la condition n'est vérifiée que pour voir si elle correspond à " vrai " (la casse est ignorée).
Vérifier cela et utiliser la fonction __jexl3 ou __groovy dans Condition est conseillé pour les performances
Oui
Évaluer pour tous les enfants
La condition devrait-elle être évaluée pour tous les enfants? Si elle n'est pas cochée, la condition n'est évaluée qu'à l'entrée.
Oui
Exemples (JavaScript)
  • ${COUNT} < 10
  • "${VAR}" == "abcd"
S'il y a une erreur d'interprétation du code, la condition est supposée être false et un message est consigné dans jmeter.log .
Notez qu'il est conseillé d'éviter d'utiliser le mode JavaScript pour des raisons de performances.

Lorsque vous utilisez __groovy , veillez à ne pas utiliser de remplacement de variable dans la chaîne, sinon si vous utilisez une variable qui modifie le script, il ne peut pas être mis en cache. Au lieu de cela, récupérez la variable en utilisant : vars.get("myVar"). Voir les exemples Groovy ci-dessous.
Exemples (expression variable)
  • ${__groovy(vars.get("myVar") != "Invalid" )} (Groovy vérifie que myVar n'est pas égal à Invalid)
  • ${__groovy(vars.get("myInt").toInteger() <=4 )} (Groovy vérifie que myInt est inférieur ou égal à 4)
  • ${__groovy(vars.get("myMissing") != null )} (Groovy vérifie si la variable myMissing n'est pas définie)
  • ${__jexl3(${COUNT} < 10)}
  • ${RÉSULTAT}
  • ${JMeterThread.last_sample_ok} (vérifier si le dernier échantillon a réussi)
^

Tandis que Contrôleur

Le contrôleur While exécute ses enfants jusqu'à ce que la condition soit " false ".

JMeter exposera l'index de boucle sous la forme d'une variable nommée __jm__<Name of your element>__idx . Ainsi, par exemple, si votre contrôleur While s'appelle WC, vous pouvez accéder à l'index de boucle via ${__jm__WC__idx} . L'index commence à 0

Valeurs de condition possibles :

  • vide - quitte la boucle lorsque le dernier échantillon de la boucle échoue
  • LAST - quitte la boucle lorsque le dernier échantillon de la boucle échoue. Si le dernier échantillon juste avant la boucle a échoué, n'entrez pas dans la boucle.
  • Sinon - quittez (ou n'entrez pas) la boucle lorsque la condition est égale à la chaîne " false "
La condition peut être n'importe quelle variable ou fonction qui finit par donner la chaîne " false ". Cela permet l'utilisation de __jexl3 , __groovy fonction, propriétés ou variables selon les besoins.

Notez que la condition est évaluée deux fois, une fois avant de commencer l'échantillonnage des enfants et une fois à la fin de l'échantillonnage des enfants, donc mettre des fonctions non idempotentes dans Condition (comme __counter ) peut introduire des problèmes.

Par exemple:
  • ${VAR} - où VAR est défini sur false par un autre élément de test
  • ${__jexl3(${C}==10)}
  • ${__jexl3("${VAR2}"=="abcd")}
  • ${_P(property)} - où la propriété est définie sur " false " ailleurs
Capture d'écran du panneau de configuration de While Controller
Capture d'écran du panneau de configuration de While Controller

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence et utilisé pour nommer la transaction.
Non
Condition
vide, LAST ou variable/fonction
Non
^

Contrôleur de commutateur

Le contrôleur de commutateur agit comme le contrôleur d'entrelacement en ce sens qu'il exécute l'un des éléments subordonnés à chaque itération, mais plutôt que de les exécuter en séquence, le contrôleur exécute l'élément défini par la valeur du commutateur.

La valeur du commutateur peut également être un nom.

Si la valeur du commutateur est hors plage, il exécutera l'élément zéro, qui agit donc comme valeur par défaut pour la casse numérique. Il exécute également l'élément zéro si la valeur est la chaîne vide.

Si la valeur n'est pas numérique (et non vide), alors le contrôleur de commutateur recherche l'élément portant le même nom (la casse est significative). Si aucun des noms ne correspond, alors l'élément nommé " default " (casse non significative) est sélectionné. S'il n'y a pas de valeur par défaut, aucun élément n'est sélectionné et le contrôleur n'exécutera rien.

Capture d'écran du panneau de configuration du contrôleur de commutateur
Capture d'écran du panneau de configuration du contrôleur de commutateur

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
Valeur de commutation
Le numéro (ou le nom) de l'élément subordonné à invoquer. Les éléments sont numérotés à partir de 0. La valeur par défaut est 0
Non
^

Pour chaque contrôleur

Un contrôleur ForEach parcourt les valeurs d'un ensemble de variables associées. Lorsque vous ajoutez des échantillonneurs (ou contrôleurs) à un contrôleur ForEach, chaque échantillon (ou contrôleur) est exécuté une ou plusieurs fois, où à chaque boucle la variable a une nouvelle valeur. L'entrée doit être composée de plusieurs variables, chacune prolongée par un trait de soulignement et un nombre. Chacune de ces variables doit avoir une valeur. Ainsi, par exemple, lorsque la variable d'entrée porte le nom inputVar , les variables suivantes doivent avoir été définies :

  • entréeVar_1 = wendy
  • entréeVar_2 = charles
  • inputVar_3 = peter
  • inputVar_4 = jean

Remarque : le séparateur " _ " est désormais facultatif.

Lorsque la variable de retour est donnée comme " returnVar ", la collection d'échantillonneurs et de contrôleurs sous le contrôleur ForEach sera exécutée 4 fois consécutives, la variable de retour ayant les valeurs ci-dessus respectives, qui peuvent ensuite être utilisées dans les échantillonneurs.

JMeter exposera l'index de boucle sous la forme d'une variable nommée __jm__<Name of your element>__idx . Ainsi, par exemple, si votre contrôleur de boucle est nommé FEC, vous pouvez accéder à l'index de boucle via ${__jm__FEC__idx} . L'index commence à 0

Il est particulièrement adapté à l'exécution avec le post-processeur d'expressions régulières. Cela peut "créer" les variables d'entrée nécessaires à partir des données de résultat d'une requête précédente. En omettant le séparateur " _ ", le contrôleur ForEach peut être utilisé pour parcourir les groupes en utilisant la variable d'entrée refName_g , et peut également parcourir tous les groupes dans toutes les correspondances en utilisant une variable d'entrée de la forme refName_${C }_g , où C est une variable compteur.

Le ForEach Controller n'exécute aucun échantillon si inputVar_1 est null . Ce serait le cas si l'expression régulière ne renvoyait aucune correspondance.
Capture d'écran du panneau de configuration du contrôleur ForEach
Capture d'écran du panneau de configuration du contrôleur ForEach

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
Préfixe de la variable d'entrée
Préfixe des noms de variables à utiliser en entrée. Par défaut, une chaîne vide comme préfixe.
Non
Index de départ pour la boucle
Index de début (exclusif) pour la boucle sur les variables (le premier élément est à l'index de début + 1)
Non
Index de fin de boucle
Index de fin (inclusif) pour la boucle sur les variables
Non
Grandeur de sortie
Le nom de la variable qui peut être utilisée dans la boucle pour le remplacement dans les échantillonneurs. Par défaut, un nom de variable vide, ce qui n'est probablement pas souhaité.
Non
Utiliser le séparateur
S'il n'est pas coché, le séparateur " _ " est omis.
Oui
Pour chaque exemple

Téléchargez cet exemple (voir Figure 7). Dans cet exemple, nous avons créé un plan de test qui envoie une seule requête HTTP particulière et envoie une autre requête HTTP à chaque lien pouvant être trouvé sur la page.

Figure 7 - Exemple de contrôleur ForEach
Figure 7 - Exemple de contrôleur ForEach

Nous avons configuré le groupe de threads pour un seul thread et une valeur de nombre de boucles de un. Vous pouvez voir que nous avons ajouté une requête HTTP au groupe de threads et une autre requête HTTP au contrôleur ForEach.

Après la première requête HTTP, un extracteur d'expressions régulières est ajouté, qui extrait tous les liens html de la page de retour et les place dans la variable inputVar

Dans la boucle ForEach, un échantillonneur HTTP est ajouté qui demande tous les liens qui ont été extraits de la première page HTML renvoyée.

Pour chaque exemple

Voici un autre exemple que vous pouvez télécharger. Cela a deux expressions régulières et des contrôleurs ForEach. Le premier RE correspond, mais le second ne correspond pas, donc aucun échantillon n'est exécuté par le second ForEach Controller

Figure 8 - Exemple de contrôleur ForEach 2
Figure 8 - Exemple de contrôleur ForEach 2

Le groupe de threads a un seul thread et un nombre de boucles de deux.

L'exemple 1 utilise l'échantillonneur JavaTest pour renvoyer la chaîne " abcd ".

L'extracteur Regex utilise l'expression (\w)\s qui correspond à une lettre suivie d'un espace et renvoie la lettre (pas l'espace). Toutes les correspondances sont préfixées par la chaîne " inputVar ".

Le contrôleur ForEach extrait toutes les variables avec le préfixe " inputVar_ ", et exécute son échantillon, en passant la valeur dans la variable " returnVar ". Dans ce cas, il définira la variable aux valeurs " a " " b " et " c " tour à tour.

L' échantillonneur For 1 est un autre échantillonneur Java qui utilise la variable de retour " returnVar " dans le cadre de l'échantillon Label et en tant que sampler Data.

Sample 2 , Regex 2 et For 2 sont presque identiques, sauf que Regex a été remplacé par " (\w)\sx ", ce qui ne correspond clairement pas. Ainsi, l' échantillonneur For 2 ne fonctionnera pas.

^

Contrôleur de module

Le contrôleur de module fournit un mécanisme pour substituer des fragments de plan de test dans le plan de test actuel au moment de l'exécution.

Un fragment de plan de test se compose d'un contrôleur et de tous les éléments de test (échantillonneurs, etc.) qu'il contient. Le fragment peut être situé dans n'importe quel groupe de threads. Si le fragment se trouve dans un groupe de threads, son contrôleur peut être désactivé pour empêcher l'exécution du fragment sauf par le contrôleur de module. Ou vous pouvez stocker les fragments dans un groupe de threads factice et désactiver l'ensemble du groupe de threads.

Il peut y avoir plusieurs fragments, chacun avec une série différente d'échantillonneurs sous eux. Le contrôleur de module peut ensuite être utilisé pour basculer facilement entre ces multiples cas de test simplement en choisissant le contrôleur approprié dans sa liste déroulante. Cela permet d'exécuter facilement et rapidement de nombreux plans de test alternatifs.

Un nom de fragment est composé du nom du contrôleur et de tous ses noms parents. Par exemple:

Plan de test/protocole : JDBC/contrôle/contrôleur d'entrelacement (module 1)

Tous les fragments utilisés par le contrôleur de module doivent avoir un nom unique , car le nom est utilisé pour trouver le contrôleur cible lorsqu'un plan de test est rechargé. Pour cette raison, il est préférable de s'assurer que le nom du contrôleur est modifié par défaut - comme indiqué dans l'exemple ci-dessus - sinon un doublon peut être créé accidentellement lorsque de nouveaux éléments sont ajoutés au plan de test.

Capture d'écran du panneau de configuration du contrôleur de module
Capture d'écran du panneau de configuration du contrôleur de module

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
Module à exécuter
Le contrôleur de module fournit une liste de tous les contrôleurs chargés dans l'interface graphique. Sélectionnez celui que vous souhaitez remplacer au moment de l'exécution.
Oui
^

Inclure le contrôleur

Le contrôleur inclus est conçu pour utiliser un fichier JMX externe. Pour l'utiliser, créez un fragment de test sous le plan de test et ajoutez les échantillonneurs, contrôleurs, etc. souhaités en dessous. Enregistrez ensuite le plan de test. Le fichier est maintenant prêt à être inclus dans d'autres plans de test.

Pour plus de commodité, un groupe de threads peut également être ajouté dans le fichier JMX externe à des fins de débogage. Un contrôleur de module peut être utilisé pour référencer le fragment de test. Le groupe de threads sera ignoré pendant le processus d'inclusion.

Si le test utilise un gestionnaire de cookies ou des variables définies par l'utilisateur, celles-ci doivent être placées dans le plan de test de niveau supérieur, et non dans le fichier inclus, sinon leur fonctionnement n'est pas garanti.

Cet élément ne prend pas en charge les variables/fonctions dans le champ du nom de fichier.
Cependant, si la propriété includecontroller.prefix est définie, le contenu est utilisé pour préfixer le chemin d'accès.
Lorsque vous utilisez Include Controller et que vous incluez le même fichier JMX, assurez-vous de nommer le Include Controller différemment pour éviter de rencontrer le problème connu Bug 50898 .

Si le fichier est introuvable à l'emplacement indiqué par préfixe + nom de fichier , le contrôleur tente d'ouvrir le nom de fichier relatif au répertoire de lancement JMX.

Capture d'écran du panneau de configuration d'Include Controller
Capture d'écran du panneau de configuration de Inclure le contrôleur

Paramètres

Attribut
La description
Obligatoire
Nom de fichier
Fichier à inclure.
Oui
^

Contrôleur de transaction

Le contrôleur de transaction génère un échantillon supplémentaire qui mesure le temps total nécessaire pour effectuer les éléments de test imbriqués.

Remarque : lorsque la case « Inclure la durée du temporisateur et des processeurs pré-post dans l'échantillon généré » est cochée, le temps inclut tous les traitements dans la portée du contrôleur, pas seulement les échantillons.

Il existe deux modes de fonctionnement :

  • un échantillon supplémentaire est ajouté après les échantillons imbriqués
  • un échantillon supplémentaire est ajouté en tant que parent des échantillons imbriqués

Le temps d'échantillonnage généré inclut tous les temps pour les échantillonneurs imbriqués à l'exception par défaut (depuis 2.11) des temporisateurs et du temps de traitement des pré/post processeurs sauf si la case " Inclure la durée du temporisateur et des pré-post processeurs dans l'échantillon généré " est cochée. En fonction de la résolution de l'horloge, elle peut être légèrement plus longue que la somme des échantillonneurs individuels et des temporisateurs. L'horloge peut faire tic tac après que le contrôleur a enregistré l'heure de début, mais avant le début du premier échantillon. De même à la fin.

L'échantillon généré n'est considéré comme réussi que si tous ses sous-échantillons sont réussis.

En mode parent, les échantillons individuels peuvent toujours être vus dans le Tree View Listener, mais n'apparaissent plus comme des entrées séparées dans d'autres Listeners. De plus, les sous-échantillons n'apparaissent pas dans les fichiers journaux CSV, mais ils peuvent être enregistrés dans des fichiers XML.

En mode parent, des assertions (etc.) peuvent être ajoutées au contrôleur de transaction. Cependant, par défaut, ils seront appliqués à la fois aux échantillons individuels et à l'échantillon global de transactions. Pour limiter la portée des assertions, utilisez un contrôleur simple pour contenir les échantillons et ajoutez les assertions au contrôleur simple. Les contrôleurs en mode parent ne prennent actuellement pas correctement en charge les contrôleurs de transaction imbriqués de l'un ou l'autre type.
Capture d'écran du panneau de configuration du contrôleur de transaction
Capture d'écran du panneau de configuration du contrôleur de transaction

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence et utilisé pour nommer la transaction.
Oui
Générer un échantillon parent
Si cette case est cochée, l'échantillon est généré en tant que parent des autres échantillons, sinon l'échantillon est généré en tant qu'échantillon indépendant.
Oui
Inclure la durée de la minuterie et des processeurs pré-post dans l'échantillon généré
S'il faut inclure la minuterie, les délais de pré- et post-traitement dans l'échantillon généré. La valeur par défaut est false
Oui
^

Contrôleur d'enregistrement

Le contrôleur d'enregistrement est un espace réservé indiquant où le serveur proxy doit enregistrer les échantillons. Pendant le test, il n'a aucun effet, similaire au contrôleur simple. Mais pendant l'enregistrement à l'aide de l' enregistreur de script de test HTTP(S) , tous les échantillons enregistrés seront par défaut enregistrés sous le contrôleur d'enregistrement.

Capture d'écran du panneau de commande du contrôleur d'enregistrement
Capture d'écran du panneau de commande du contrôleur d'enregistrement

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce contrôleur affiché dans l'arborescence.
Non
^

Contrôleur de section critique

Le contrôleur de section critique garantit que ses éléments enfants (échantillonneurs/contrôleurs, etc.) seront exécutés par un seul thread car un verrou nommé sera pris avant d'exécuter les enfants du contrôleur.

Capture d'écran du panneau de configuration du contrôleur de section critique
Capture d'écran du panneau de configuration du contrôleur de section critique

La figure ci-dessous montre un exemple d'utilisation du contrôleur de section critique. Dans la figure ci-dessous, 2 contrôleurs de section critique garantissent que :

  • DS2-${__threadNum} n'est exécuté que par un thread à la fois
  • DS4-${__threadNum} n'est exécuté que par un seul thread à la fois
Plan de test utilisant le contrôleur de section critique
Plan de test utilisant le contrôleur de section critique

Paramètres

Attribut
La description
Obligatoire
Nom du verrou
Verrou qui sera pris par le contrôleur, assurez-vous d'utiliser des noms de verrou différents pour les sections non liées
Oui
Le contrôleur de section critique prend des verrous uniquement dans une JVM, donc si vous utilisez des tests distribués, assurez-vous que votre cas d'utilisation ne repose pas sur le blocage de tous les threads de toutes les JVM.
^
^

18.3 Auditeurs


La plupart des auditeurs jouent plusieurs rôles en plus d'« écouter » les résultats des tests. Ils permettent également d'afficher, d'enregistrer et de lire les résultats de test enregistrés.

Notez que les écouteurs sont traités à la fin de la portée dans laquelle ils se trouvent.

L'enregistrement et la lecture des résultats de test sont génériques. Les différents écouteurs disposent d'un panneau permettant de spécifier le fichier dans lequel les résultats seront écrits (ou lus). Par défaut, les résultats sont stockés sous forme de fichiers XML, généralement avec une extension « .jtl ». Le stockage au format CSV est l'option la plus efficace, mais il est moins détaillé que XML (l'autre option disponible).

Les écouteurs ne traitent pas les données d'échantillon en mode CLI, mais les données brutes seront enregistrées si un fichier de sortie a été configuré. Afin d'analyser les données générées par une exécution CLI, vous devez charger le fichier dans l'écouteur approprié.

Pour lire les résultats existants et les afficher, utilisez le bouton Parcourir du panneau Fichier pour ouvrir le fichier.

Si vous souhaitez effacer toutes les données actuelles avant de charger un nouveau fichier, utilisez l'élément de menu Exécuter  →  Effacer ( Ctrl  +  Maj  +  E ) ou Exécuter  →  Effacer tout ( Ctrl  +  E ) avant de charger le fichier.

Les résultats peuvent être lus à partir de fichiers au format XML ou CSV. Lors de la lecture de fichiers de résultats CSV, l'en-tête (s'il est présent) est utilisé pour déterminer quels champs sont présents. Afin d'interpréter correctement un fichier CSV sans en-tête, les propriétés appropriées doivent être définies dans jmeter.properties .

Les fichiers XML écrits par JMeter ont la version 1.0 déclarée dans l'en-tête tandis que le fichier réel est sérialisé avec les règles 1.1. (Ceci est fait pour des raisons de compatibilité historique ; voir bogue 59973 et bogue 58679 ) Cela provoque l'échec des analyseurs XML stricts. Envisagez d'utiliser des analyseurs XML non stricts pour lire les fichiers JTL.

Le nom de fichier peut contenir des références de fonction et/ou de variable. Cependant, les références de variables ne fonctionnent pas en mode client-serveur (les fonctions fonctionnent correctement). Cela est dû au fait que le fichier est créé sur le client et que le client n'exécute pas le test localement et ne configure donc pas de variables.

Les auditeurs peuvent utiliser beaucoup de mémoire s'il y a beaucoup d'échantillons. La plupart des auditeurs conservent actuellement une copie de chaque échantillon de leur portée, à l'exception de :

  • Rédacteur de données simple
  • Écouteur BeanShell/JSR223
  • Visualiseur de courrier
  • Rapport sommaire

Les auditeurs suivants n'ont plus besoin de conserver des copies de chaque échantillon. Au lieu de cela, les échantillons avec le même temps écoulé sont agrégés. Moins de mémoire est maintenant nécessaire, surtout si la plupart des échantillons ne prennent qu'une seconde ou deux au maximum.

  • Rapport agrégé
  • Graphique agrégé

Pour minimiser la quantité de mémoire nécessaire, utilisez Simple Data Writer et utilisez le format CSV.

Les variables JMeter peuvent être enregistrées dans les fichiers de sortie. Cela ne peut être spécifié qu'à l'aide d'une propriété. Voir les exemples de variables d'écoute pour plus de détails

Pour plus de détails sur la configuration des éléments par défaut à enregistrer, consultez la documentation de configuration par défaut de l'écouteur . Pour plus de détails sur le contenu des fichiers de sortie, consultez le format de journal CSV ou le format de journal XML .

Les entrées dans jmeter.properties sont utilisées pour définir les valeurs par défaut ; ceux-ci peuvent être remplacés pour des auditeurs individuels en utilisant le bouton Configurer, comme indiqué ci-dessous. Les paramètres de jmeter.properties s'appliquent également à l'écouteur ajouté à l'aide de l' indicateur de ligne de commande -l .

La figure ci-dessous montre un exemple du panneau de configuration du fichier de résultats

Panneau de configuration du fichier de résultats
Panneau de configuration du fichier de résultats

Paramètres

Attribut
La description
Obligatoire
Nom de fichier
Nom du fichier contenant les résultats des échantillons. Le nom de fichier peut être spécifié à l'aide d'un chemin d'accès relatif ou absolu. Les chemins relatifs sont résolus par rapport au répertoire de travail actuel (qui est par défaut le répertoire bin/ ). JMeter prend également en charge les chemins relatifs au répertoire contenant le plan de test actuel (fichier JMX). Si le nom du chemin commence par " ~/ " (ou tout ce qui se trouve dans la propriété JMeter jmeter.save.saveservice.base_prefix ), alors le chemin est supposé être relatif à l'emplacement du fichier JMX.
Non
Parcourir …
Bouton Parcourir les fichiers
Non
les erreurs
Sélectionnez cette option pour écrire/lire uniquement les résultats avec des erreurs
Non
Succès
Sélectionnez cette option pour écrire/lire uniquement les résultats sans erreurs. Si ni Erreurs ni Succès n'est sélectionné, tous les résultats sont traités.
Non
Configurer
Configurer le bouton, voir ci-dessous
Non

Exemple de configuration de sauvegarde des résultats

Les écouteurs peuvent être configurés pour enregistrer différents éléments dans les fichiers journaux de résultats (JTL) à l'aide de la fenêtre contextuelle Config, comme indiqué ci-dessous. Les valeurs par défaut sont définies comme décrit dans la documentation de configuration par défaut de l'écouteur . Les éléments avec ( CSV ) après le nom s'appliquent uniquement au format CSV ; les éléments avec ( XML ) s'appliquent uniquement au format XML. Le format CSV ne peut actuellement pas être utilisé pour enregistrer des éléments qui incluent des sauts de ligne.

Notez que les cookies, la méthode et la chaîne de requête sont enregistrés dans le cadre de l' option " Sampler Data ".

Capture d'écran du panneau de commande de la configuration de l'enregistrement des résultats de l'échantillon
Capture d'écran du panneau de commande de la configuration de l'enregistrement des résultats de l'échantillon
^

Résultats du graphique

Les résultats du graphique NE DOIVENT PAS ÊTRE UTILISÉS pendant le test de charge car ils consomment beaucoup de ressources (mémoire et CPU). Utilisez-le uniquement pour les tests fonctionnels ou pendant le débogage et la validation du plan de test.

L'écouteur Graph Results génère un graphique simple qui trace tous les temps d'échantillonnage. Au bas du graphique, l'échantillon actuel (noir), la moyenne actuelle de tous les échantillons (bleu), l'écart type actuel (rouge) et le débit actuel (vert) sont affichés en millisecondes.

Le nombre de débit représente le nombre réel de requêtes/minute traitées par le serveur. Ce calcul inclut tous les retards que vous avez ajoutés à votre test et le temps de traitement interne de JMeter. L'avantage de faire le calcul comme celui-ci est que ce nombre représente quelque chose de réel - votre serveur a en fait traité autant de requêtes par minute, et vous pouvez augmenter le nombre de threads et/ou diminuer les délais pour découvrir le débit maximum de votre serveur. Alors que si vous faisiez des calculs qui excluaient les retards et le traitement de JMeter, il serait difficile de savoir ce que vous pourriez conclure de ce nombre.

Capture d'écran du panneau de configuration des résultats du graphique
Capture d'écran du panneau de configuration des résultats du graphique

Le tableau suivant décrit brièvement les éléments du graphique. De plus amples détails sur la signification précise des termes statistiques peuvent être trouvés sur le web - par exemple Wikipedia - ou en consultant un livre sur les statistiques.

  • Données - tracer les valeurs de données réelles
  • Moyenne - tracez la moyenne
  • Médiane - tracez la médiane (valeur médiane)
  • Déviation - tracer la déviation standard (une mesure de la variation)
  • Débit - tracer le nombre d'échantillons par unité de temps

Les chiffres individuels au bas de l'écran sont les valeurs actuelles. « Dernier échantillon » est le temps d'échantillonnage écoulé actuel, affiché sur le graphique en tant que « Données ».

La valeur affichée en haut à gauche du graphique est le maximum du 90 e centile du temps de réponse.

^

Résultats d'assertion

Les résultats d'assertion NE DOIVENT PAS ÊTRE UTILISÉS pendant le test de charge car ils consomment beaucoup de ressources (mémoire et processeur). Utilisez-le uniquement pour les tests fonctionnels ou pendant le débogage et la validation du plan de test.

Le visualiseur des résultats d'assertion affiche l'étiquette de chaque échantillon prélevé. Il signale également les échecs de toutes les assertions faisant partie du plan de test.

Capture d'écran du panneau de contrôle des résultats d'assertion
Capture d'écran du panneau de contrôle des résultats d'assertion
^

Afficher l'arborescence des résultats

L'affichage de l'arborescence des résultats NE DOIT PAS ÊTRE UTILISÉ pendant le test de charge car il consomme beaucoup de ressources (mémoire et CPU). Utilisez-le uniquement pour les tests fonctionnels ou pendant le débogage et la validation du plan de test.
L'arborescence d'affichage des résultats affiche une arborescence de toutes les réponses d'échantillon, vous permettant d'afficher la réponse pour n'importe quel échantillon. En plus d'afficher la réponse, vous pouvez voir le temps qu'il a fallu pour obtenir cette réponse et certains codes de réponse. Notez que le panneau Request affiche uniquement les en-têtes ajoutés par JMeter. Il n'affiche aucun en-tête (tel que Host ) pouvant être ajouté par l'implémentation du protocole HTTP.

Il existe plusieurs façons d'afficher la réponse, sélectionnables par une liste déroulante en bas du panneau de gauche.

Moteur de renduLa description
Testeur CSS/JQuery Le testeur CSS/JQuery ne fonctionne que pour les réponses textuelles. Il affiche le texte brut dans le panneau supérieur. Le bouton « Tester » permet à l'utilisateur d'appliquer le CSS/JQuery au panneau supérieur et les résultats seront affichés dans le panneau inférieur.
Le moteur d'expression CSS/JQuery peut être JSoup ou Jodd, la syntaxe de ces 2 implémentations diffère légèrement.
Par exemple, le sélecteur a[class=sectionlink] avec l'attribut href appliqué à la page de fonctions JMeter actuelle donne la sortie suivante :
Nombre de matchs : 74
Match[1]=#fonctions
Match[2]=#what_can_do
Correspondance[3]=#où
Correspondance[4]=#comment
Correspondance[5]=#function_helper
Match[6]=#fonctions
Correspondance[7]=#__regexFonction
Correspondance[8]=#__regexFunction_parms
Match[9]=#__compteur
… etc …

Document La vue Document affichera le texte extrait de divers types de documents tels que Microsoft Office (Word, Excel, PowerPoint 97-2003, 2007-2010 (openxml), Apache OpenOffice (writer, calc, impress), HTML, gzip, jar/zip fichiers (liste du contenu), et certaines méta-données sur les fichiers "multimédia" comme mp3, mp4, flv, etc. La liste complète des formats pris en charge est disponible sur la page des formats Apache Tika.
Une exigence de la vue Document est de télécharger le package binaire Apache Tika ( tika-app-xxjar ) et de le placer dans le répertoire JMETER_HOME/lib .
Si le document fait plus de 10 Mo, il ne sera pas affiché. Pour modifier cette limite, définissez la propriété JMeter document.max_size (l'unité est un octet) ou définissez-la sur 0 pour supprimer la limite.
HTML La vue HTML tente de restituer la réponse au format HTML. Le rendu HTML est susceptible de se comparer mal à la vue que l'on obtiendrait dans n'importe quel navigateur Web ; cependant, il fournit une approximation rapide qui est utile pour l'évaluation initiale des résultats.
Les images, les feuilles de style, etc. ne sont pas téléchargées.
HTML (ressources de téléchargement) Si l' option d' affichage HTML (télécharger les ressources) est sélectionnée, le moteur de rendu peut télécharger des images, des feuilles de style, etc. référencées par le code HTML.
Source HTML formatée Si l' option d'affichage au format source HTML est sélectionnée, le moteur de rendu affichera le code source HTML formaté et nettoyé par Jsoup .
JSON La vue JSON affichera la réponse sous forme d'arborescence (gère également JSON intégré dans JavaScript).
Testeur de chemin JSON La vue JSON Path Tester vous permettra de tester vos expressions JSON-PATH et de voir les données extraites d'une réponse particulière.
Testeur JSON JMESPath La vue JSON JMESPath Tester vous permettra de tester vos expressions JMESPath et de voir les données extraites d'une réponse particulière.
Testeur d'expression régulière La vue Regexp Tester ne fonctionne que pour les réponses textuelles. Il affiche le texte brut dans le panneau supérieur. Le bouton « Test » permet à l'utilisateur d'appliquer l'expression régulière au panneau supérieur et les résultats seront affichés dans le panneau inférieur.
Le moteur d'expressions régulières est le même que celui utilisé dans l'extracteur d'expressions régulières.
Par exemple, le RE (JMeter\w*).* appliqué à la page d'accueil actuelle de JMeter donne le résultat suivant :
Nombre de matchs : 26
Match[1][0]=JMeter - Apache JMeter</title>
Correspondance[1][1]=Jmètre
Match[2][0]=JMeter" title="JMeter" border="0"/></a>
Correspondance[2][1]=Jmètre
Match[3][0]=JMeterCommitters">Contributeurs</a>
Match[3][1]=JMeterCommitters
… etc …

Le premier nombre entre [] est le numéro de correspondance ; le deuxième nombre est le groupe. Le groupe [0] correspond à tout ce qui correspond à l'ensemble de l'ER. Le groupe [1] correspond à ce qui correspond au 1 er groupe, c'est-à-dire (JMeter\w*) dans ce cas. Voir Figure 9b (ci-dessous).
Texte La vue Texte par défaut affiche tout le texte contenu dans la réponse. Notez que cela ne fonctionnera que si le type de contenu de la réponse est considéré comme du texte. Si le type de contenu commence par l'un des éléments suivants, il est considéré comme binaire, sinon il est considéré comme du texte.
image/
l'audio/
vidéo/

XML La vue XML affichera la réponse sous forme d'arborescence. Tous les nœuds DTD ou nœuds Prolog n'apparaîtront pas dans l'arborescence ; cependant, la réponse peut contenir ces nœuds. Vous pouvez cliquer avec le bouton droit sur n'importe quel nœud et développer ou réduire tous les nœuds situés en dessous.
Testeur XPath Le testeur XPath ne fonctionne que pour les réponses textuelles. Il affiche le texte brut dans le panneau supérieur. Le bouton « Tester » permet à l'utilisateur d'appliquer la requête XPath au panneau supérieur et les résultats seront affichés dans le panneau inférieur.
Testeur d'extracteur de limite Le Boundary Extractor Tester ne fonctionne que pour les réponses textuelles. Il affiche le texte brut dans le panneau supérieur. Le bouton « Tester » permet à l'utilisateur d'appliquer la requête Boundary Extractor au panneau supérieur et les résultats seront affichés dans le panneau inférieur.

Faire défiler automatiquement ? l'option permet d'afficher le dernier nœud dans la sélection de l'arbre

À partir de la version 3.2, le nombre d'entrées dans la vue est limité à la valeur de la propriété view.results.tree.max_results qui est par défaut de 500 entrées. L'ancien comportement peut être restauré en définissant la propriété sur 0 . Attention, cela peut consommer beaucoup de mémoire.

Avec l'option Rechercher , la plupart des vues permettent également de rechercher les données affichées ; le résultat de la recherche sera mis en surbrillance dans l'affichage ci-dessus. Par exemple, la capture d'écran du panneau de configuration ci-dessous montre un résultat de la recherche de " Java ". Notez que la recherche s'effectue sur le texte visible, vous pouvez donc obtenir des résultats différents lors de la recherche dans les vues Texte et HTML.
Remarque : L'expression régulière utilise le moteur Java (pas le moteur ORO comme la vue Regular Expression Extractor ou Regexp Tester).

Si aucun type de contenu n'est fourni, le contenu ne sera affiché dans aucun des panneaux de données de réponse. Vous pouvez utiliser Enregistrer les réponses dans un fichier pour enregistrer les données dans ce cas. Notez que les données de réponse seront toujours disponibles dans le résultat de l'échantillon, elles sont donc toujours accessibles à l'aide des post-processeurs.

Si les données de réponse sont supérieures à 200 Ko, elles ne seront pas affichées. Pour modifier cette limite, définissez la propriété JMeter view.results.tree.max_size . Vous pouvez également enregistrer l'intégralité de la réponse dans un fichier à l'aide de Enregistrer les réponses dans un fichier .

Des moteurs de rendu supplémentaires peuvent être créés. La classe doit implémenter l'interface org.apache.jmeter.visualizers.ResultRenderer et/ou étendre la classe abstraite org.apache.jmeter.visualizers.SamplerResultTab , et le code compilé doit être disponible pour JMeter (par exemple en l'ajoutant à la lib/ répertoire ext ).

Capture d'écran du panneau de configuration de l'arborescence des résultats d'affichage
Capture d'écran du panneau de configuration de l'arborescence des résultats d'affichage

Le panneau de configuration (ci-dessus) montre un exemple d'affichage HTML.
La figure 9 (ci-dessous) montre un exemple d'affichage XML.
La figure 9a (ci-dessous) montre un exemple d'affichage d'un testeur Regexp.
La figure 9b (ci-dessous) montre un exemple d'affichage de document.

Figure 9 Exemple d'affichage XML
Figure 9 Exemple d'affichage XML
Figure 9a Exemple d'affichage de test d'expression régulière
Figure 9a Exemple d'affichage de test d'expression régulière
Figure 9b Affichage d'un exemple de document (ici PDF)
Figure 9b Affichage d'un exemple de document (ici PDF)
^

Rapport agrégé

Le rapport agrégé crée une ligne de tableau pour chaque requête portant un nom différent dans votre test. Pour chaque demande, il totalise les informations de réponse et fournit le nombre de demandes, le min, le max, la moyenne, le taux d'erreur, le débit approximatif (requête/seconde) et le débit en kilo-octets par seconde. Une fois le test terminé, le débit est le débit réel pendant toute la durée du test.

Le débit est calculé du point de vue de la cible de l'échantillonneur (par exemple le serveur distant dans le cas des échantillons HTTP). JMeter prend en compte le temps total pendant lequel les requêtes ont été générées. Si d'autres échantillonneurs et minuteries se trouvent dans le même thread, ceux-ci augmenteront le temps total et réduiront donc la valeur de débit. Ainsi, deux échantillonneurs identiques portant des noms différents auront la moitié du débit de deux échantillonneurs portant le même nom. Il est important de choisir correctement les noms des échantillonneurs pour obtenir les meilleurs résultats du rapport agrégé.

Le calcul des valeurs de la médiane et de la ligne de 90 % (90 e centile ) nécessite de la mémoire supplémentaire. JMeter combine maintenant des échantillons avec le même temps écoulé, donc beaucoup moins de mémoire est utilisée. Cependant, pour les échantillons qui prennent plus de quelques secondes, il est probable que moins d'échantillons auront des temps identiques, auquel cas plus de mémoire sera nécessaire. Notez que vous pouvez utiliser cet écouteur par la suite pour recharger un fichier de résultats CSV ou XML, ce qui est la méthode recommandée pour éviter les impacts sur les performances. Voir le rapport de synthèse pour un récepteur similaire qui ne stocke pas d'échantillons individuels et nécessite donc une mémoire constante.

À partir de JMeter 2.12, vous pouvez configurer les 3 valeurs centiles que vous souhaitez calculer, cela peut être fait en définissant des propriétés :
  • aggregate_rpt_pct1 : par défaut au 90 e centile
  • aggregate_rpt_pct2 : par défaut au 95 e centile
  • aggregate_rpt_pct3 : par défaut au 99 e centile
  • Étiquette - L'étiquette de l'échantillon. Si « Inclure le nom du groupe dans l'étiquette ? » est sélectionné, le nom du groupe de threads est ajouté en tant que préfixe. Cela permet aux étiquettes identiques de différents groupes de fils d'être assemblées séparément si nécessaire.
  • # Samples - Le nombre d'échantillons avec la même étiquette
  • Moyenne - Le temps moyen d'un ensemble de résultats
  • Médiane - La médiane est le temps au milieu d'un ensemble de résultats. 50 % des échantillons n'ont pas pris plus de temps ; le reste a pris au moins autant de temps.
  • 90% Line - 90% des échantillons n'ont pas pris plus de temps. Les échantillons restants ont pris au moins aussi longtemps que cela. (90 e centile )
  • 95% Line - 95% des échantillons n'ont pas pris plus de temps. Les échantillons restants ont pris au moins aussi longtemps que cela. (95 e centile )
  • 99% Line - 99% des échantillons n'ont pas pris plus de temps. Les échantillons restants ont pris au moins aussi longtemps que cela. (99 e centile )
  • Min - Le temps le plus court pour les échantillons avec la même étiquette
  • Max - Le temps le plus long pour les échantillons avec la même étiquette
  • % d'erreur - Pourcentage de requêtes comportant des erreurs
  • Débit - le débit est mesuré en requêtes par seconde/minute/heure. L'unité de temps est choisie de manière à ce que le taux affiché soit d'au moins 1,0. Lorsque le débit est enregistré dans un fichier CSV, il est exprimé en requêtes/seconde, c'est-à-dire que 30,0 requêtes/minute sont enregistrées sous la forme 0,5.
  • Received KB/sec - Le débit mesuré en kilo-octets reçus par seconde
  • Sent KB/sec - Le débit mesuré en kilo-octets envoyés par seconde

Les temps sont en millisecondes.

Capture d'écran du panneau de configuration du rapport agrégé
Capture d'écran du panneau de configuration du rapport agrégé

La figure ci-dessous montre un exemple de sélection de la case à cocher " Inclure le nom du groupe ".

Goûter "
Exemple d'affichage " Inclure le nom du groupe "
^

Afficher les résultats dans le tableau

Ce visualiseur crée une ligne pour chaque résultat d'échantillon. Comme View Results Tree , ce visualiseur utilise beaucoup de mémoire.

Par défaut, il n'affiche que les échantillons principaux (parents) ; il n'affiche pas les sous-échantillons (échantillons enfants). JMeter a une case à cocher " Child Samples? ". Si cette option est sélectionnée, les sous-échantillons sont affichés à la place des échantillons principaux.

Capture d'écran du panneau de configuration de l'affichage des résultats dans le tableau
Capture d'écran du panneau de configuration des résultats d'affichage dans le tableau
^

Éditeur de données simple

Cet écouteur peut enregistrer les résultats dans un fichier mais pas dans l'interface utilisateur. Il est destiné à fournir un moyen efficace d'enregistrer des données en éliminant la surcharge de l'interface graphique. Lors de l'exécution en mode CLI, l' indicateur -l peut être utilisé pour créer un fichier de données. Les champs à enregistrer sont définis par les propriétés JMeter. Voir le fichier jmeter.properties pour plus de détails.
Capture d'écran du panneau de configuration de Simple Data Writer
Capture d'écran du panneau de configuration de Simple Data Writer
^

Graphique agrégé

Le graphique agrégé est similaire au rapport agrégé. La principale différence est que le graphique agrégé fournit un moyen simple de générer des graphiques à barres et d'enregistrer le graphique sous forme de fichier PNG.
Capture d'écran du panneau de configuration du graphique agrégé
Capture d'écran du panneau de configuration du graphique agrégé

La figure ci-dessous montre un exemple de paramétrage pour tracer ce graphique.

Paramètres du graphique agrégé
Paramètres du graphique agrégé
Veuillez noter : Tous ces paramètres ne sont pas enregistrés dans le script JMeter JMX.

Paramètres

Attribut
La description
Obligatoire
Paramètres de colonne
  • Colonnes à afficher : choisissez la ou les colonnes à afficher dans le graphique.
  • Couleur des rectangles : cliquez sur le rectangle de couleur de droite pour ouvrir une boîte de dialogue contextuelle afin de choisir une couleur personnalisée pour la colonne.
  • Couleur de premier plan Permet de changer la couleur du texte de la valeur.
  • Police de valeur : permet de définir les paramètres de police pour le texte.
  • Dessiner une barre de contours ? Pour tracer ou non la ligne de bordure sur le graphique à barres
  • Afficher le groupement de numéros ? Afficher ou non le regroupement des nombres dans les libellés de l'axe Y.
  • Étiquettes de valeur verticales ? Changer l'orientation de l'étiquette de valeur. (La valeur par défaut est horizontale)
  • Sélection d'étiquette de colonne : filtrer par étiquette de résultat. Une expression régulière peut être utilisée, exemple : .*Transaction.*
    Avant d'afficher le graphique, cliquez sur le bouton Appliquer le filtre pour actualiser les données internes.
Oui
Titre
Définissez le titre du graphique sur l'en-tête du graphique. La valeur vide est la valeur par défaut : " Aggregate Graph ". Le bouton Synchroniser avec le nom définit le titre avec le label de l'auditeur. Et définissez les paramètres de police pour le titre du graphique
Non
Taille du graphique
Calculez la taille du graphique par la largeur et la hauteur en fonction de la taille de la fenêtre actuelle de JMeter. Utilisez les champs Largeur et Hauteur pour définir une taille personnalisée. L'unité est le pixel.
Non
Paramètres de l'axe X
Définissez la longueur maximale de l'étiquette de l'axe X (en pixels).
Non
Paramètres de l'axe Y
Définissez une valeur maximale personnalisée pour l'axe Y.
Non
Légende
Définir les paramètres de placement et de police pour la légende du graphique
Oui
^

Graphique du temps de réponse

Le graphique des temps de réponse dessine un graphique linéaire montrant l'évolution du temps de réponse pendant le test, pour chaque requête étiquetée. S'il existe de nombreux échantillons pour le même horodatage, la valeur moyenne s'affiche.
Capture d'écran du panneau de configuration du graphique des temps de réponse
Capture d'écran du panneau de configuration du graphique des temps de réponse

La figure ci-dessous montre un exemple de paramétrage pour tracer ce graphique.

Paramètres du graphique des temps de réponse
Paramètres du graphique des temps de réponse
Veuillez noter : Tous ces paramètres sont enregistrés dans le fichier JMeter .jmx .

Paramètres

Attribut
La description
Obligatoire
Intervalle (ms)
Le temps en millisecondes pour l'intervalle de l'axe X. Les échantillons sont regroupés en fonction de cette valeur. Avant d'afficher le graphique, cliquez sur le bouton Appliquer l'intervalle pour actualiser les données internes.
Oui
Sélection de l'étiquette de l'échantillonneur
Filtrer par étiquette de résultat. Une expression régulière peut être utilisée, ex. .*Transaction.* . Avant d'afficher le graphique, cliquez sur le bouton Appliquer le filtre pour actualiser les données internes.
Non
Titre
Définissez le titre du graphique sur l'en-tête du graphique. La valeur vide est la valeur par défaut : " Response Time Graph ". Le bouton Synchroniser avec le nom définit le titre avec le label de l'auditeur. Et définissez les paramètres de police pour le titre du graphique
Non
Paramètres de ligne
Définissez la largeur de la ligne. Définissez le type de chaque point de valeur. Choisissez aucun pour avoir une ligne sans marque
Oui
Taille du graphique
Calculez la taille du graphique par la largeur et la hauteur en fonction de la taille de la fenêtre actuelle de JMeter. Utilisez les champs Largeur et Hauteur pour définir une taille personnalisée. L'unité est le pixel.
Non
Paramètres de l'axe X
Personnalisez le format de date de l'étiquette de l'axe X. La syntaxe est l' API Java SimpleDateFormat .
Non
Paramètres de l'axe Y
Définissez une valeur maximale personnalisée pour l'axe Y en millisecondes. Définir l'incrément pour l'échelle (en ms) Afficher ou non le regroupement des nombres dans les libellés de l'axe Y.
Non
Légende
Définir les paramètres de placement et de police pour la légende du graphique
Oui
^

Visualiseur de courrier

Le visualiseur de messagerie peut être configuré pour envoyer des e-mails si une exécution de test reçoit trop de réponses d'échec du serveur.

Capture d'écran du panneau de configuration de Mailer Visualizer
Capture d'écran du panneau de configuration de Mailer Visualizer

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
De
Adresse e-mail à partir de laquelle envoyer des messages.
Oui
Destinataire(s)
Adresse e-mail à laquelle envoyer des messages, séparés par des virgules.
Oui
Sujet de réussite
Ligne d'objet de l'e-mail pour les messages de réussite.
Non
Limite de succès
Une fois que ce nombre de réponses réussies est dépassé après avoir atteint la limite d'échec , un e-mail de réussite est envoyé. L'expéditeur n'enverra donc que des messages dans une séquence d'échec-réussite-échec-réussite, etc.
Oui
Sujet de l'échec
Ligne d'objet de l'e-mail pour les messages d'échec.
Non
Limite d'échec
Une fois que ce nombre de réponses ayant échoué est dépassé, un e-mail d'échec est envoyé - c'est-à-dire que vous définissez le nombre sur 0 pour envoyer un e-mail au premier échec.
Oui
Héberger
Adresse IP ou nom d'hôte du serveur SMTP (redirecteur d'e-mail).
Non
Port
Port du serveur SMTP (par défaut à 25 ).
Non
Connexion
Connexion utilisée pour s'authentifier.
Non
Mot de passe
Mot de passe utilisé pour s'authentifier.
Non
Sécurité de connexion
Type de cryptage pour l'authentification SMTP (SSL, TLS ou aucun).
Non
E-mail test
Appuyez sur ce bouton pour envoyer un e-mail de test
Non
Les échecs
Un champ qui conserve un total cumulé du nombre d'échecs reçus jusqu'à présent.
Non
^

Écouteur BeanShell

Le BeanShell Listener permet l'utilisation de BeanShell pour le traitement des échantillons pour la sauvegarde, etc.

Pour plus de détails sur l'utilisation de BeanShell, veuillez consulter le site Web de BeanShell.

La migration vers JSR223 Listener + Groovy est fortement recommandée pour les performances, la prise en charge des nouvelles fonctionnalités Java et la maintenance limitée de la bibliothèque BeanShell.

L'élément de test prend en charge les méthodes ThreadListener et TestListener . Ceux-ci doivent être définis dans le fichier d'initialisation. Voir le fichier BeanShellListeners.bshrc pour des exemples de définitions.

Capture d'écran du panneau de configuration de BeanShell Listener
Capture d'écran du panneau de configuration de BeanShell Listener

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence. Le nom est stocké dans la variable de script Label
Réinitialiser bsh.Interpreter avant chaque appel
Si cette option est sélectionnée, l'interpréteur sera recréé pour chaque échantillon. Cela peut être nécessaire pour certains scripts de longue durée. Pour plus d'informations, consultez Meilleures pratiques - Scripts BeanShell .
Oui
Paramètres
Paramètres à transmettre au script BeanShell. Les paramètres sont stockés dans les variables suivantes :
Paramètres
chaîne contenant les paramètres comme une seule variable
bsh.args
Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script BeanShell à exécuter. Le nom du fichier est stocké dans la variable de script FileName
Non
Scénario
Le script BeanShell à exécuter. La valeur de retour est ignorée.
Oui (sauf si un fichier de script est fourni)

Avant d'invoquer le script, certaines variables sont configurées dans l'interpréteur BeanShell :

  • log - ( Logger ) - peut être utilisé pour écrire dans le fichier journal
  • ctx - ( JMeterContext ) - donne accès au contexte
  • vars - ( JMeterVariables ) - donne un accès en lecture/écriture aux variables :
    vars.get(clé);
    vars.put(clé,val);
    vars.putObject("OBJ1",nouvel objet());
    
  • props - (JMeterProperties - classe java.util.Properties ) - par exemple props.get("START.HMS"); props.put("PROP1","1234");
  • sampleResult , prev - ( SampleResult ) - donne accès au précédent SampleResult
  • sampleEvent ( SampleEvent ) donne accès à l'événement échantillon courant

Pour plus de détails sur toutes les méthodes disponibles sur chacune des variables ci-dessus, veuillez consulter la Javadoc

Si la propriété beanshell.listener.init est définie, elle est utilisée pour charger un fichier d'initialisation, qui peut être utilisé pour définir des méthodes, etc. à utiliser dans le script BeanShell.

^

Rapport de synthèse

Le rapport récapitulatif crée une ligne de tableau pour chaque requête portant un nom différent dans votre test. Ceci est similaire au rapport agrégé , sauf qu'il utilise moins de mémoire.

Le débit est calculé du point de vue de la cible de l'échantillonneur (par exemple le serveur distant dans le cas des échantillons HTTP). JMeter prend en compte le temps total pendant lequel les requêtes ont été générées. Si d'autres échantillonneurs et minuteries se trouvent dans le même thread, ceux-ci augmenteront le temps total et réduiront donc la valeur de débit. Ainsi, deux échantillonneurs identiques portant des noms différents auront la moitié du débit de deux échantillonneurs portant le même nom. Il est important de choisir correctement les étiquettes de l'échantillonneur pour obtenir les meilleurs résultats du rapport.

  • Étiquette - L'étiquette de l'échantillon. Si « Inclure le nom du groupe dans l'étiquette ? » est sélectionné, le nom du groupe de threads est ajouté en tant que préfixe. Cela permet aux étiquettes identiques de différents groupes de fils d'être assemblées séparément si nécessaire.
  • # Samples - Le nombre d'échantillons avec la même étiquette
  • Moyenne - Le temps écoulé moyen d'un ensemble de résultats
  • Min - Le temps écoulé le plus bas pour les échantillons avec la même étiquette
  • Max - Le temps écoulé le plus long pour les échantillons avec la même étiquette
  • Std. Dév. - l' écart type du temps écoulé de l'échantillon
  • % d'erreur - Pourcentage de requêtes comportant des erreurs
  • Débit - le débit est mesuré en requêtes par seconde/minute/heure. L'unité de temps est choisie de manière à ce que le taux affiché soit d'au moins 1,0 . Lorsque le débit est enregistré dans un fichier CSV, il est exprimé en requêtes/seconde, c'est-à-dire que 30,0 requêtes/minute sont enregistrées sous la forme 0,5 .
  • Received KB/sec - Le débit mesuré en kilo-octets par seconde
  • Sent KB/sec - Le débit mesuré en kilo-octets par seconde
  • Moy. Octets - taille moyenne de l'échantillon de réponse en octets.

Les temps sont en millisecondes.

Capture d'écran du panneau de configuration du rapport de synthèse
Capture d'écran du panneau de configuration du rapport de synthèse

La figure ci-dessous montre un exemple de sélection de la case à cocher " Inclure le nom du groupe ".

Goûter "
Exemple d'affichage " Inclure le nom du groupe "
^

Enregistrer les réponses dans un fichier

Cet élément de test peut être placé n'importe où dans le plan de test. Pour chaque échantillon dans sa portée, il créera un fichier de données de réponse. Cela sert principalement à créer des tests fonctionnels, mais cela peut également être utile lorsque la réponse est trop volumineuse pour être affichée dans l' écouteur de l' arborescence des résultats . Le nom de fichier est créé à partir du préfixe spécifié, suivi d'un nombre (sauf si cette option est désactivée, voir ci-dessous). L'extension de fichier est créée à partir du type de document, s'il est connu. Si elle n'est pas connue, l'extension de fichier est définie sur ' inconnu'. Si la numérotation est désactivée et que l'ajout d'un suffixe est désactivé, le préfixe de fichier est considéré comme le nom de fichier complet. Cela permet de générer un nom de fichier fixe si nécessaire. Le nom du fichier généré est stocké dans l'exemple de réponse et peut être enregistré dans le fichier de sortie du journal de test si nécessaire.

L'échantillon actuel est enregistré en premier, suivi de tous les sous-échantillons (échantillons enfants). Si un nom de variable est fourni, les noms des fichiers sont enregistrés dans l'ordre d'apparition des sous-échantillons. Voir ci-dessous.

Capture d'écran du panneau de configuration de l'enregistrement des réponses dans un fichier
Capture d'écran du panneau de configuration de l'enregistrement des réponses dans un fichier

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Préfixe de nom de fichier (peut inclure des dossiers)
Préfixe pour les noms de fichiers générés ; cela peut inclure un nom de répertoire. Les chemins relatifs sont résolus par rapport au répertoire de travail actuel (qui est par défaut le répertoire bin/ ). JMeter supporte également les chemins relatifs au répertoire contenant le plan de test courant (fichier JMX). Si le nom du chemin commence par " ~/ " (ou tout ce qui se trouve dans la propriété JMeter jmeter.save.saveservice.base_prefix ), alors le chemin est supposé être relatif à l'emplacement du fichier JMX.
Si les dossiers parents dans le préfixe n'existent pas, JMeter les créera et arrêtera le test en cas d'échec.
Veuillez noter que le préfixe du nom de fichier ne doit pas contenir de données liées au thread, donc n'utilisez aucune variable ( ${varName} ) ou des fonctions comme ${__threadNum} dans ce champ
Oui
Nom de la variable contenant le nom du fichier enregistré
Nom d'une variable dans laquelle enregistrer le nom du fichier généré (afin qu'il puisse être utilisé ultérieurement dans le plan de test). S'il y a des sous-échantillons, un suffixe numérique est ajouté au nom de la variable. Par exemple, si le nom de la variable est FILENAME , alors le nom du fichier d'échantillon parent est enregistré dans la variable FILENAME , et les noms de fichier des échantillonneurs enfants sont enregistrés dans FILENAME1 , FILENAME2 etc.
Non
Longueur minimale du numéro de séquence
Si " Ne pas ajouter de numéro au préfixe " n'est pas coché, alors les numéros ajoutés au préfixe seront complétés par 0 afin que le préfixe ait la taille de cette valeur. La valeur par défaut est 0 .
Non
Enregistrer uniquement les réponses ayant échoué
Si cette option est sélectionnée, seules les réponses ayant échoué sont enregistrées
Oui
Enregistrer uniquement les réponses réussies
Si cette option est sélectionnée, seules les réponses réussies sont enregistrées
Oui
Ne pas ajouter de numéro au préfixe
Si sélectionné, aucun numéro n'est ajouté au préfixe. Si vous sélectionnez cette option, assurez-vous que le préfixe est unique ou le fichier peut être écrasé.
Oui
Ne pas ajouter de suffixe de type de contenu
Si sélectionné, aucun suffixe n'est ajouté. Si vous sélectionnez cette option, assurez-vous que le préfixe est unique ou le fichier peut être écrasé.
Oui
Ajouter un horodatage
Si sélectionné, la date sera incluse dans le suffixe du fichier suivant le format aaaaMMjj-HHmm_
Oui
Ne pas enregistrer le résultat de l'échantillon du contrôleur de transaction
Si sélectionné, SamplerResult généré par Transaction Controller sera ignoré
Oui
^

Auditeur JSR223

L'écouteur JSR223 permet d'appliquer le code de script JSR223 aux résultats d'échantillon.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Langue
Le langage JSR223 à utiliser
Oui
Paramètres
Paramètres à passer au script. Les paramètres sont stockés dans les variables suivantes :
Paramètres
chaîne contenant les paramètres comme une seule variable
arguments
Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script à exécuter, si un chemin de fichier relatif est utilisé, alors il sera relatif au répertoire référencé par " user.dir " Propriété système
Non
Mise en cache de compilation de scripts
Chaîne unique dans le plan de test que JMeter utilisera pour mettre en cache le résultat de la compilation du script si le langage utilisé prend en charge l'interface compilable (Groovy en fait partie, java, beanshell et javascript ne le sont pas).
Voir la note dans la propriété JSR223 Sampler Java System si vous utilisez Groovy sans cocher cette option
Non
Scénario
Le script à exécuter.
Oui (sauf si un fichier de script est fourni)

Avant d'invoquer le script, certaines variables sont configurées. Notez qu'il s'agit de variables JSR223 - c'est-à-dire qu'elles peuvent être utilisées directement dans le script.

Journal
( Logger ) - peut être utilisé pour écrire dans le fichier journal
Étiquette
l'étiquette de chaîne
Nom de fichier
le nom du fichier de script (le cas échéant)
Paramètres
les paramètres (sous forme de chaîne)
arguments
les paramètres sous la forme d'un tableau String (divisé en espaces blancs)
ctx
( JMeterContext ) - donne accès au contexte
vars
( JMeterVariables ) - donne un accès en lecture/écriture aux variables :
vars.get(clé);
vars.put(clé,val);
vars.putObject("OBJ1",nouvel objet());
vars.getObject("OBJ2");
accessoires
(JMeterProperties - classe java.util.Properties ) - par exemple props.get("START.HMS"); props.put("PROP1","1234");
exemple de résultat , précédent
( SampleResult ) - donne accès au SampleResult
exemple d'événement
( SampleEvent ) - donne accès au SampleEvent
échantillonneur
( Sampler )- donne accès au dernier sampler
DEHORS
System.out - par exemple OUT.println("message")

Pour plus de détails sur toutes les méthodes disponibles sur chacune des variables ci-dessus, veuillez consulter la Javadoc

^

Générer des résultats récapitulatifs

Cet élément de test peut être placé n'importe où dans le plan de test. Génère un résumé de l'exécution du test jusqu'à présent dans le fichier journal et/ou la sortie standard. Les totaux cumulés et différentiels sont affichés. La sortie est générée toutes les n secondes (par défaut 30 secondes) sur la limite de temps appropriée, de sorte que plusieurs tests exécutés en même temps seront synchronisés.
Puisqu'une ligne récapitulative/différentielle n'est écrite que s'il y a des échantillons émis, l'intervalle de génération peut ne pas être respecté si votre test n'a pas d'échantillon généré dans l'intervalle
Voir le fichier jmeter.properties pour les éléments de configuration du récapitulatif :
# Définissez la propriété suivante pour démarrer automatiquement un récapitulatif avec ce nom
# (s'applique uniquement au mode CLI)
#summariser.name=résumé
#
# intervalle entre les résumés (en secondes) par défaut 3 minutes
#summariser.interval=30
#
# Écrire des messages dans le fichier journal
#summariser.log=true
#
# Écrire des messages dans System.out
#summariser.out=true
Cet élément est principalement destiné aux exécutions par lots (CLI). La sortie ressemble à ceci :
label + 16 in 0:00:12 = 1.3/s Moy : 1608 Min : 1163 Max : 2009 Err : 0 (0.00%) Actif : 5 Démarré : 5 Terminé : 0
label + 82 in 0:00:30 = 2.7/s Moy : 1518 Min : 1003 Max : 2020 Err : 0 (0.00%) Actif : 5 Démarré : 5 Terminé : 0
étiquette = 98 en 0:00:42 = 2,3/s Moy : 1533 Min : 1003 Max : 2020 Err : 0 (0,00 %)
label + 85 en 0:00:30 = 2,8/s Moy : 1505 Min : 1008 Max : 2005 Err : 0 (0,00%) Actif : 5 Démarré : 5 Terminé : 0
étiquette = 183 en 0:01:13 = 2,5/s Moy : 1520 Min : 1003 Max : 2020 Err : 0 (0,00%)
label + 79 en 0:00:30 = 2,7/s Moy : 1578 Min : 1089 Max : 2012 Err : 0 (0,00%) Actif : 5 Démarré : 5 Terminé : 0
étiquette = 262 en 0:01:43 = 2,6/s Moy : 1538 Min : 1003 Max : 2020 Err : 0 (0,00%)
label + 80 en 0:00:30 = 2,7/s Moy : 1531 Min : 1013 Max : 2014 Err : 0 (0,00%) Actif : 5 Démarré : 5 Terminé : 0
étiquette = 342 en 0:02:12 = 2,6/s Moy : 1536 Min : 1003 Max : 2020 Err : 0 (0,00 %)
label + 83 in 0:00:31 = 2.7/s Moy : 1512 Min : 1003 Max : 1982 Err : 0 (0.00%) Actif : 5 Démarré : 5 Terminé : 0
étiquette = 425 en 0:02:43 = 2,6/s Moy : 1531 Min : 1003 Max : 2020 Err : 0 (0,00 %)
label + 83 in 0:00:29 = 2.8/s Moy : 1487 Min : 1023 Max : 2013 Err : 0 (0.00%) Actif : 5 Démarré : 5 Terminé : 0
étiquette = 508 en 0:03:12 = 2,6/s Moy : 1524 Min : 1003 Max : 2020 Err : 0 (0,00 %)
label + 78 en 0:00:30 = 2,6/s Moy : 1594 Min : 1013 Max : 2016 Err : 0 (0,00%) Actif : 5 Démarré : 5 Terminé : 0
étiquette = 586 en 0:03:43 = 2,6/s Moy : 1533 Min : 1003 Max : 2020 Err : 0 (0,00 %)
label + 80 en 0:00:30 = 2,7/s Moy : 1516 Min : 1013 Max : 2005 Err : 0 (0,00%) Actif : 5 Démarré : 5 Terminé : 0
étiquette = 666 en 0:04:12 = 2,6/s Moy : 1531 Min : 1003 Max : 2020 Err : 0 (0,00 %)
label + 86 en 0:00:30 = 2,9/s Moy : 1449 Min : 1004 Max : 2017 Err : 0 (0,00 %) Actif : 5 Démarré : 5 Terminé : 0
étiquette = 752 en 0:04:43 = 2,7/s Moy : 1522 Min : 1003 Max : 2020 Err : 0 (0,00 %)
label + 65 en 0:00:24 = 2,7/s Moy : 1579 Min : 1007 Max : 2003 Err : 0 (0,00 %) Actif : 0 Démarré : 5 Terminé : 5
étiquette = 817 en 0:05:07 = 2,7/s Moy : 1526 Min : 1003 Max : 2020 Err : 0 (0,00%)
Le " label " est le nom de l'élément. Le "+" signifie que la ligne est une ligne delta, c'est-à-dire qu'elle montre les changements depuis la dernière sortie.
Le "=" signifie que la ligne est une ligne de total, c'est-à-dire qu'elle indique le total cumulé.
Les entrées du fichier journal JMeter incluent également des horodatages. L'exemple " 817 en 0:05:07 = 2,7/s " signifie qu'il y a eu 817 échantillons enregistrés en 5 minutes et 7 secondes, et cela équivaut à 2,7 échantillons par seconde.
Les durées Avg (Moyenne), Min (Minimum) et Max (Maximum) sont en millisecondes.
" Err " signifie le nombre d'erreurs (également indiqué en pourcentage).
Les deux dernières lignes apparaîtront à la fin d'un test. Ils ne seront pas synchronisés avec la limite de temps appropriée. Notez que les deltas initial et final peuvent être inférieurs à l'intervalle (dans l'exemple ci-dessus, il s'agit de 30 secondes). Le premier delta sera généralement inférieur, car JMeter se synchronise sur la limite de l'intervalle. Le dernier delta sera inférieur, car le test ne se terminera généralement pas sur une limite d'intervalle exacte.

L'étiquette est utilisée pour regrouper les résultats des échantillons. Donc, si vous avez plusieurs groupes de threads et que vous souhaitez les résumer tous, utilisez la même étiquette - ou ajoutez le récapitulatif au plan de test (afin que tous les groupes de threads soient concernés). Différents regroupements de résumés peuvent être mis en œuvre en utilisant des étiquettes appropriées et en ajoutant les résumés aux parties appropriées du plan de test.

En mode CLI par défaut un écouteur Generate Summary Results nommé " summariser " est configuré, si vous en avez déjà ajouté un à votre plan de test, assurez-vous de le nommer différemment sinon les résultats seront accumulés sous cette étiquette (summary) conduisant à des résultats erronés (sum du nombre total d'échantillons + échantillons situés sous l'écouteur Parent of Generate Summary Results).
Ce n'est pas un bogue mais un choix de conception permettant de résumer à travers les groupes de threads.
Capture d'écran du panneau de configuration de la génération des résultats récapitulatifs
Capture d'écran du panneau de configuration de la génération des résultats récapitulatifs

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence. Il apparaît comme " étiquette " dans la sortie. Les détails de tous les éléments portant le même libellé seront additionnés.
Oui
^

Visualiseur d'assertion de comparaison

Le visualiseur d'assertion de comparaison affiche les résultats de tous les éléments d' assertion de comparaison .
Capture d'écran du panneau de configuration du visualiseur d'assertion de comparaison
Capture d'écran du panneau de configuration du visualiseur d'assertion de comparaison

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Oui
^

Auditeur principal

L'écouteur principal est un écouteur asynchrone qui vous permet de brancher des implémentations personnalisées de BackendListenerClient . Par défaut, une implémentation Graphite est fournie.
Capture d'écran du panneau de configuration de l'écouteur principal
Capture d'écran du panneau de configuration de l'écouteur principal

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Oui
Implémentation de l'écouteur principal
Classe de l' implémentation BackendListenerClient .
Oui
Taille de la file d'attente asynchrone
Taille de la file d'attente contenant les SampleResults pendant leur traitement asynchrone.
Oui
Paramètres
Paramètres de l' implémentation BackendListenerClient .
Oui

Les paramètres suivants s'appliquent à l' implémentation de GraphiteBackendListenerClient :

Paramètres

Attribut
La description
Obligatoire
graphiteMetricsSender
org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender ou org.apache.jmeter.visualizers.backend.graphite.PickleGraphiteMetricsSender
Oui
graphiteHôte
Hôte du serveur Graphite ou InfluxDB (avec le plug-in Graphite activé)
Oui
graphitePort
Port du serveur Graphite ou InfluxDB (avec le plug-in Graphite activé), la valeur par défaut est 2003 . Remarque PickleGraphiteMetricsSender (port 2004 ) ne peut parler qu'au serveur Graphite.
Oui
rootMetricsPrefixrootMetricsPrefix
Préfixe des métriques envoyées au backend. La valeur par défaut est " jmeter ". Notez que JMeter n'ajoute pas de séparateur entre le préfixe racine et le samplerName, c'est pourquoi le point final est actuellement nécessaire.
Oui
résuméSeulement
N'envoyez qu'un résumé sans détail. La valeur par défaut est true .
Oui
échantillonneursListe
Définit les noms (étiquettes) des résultats d'échantillon à envoyer au back-end. Si useRegexpForSamplersList=false , il s'agit d'une liste de noms séparés par des points-virgules. Si useRegexpForSamplersList=true , il s'agit d'une expression régulière qui sera comparée aux noms.
Oui
useRegexpForSamplersList
Considérez samplersList comme une expression régulière pour sélectionner les échantillonneurs pour lesquels vous souhaitez signaler les métriques au backend. La valeur par défaut est false .
Oui
centiles
Les centiles que vous souhaitez envoyer au backend. Un centile peut contenir une partie fractionnaire, par exemple 12,5 . (Le séparateur est toujours ".") La liste doit être séparée par des points-virgules. Généralement 3 ou 4 valeurs devraient être suffisantes.
Oui

Voir aussi Résultats en temps réel pour plus de détails.

Tableau de bord Grafana
Tableau de bord Grafana

Depuis JMeter 3.2, une implémentation qui permet d'écrire directement dans InfluxDB avec un schéma personnalisé. Il s'appelle InfluxdbBackendListenerClient . Les paramètres suivants s'appliquent à l' implémentation InfluxdbBackendListenerClient :

Paramètres

Attribut
La description
Obligatoire
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
Oui
influxdbUrl
URL d'afflux (exemple : http://influxHost:8086/write?db=jmeter )
Oui
influxdbToken
Jeton d'authentification InfluxDB 2 (exemple : HE9yIdAPzWJDspH_tCc2UvdKZpX== ) ; depuis 5.2.
Non
application
Nom de l'application testée. Cette valeur est stockée dans la mesure ' events ' sous la forme d'une balise nommée ' application '
Oui
la mesure
Mesure selon Influx Line Protocol Reference . La valeur par défaut est " jmeter ".
Oui
résuméSeulement
N'envoyez qu'un résumé sans détail. La valeur par défaut est true .
Oui
échantillonneursRegex
Expression régulière qui sera mise en correspondance avec les noms des échantillons et envoyée au back-end.
Oui
titre du test
Nom du test. La valeur par défaut est Nom du test . Cette valeur est stockée dans la mesure ' events ' sous la forme d'un champ nommé ' text '. JMeter génère automatiquement au début et à la fin du test une annotation avec cette valeur se terminant par 'started' et 'ended'
Oui
balises d'événement
Grafana permet d'afficher un tag pour chaque annotation. Vous pouvez les remplir ici. Cette valeur est stockée dans la mesure ' events ' sous la forme d'une balise nommée ' tags '.
Non
centiles
Les centiles que vous souhaitez envoyer au backend. Un centile peut contenir une partie fractionnaire, par exemple 12,5 (le séparateur est toujours " . "). La liste doit être séparée par des points-virgules. En général, trois ou quatre valeurs devraient suffire.
Oui
TAG_Ce que vous voulez
Vous pouvez ajouter autant de balises personnalisées que vous le souhaitez. Pour chacun d'eux, créez une nouvelle ligne et préfixez son nom par " TAG_ "
Non

Voir aussi Résultats en temps réel et Annotations Influxdb dans Grafana pour plus de détails. Il existe également une sous- section sur la configuration de l'écouteur pour InfluxDB v2 .

Depuis JMeter 5.4, une implémentation qui écrit tous les exemples de résultats dans InfluxDB. Il s'appelle InfluxDBRawBackendListenerClient . Il convient de noter que cela utilisera plus de ressources que InfluxdbBackendListenerClient , à la fois par JMeter et InfluxDB en raison de l'augmentation des données et des écritures individuelles. Les paramètres suivants s'appliquent à l' implémentation InfluxDBRawBackendListenerClient :

Paramètres

Attribut
La description
Obligatoire
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
Oui
influxdbUrl
URL d'influx (par exemple http://influxHost:8086/write?db=jmeter ou, pour le cloud, https://eu-central-1-1.aws.cloud2.influxdata.com/api/v2/write?org =org-id&bucket=jmeter)
Oui
influxdbToken
Jeton d'authentification InfluxDB 2 (par exemple HE9yIdAPzWJDspH_tCc2UvdKZpX==)
Non
la mesure
Mesure selon Influx Line Protocol Reference . La valeur par défaut est " jmeter ".
Oui
^
^

18.4 Éléments de configuration


Les éléments de configuration peuvent être utilisés pour définir des valeurs par défaut et des variables pour une utilisation ultérieure par les échantillonneurs. Notez que ces éléments sont traités au début de la portée dans laquelle ils se trouvent, c'est-à-dire avant tout échantillonneur dans la même portée.

Configuration du jeu de données CSV

CSV Data Set Config est utilisé pour lire les lignes d'un fichier et les diviser en variables. Il est plus facile à utiliser que les fonctions __CSVRead() et __StringFromFile() . Il est bien adapté à la gestion d'un grand nombre de variables et est également utile pour tester avec des valeurs "aléatoires" et uniques.

La génération de valeurs aléatoires uniques au moment de l'exécution est coûteuse en termes de CPU et de mémoire, il suffit donc de créer les données avant le test. Si nécessaire, les données "aléatoires" du fichier peuvent être utilisées en conjonction avec un paramètre d'exécution pour créer différents ensembles de valeurs à partir de chaque exécution - par exemple en utilisant la concaténation - ce qui est beaucoup moins cher que de tout générer au moment de l'exécution.

JMeter permet de citer des valeurs ; cela permet à la valeur de contenir un délimiteur. Si « autoriser les données entre guillemets » est activé, une valeur peut être entourée de guillemets doubles. Ceux-ci sont supprimés. Pour inclure des guillemets dans un champ entre guillemets, utilisez deux guillemets. Par exemple:

1,"2,3","4""5" =>
1
2,3
4"5

JMeter prend en charge les fichiers CSV qui ont une ligne d'en-tête définissant les noms de colonne. Pour l'activer, laissez le champ " Noms des variables " vide. Le délimiteur correct doit être fourni.

JMeter prend en charge les fichiers CSV avec des données citées qui incluent de nouvelles lignes.

Par défaut, le fichier n'est ouvert qu'une seule fois et chaque thread utilisera une ligne différente du fichier. Cependant, l'ordre dans lequel les lignes sont passées aux threads dépend de l'ordre dans lequel elles s'exécutent, qui peut varier entre les itérations. Les lignes sont lues au début de chaque itération de test. Le nom de fichier et le mode sont résolus lors de la première itération.

Voir la description du mode Partager ci-dessous pour des options supplémentaires. Si vous souhaitez que chaque thread ait son propre ensemble de valeurs, vous devrez créer un ensemble de fichiers, un pour chaque thread. Par exemple test1.csv , test2.csv , …, test n .csv . Utilisez le nom de fichier test${__threadNum}.csv et définissez le " Mode de partage " sur " Thread actuel ".

Les variables du jeu de données CSV sont définies au début de chaque itération de test. Comme c'est une fois le traitement de la configuration terminé, ils ne peuvent pas être utilisés pour certains éléments de configuration - tels que JDBC Config - qui traitent leur contenu au moment de la configuration (voir le bogue 40394 ). Cependant, les variables fonctionnent dans le gestionnaire d'authentification HTTP, comme le nom d' utilisateur , etc. . sont traités au moment de l'exécution.

Dans un cas particulier, la chaîne " \t " (sans guillemets) dans le champ délimiteur est traitée comme une tabulation.

Lorsque la fin du fichier ( EOF ) est atteinte et que l'option recycle est true , la lecture recommence à la première ligne du fichier.

Si l'option recycle est false et stopThread est false , toutes les variables sont définies sur <EOF> lorsque la fin du fichier est atteinte. Cette valeur peut être modifiée en définissant la propriété JMeter csvdataset.eofstring .

Si l'option Recycle est false et Stop Thread est true , atteindre EOF entraînera l'arrêt du thread.

Capture d'écran du panneau de configuration de la configuration de l'ensemble de données CSV
Capture d'écran du panneau de configuration de la configuration de l'ensemble de données CSV

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Nom de fichier
Nom du fichier à lire. Les noms de fichiers relatifs sont résolus par rapport au chemin du plan de test actif. Pour les tests distribués, le fichier CSV doit être stocké sur le système hôte du serveur dans le répertoire relatif correct où le serveur JMeter est démarré. Les noms de fichiers absolus sont également pris en charge, mais notez qu'il est peu probable qu'ils fonctionnent en mode distant, à moins que le serveur distant n'ait la même structure de répertoires. Si le même fichier physique est référencé de deux manières différentes - par exemple csvdata.txt et ./csvdata.txt - alors ceux-ci sont traités comme des fichiers différents. Si le système d'exploitation ne fait pas la distinction entre les majuscules et les minuscules, csvData.TXT sera également ouvert séparément.
Oui
Encodage de fichier
L'encodage à utiliser pour lire le fichier, sinon celui par défaut de la plateforme.
Non
Noms des variables
Liste des noms de variables. Les noms doivent être séparés par le caractère délimiteur. Ils peuvent être cités à l'aide de guillemets doubles. JMeter prend en charge les lignes d'en-tête CSV : si le champ du nom de la variable est vide, la première ligne du fichier est lue et interprétée comme la liste des noms de colonne.
Non
Utiliser la première ligne comme noms de variables
Ignorez la première ligne du fichier CSV, elle ne sera utilisée que si les noms de variables ne sont pas vides, si les noms de variables sont vides, la première ligne doit contenir les en-têtes.
Non
Délimiteur
Délimiteur à utiliser pour fractionner les enregistrements dans le fichier. S'il y a moins de valeurs sur la ligne qu'il n'y a de variables, les variables restantes ne sont pas mises à jour - elles conserveront donc leur valeur précédente (le cas échéant).
Oui
Autoriser les données citées ?
Le fichier CSV doit-il autoriser les valeurs à citer ? Si activé, les valeurs peuvent être entourées de " - guillemets doubles - permettant aux valeurs de contenir un délimiteur.
Oui
Recycler sur EOF ?
Faut-il relire le dossier depuis le début en arrivant à EOF ? (la valeur par défaut est true )
Oui
Arrêter le fil sur EOF ?
Le thread doit-il être arrêté sur EOF , si Recycle est faux ? (la valeur par défaut est false )
Oui
Mode de partage
  • Tous les threads - (par défaut) le fichier est partagé entre tous les threads.
  • Groupe de threads actuel - chaque fichier est ouvert une fois pour chaque groupe de threads dans lequel l'élément apparaît
  • Thread actuel - chaque fichier est ouvert séparément pour chaque thread
  • Identifiant - tous les threads partageant le même identifiant partagent le même fichier. Ainsi, par exemple, si vous avez 4 groupes de threads, vous pouvez utiliser un identifiant commun pour deux ou plusieurs groupes afin de partager le fichier entre eux. Ou vous pouvez utiliser le numéro de thread pour partager le fichier entre les mêmes numéros de thread dans différents groupes de threads.
Oui
^

Paramètres par défaut des requêtes FTP

Capture d'écran du panneau de configuration des valeurs par défaut des requêtes FTP
Capture d'écran du panneau de configuration des valeurs par défaut des requêtes FTP
^

Gestionnaire de cache DNS

L'élément DNS Cache Manager permet de tester les applications, qui ont plusieurs serveurs derrière des équilibreurs de charge (CDN, etc.), lorsque l'utilisateur reçoit du contenu de différentes adresses IP. Par défaut, JMeter utilise le cache DNS JVM. C'est pourquoi un seul serveur du cluster reçoit la charge. Le gestionnaire de cache DNS résout les noms de chaque thread séparément à chaque itération et enregistre les résultats de la résolution dans son cache DNS interne, qui est indépendant des caches DNS JVM et OS.

Un mappage pour les hôtes statiques peut être utilisé pour simuler quelque chose comme le fichier /etc/hosts . Ces entrées seront préférées au résolveur personnalisé. Utiliser un résolveur DNS personnalisé doit être activé si vous souhaitez utiliser ce mappage.

Utilisation de la table d'hôtes statique

Supposons que vous ayez un serveur de test, que vous souhaitez atteindre avec un nom, qui n'est pas (encore) configuré dans vos serveurs DNS. Pour notre exemple, ce serait www.example.com pour le nom du serveur, que vous souhaitez atteindre à l'adresse IP du serveur a123.another.example.org .

Vous pouvez changer de poste de travail et ajouter une entrée à votre fichier /etc/hosts - ou l'équivalent pour votre système d'exploitation, ou ajouter une entrée à la table des hôtes statiques du gestionnaire de cache DNS.

Vous devez taper www.example.com dans la première colonne ( Host ) et a123.another.example.org dans la deuxième colonne ( Hostname ou IP address ). Comme le nom de la deuxième colonne l'indique, vous pouvez même y utiliser l'adresse IP de votre serveur de test.

L'adresse IP du serveur de test sera recherchée à l'aide du résolveur DNS personnalisé. Si aucun n'est fourni, le résolveur DNS du système sera utilisé.

Vous pouvez maintenant utiliser www.example.com dans vos échantillonneurs HTTPClient4 et les requêtes seront adressées à a123.another.example.org avec tous les en-têtes définis sur www.example.com .

Capture d'écran du panneau de configuration du gestionnaire de cache DNS
Capture d'écran du panneau de configuration du gestionnaire de cache DNS
Le gestionnaire de cache DNS est conçu pour être utilisé à la racine du groupe de threads ou du plan de test. Ne le placez pas comme élément enfant d'un échantillonneur HTTP particulier
Le gestionnaire de cache DNS fonctionne uniquement avec les requêtes HTTP utilisant l'implémentation HTTPClient4.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Effacer le cache à chaque itération
Si cette option est sélectionnée, le cache DNS de chaque Thread est effacé à chaque démarrage d'une nouvelle itération.
Non
Utiliser le résolveur DNS du système
Le résolveur DNS du système sera utilisé. Pour un travail correct, modifiez $JAVA_HOME/jre/lib/security/java.security et ajoutez networkaddress.cache.ttl=0
N / A
Utiliser un résolveur DNS personnalisé
Un résolveur DNS personnalisé (de la bibliothèque dnsjava) sera utilisé.
N / A
Nom d'hôte ou adresse IP
Liste des serveurs DNS à utiliser. S'il est vide, le DNS de la configuration réseau sera utilisé.
Non
Ajouter un bouton
Ajoutez une entrée au tableau des serveurs DNS.
N / A
Bouton Supprimer
Supprimer l'entrée de table actuellement sélectionnée.
N / A
Hôte et nom d'hôte ou adresse IP
Mappage des noms d'hôte à une entrée d'hôte statique qui sera résolue à l'aide du résolveur DNS personnalisé.
Non
Bouton Ajouter un hôte statique
Ajoutez une entrée à la table des hôtes statiques.
N / A
Bouton Supprimer l'hôte statique
Supprimez l'hôte statique actuellement sélectionné dans le tableau.
N / A
^

Gestionnaire d'autorisations HTTP

Le gestionnaire d'autorisations vous permet de spécifier une ou plusieurs connexions utilisateur pour les pages Web restreintes à l'aide de l'authentification du serveur. Vous voyez ce type d'authentification lorsque vous utilisez votre navigateur pour accéder à une page restreinte et que votre navigateur affiche une boîte de dialogue de connexion. JMeter transmet les informations de connexion lorsqu'il rencontre ce type de page.

Les en-têtes d'autorisation peuvent ne pas s'afficher dans l' onglet « Requête » de Tree View Listener . L'implémentation Java effectue une authentification préemptive, mais elle ne renvoie pas l'en-tête d'autorisation lorsque JMeter récupère les en-têtes. L'implémentation HttpComponents (HC 4.5.X) est par défaut préemptive depuis 3.2 et l'en-tête sera affiché. Pour désactiver cela, définissez les valeurs comme ci-dessous, auquel cas l'authentification ne sera effectuée qu'en réponse à un défi.

Dans le fichier jmeter.properties définissez httpclient4.auth.preemptive=false

Remarque : les paramètres ci-dessus ne s'appliquent qu'à l'échantillonneur HttpClient.
Lors de la recherche d'une correspondance avec une URL, JMeter vérifie chaque entrée tour à tour et s'arrête lorsqu'il trouve la première correspondance. Ainsi, les URL les plus spécifiques doivent apparaître en premier dans la liste, suivies des moins spécifiques. Les URL en double seront ignorées. Si vous souhaitez utiliser différents noms d'utilisateur/mots de passe pour différents threads, vous pouvez utiliser des variables. Ceux-ci peuvent être configurés à l'aide d'un élément de configuration d'ensemble de données CSV (par exemple).
Capture d'écran du panneau de configuration du gestionnaire d'autorisations HTTP
Capture d'écran du panneau de configuration du gestionnaire d'autorisations HTTP
S'il existe plusieurs gestionnaires d'autorisations dans le périmètre d'un échantillonneur, il n'existe actuellement aucun moyen de spécifier lequel doit être utilisé.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Effacer l'authentification à chaque itération ?
Utilisé par l'authentification Kerberos. Si cette case est cochée, l'authentification sera effectuée à chaque itération de la boucle Main Thread Group même si elle a déjà été effectuée lors d'une précédente. Ceci est généralement utile si chaque itération de groupe de threads principaux représente le comportement d'un utilisateur virtuel.
Oui
URL de base
Une URL partielle ou complète qui correspond à une ou plusieurs URL de requête HTTP. Par exemple, supposons que vous spécifiez une URL de base de " http://localhost/restricted/ " avec un nom d' utilisateur de " jmeter " et un mot de passe de " jmeter ". Si vous envoyez une requête HTTP à l'URL " http://localhost/restricted/ant/myPage.html ", le gestionnaire d'autorisations envoie les informations de connexion pour l'utilisateur nommé " jmeter ".
Oui
Nom d'utilisateur
Le nom d'utilisateur à autoriser.
Oui
Mot de passe
Le mot de passe de l'utilisateur. (NB ceci est stocké non chiffré dans le plan de test)
Oui
Domaine
Le domaine à utiliser pour NTLM.
Non
Royaume
Domaine à utiliser pour NTLM.
Non
Mécanisme
Type d'authentification à effectuer. JMeter peut effectuer différents types d'authentifications basées sur les échantillonneurs HTTP utilisés :
Java
DE BASE
Client HTTP 4
BASIC , DIGEST et Kerberos
Non
Le domaine s'applique uniquement à l'échantillonneur HttpClient.

Configuration Kerberos :

Pour configurer Kerberos, vous devez configurer au moins deux propriétés système JVM :

  • -Djava.security.krb5.conf=krb5.conf
  • -Djava.security.auth.login.config=jaas.conf

Vous pouvez également configurer ces deux propriétés dans le fichier bin/system.properties . Regardez les deux exemples de fichiers de configuration ( krb5.conf et jaas.conf ) situés dans le dossier bin de JMeter pour des références à plus de documentation, et ajustez-les pour qu'ils correspondent à votre configuration Kerberos.

La délégation des informations d'identification est désactivée par défaut pour SPNEGO. Si vous souhaitez l'activer, vous pouvez le faire en définissant la propriété kerberos.spnego.delegate_cred sur true .

Lors de la génération d'un SPN pour l'authentification Kerberos SPNEGO, IE et Firefox omettent le numéro de port de l'URL. Chrome a une option ( --enable-auth-negotiate-port ) pour inclure le numéro de port s'il diffère des numéros standard ( 80 et 443 ). Ce comportement peut être émulé en définissant la propriété JMeter suivante comme ci-dessous.

Dans jmeter.properties ou user.properties , définissez :

  • kerberos.spnego.strip_port=false

Les contrôles:
  • Bouton Ajouter - Ajouter une entrée au tableau des autorisations.
  • Bouton Supprimer - Supprimer l'entrée de table actuellement sélectionnée.
  • Bouton Charger - Charger une table d'autorisation précédemment enregistrée et ajouter les entrées aux entrées de table d'autorisation existantes.
  • Bouton Enregistrer sous - Enregistrer la table d'autorisation actuelle dans un fichier.
Lorsque vous enregistrez le plan de test, JMeter enregistre automatiquement toutes les entrées de la table d'autorisation, y compris les mots de passe, qui ne sont pas chiffrés.
Exemple d'autorisation

Téléchargez cet exemple. Dans cet exemple, nous avons créé un plan de test sur un serveur local qui envoie trois requêtes HTTP, deux nécessitant une connexion et l'autre est ouverte à tous. Voir la figure 10 pour voir la composition de notre plan de test. Sur notre serveur, nous avons un répertoire restreint nommé « secret », qui contient deux fichiers, « index.html » et « index2.html ». Nous avons créé un identifiant de connexion nommé " kevin ", qui a un mot de passe " spot ". Ainsi, dans notre gestionnaire d'autorisations, nous avons créé une entrée pour le répertoire restreint ainsi qu'un nom d'utilisateur et un mot de passe (voir figure 11). Les deux requêtes HTTP nommées " SecretPage1 " et " SecretPage2 "/secret/index.html " et " /secret/index2.html ". L'autre requête HTTP, nommée " NoSecretPage " fait une requête à " /index.html ".

Figure 10 - Plan de test
Figure 10 - Plan de test
Figure 11 - Panneau de configuration du gestionnaire d'autorisations
Figure 11 - Panneau de configuration du gestionnaire d'autorisations

Lorsque nous exécutons le plan de test, JMeter recherche dans le tableau d'autorisation l'URL qu'il demande. Si l'URL de base correspond à l'URL, alors JMeter transmet ces informations avec la demande.

Vous pouvez télécharger le plan de test, mais comme il est conçu comme un test pour notre serveur local, vous ne pourrez pas l'exécuter. Cependant, vous pouvez l'utiliser comme référence pour construire votre propre plan de test.
^

Gestionnaire de cache HTTP

Le gestionnaire de cache HTTP est utilisé pour ajouter une fonctionnalité de mise en cache aux requêtes HTTP dans son champ d'application afin de simuler la fonctionnalité de cache du navigateur. Chaque thread d'utilisateur virtuel a son propre cache. Par défaut, Cache Manager stockera jusqu'à 5000 éléments dans le cache par thread d'utilisateur virtuel, en utilisant l'algorithme LRU. Utilisez la propriété " maxSize " pour modifier cette valeur. Notez que plus vous augmentez cette valeur, plus HTTP Cache Manager consommera de la mémoire, veillez donc à adapter l' option -Xmx JVM en conséquence.

Si un échantillon réussit (c'est-à-dire qu'il a le code de réponse 2xx ), les valeurs Last-Modified et Etag (et Expired si pertinent) sont enregistrées pour l'URL. Avant d'exécuter l'exemple suivant, l'échantillonneur vérifie s'il existe une entrée dans le cache et, si c'est le cas, les en-têtes conditionnels If-Last-Modified et If-None-Match sont définis pour la demande.

De plus, si l'option « Utiliser l'en-tête Cache-Control/Expires » est sélectionnée, la valeur Cache-Control / Expires est vérifiée par rapport à l'heure actuelle. Si la demande est une demande GET et que l'horodatage est dans le futur, l'échantillonneur revient immédiatement, sans demander l'URL au serveur distant. Ceci est destiné à imiter le comportement du navigateur. Notez que si l'en- tête Cache-Control est " no-cache ", la réponse sera stockée dans le cache comme pré-expirée, donc générera une requête GET conditionnelle. Si Cache-Control a une autre valeur, le " max-age" L'option d'expiration est traitée pour calculer la durée de vie de l'entrée, si elle est manquante, l'en-tête d'expiration sera utilisé, si l'entrée manquante sera également mise en cache comme spécifié dans la section 13.2.4 de la RFC 2616 en utilisant l'heure de dernière modification et la date de réponse.

Si le document demandé n'a pas changé depuis sa mise en cache, le corps de la réponse sera vide. De même si la date d' expiration est dans le futur. Cela peut causer des problèmes pour les Assertions.
Capture d'écran du panneau de configuration du gestionnaire de cache HTTP
Capture d'écran du panneau de configuration du gestionnaire de cache HTTP

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Effacer le cache à chaque itération
Si cette option est sélectionnée, le cache est vidé au début du thread.
Oui
Utiliser l'en-tête Cache Control/Expires lors du traitement des requêtes GET
Voir descriptif ci-dessus.
Oui
Nombre maximum d'éléments dans le cache
Voir descriptif ci-dessus.
Oui
^

L'élément Cookie Manager a deux fonctions :
premièrement, il stocke et envoie des cookies comme un navigateur Web. Si vous avez une requête HTTP et que la réponse contient un cookie, le gestionnaire de cookies stocke automatiquement ce cookie et l'utilisera pour toutes les demandes futures adressées à ce site Web particulier. Chaque thread JMeter possède sa propre "zone de stockage des cookies". Ainsi, si vous testez un site Web qui utilise un cookie pour stocker les informations de session, chaque thread JMeter aura sa propre session. Notez que ces cookies n'apparaissent pas sur l'affichage du gestionnaire de cookies, mais ils peuvent être vus à l'aide de l' écouteur de l' arborescence des résultats .

JMeter vérifie que les cookies reçus sont valides pour l'URL. Cela signifie que les cookies inter-domaines ne sont pas stockés. Si vous avez un comportement buggé ou souhaitez que les cookies inter-domaines soient utilisés, définissez la propriété JMeter " CookieManager.check.cookies=false ".

Les cookies reçus peuvent être stockés en tant que variables de thread JMeter. Pour enregistrer les cookies en tant que variables, définissez la propriété " CookieManager.save.cookies=true ". De plus, les noms des cookies sont préfixés par " COOKIE_ " avant d'être stockés (ceci évite la corruption accidentelle des variables locales) Pour revenir au comportement d'origine, définissez la propriété " CookieManager.name.prefix= " (un ou plusieurs espaces). Si activé, la valeur d'un cookie portant le nom TEST peut être appelée ${COOKIE_TEST} .

Deuxièmement, vous pouvez ajouter manuellement un cookie au gestionnaire de cookies. Cependant, si vous faites cela, le cookie sera partagé par tous les threads JMeter.

Notez que ces cookies sont créés avec une date d'expiration lointaine dans le futur

Les cookies avec des valeurs nulles sont ignorés par défaut. Cela peut être modifié en définissant la propriété JMeter : CookieManager.delete_null_cookies=false . Notez que cela s'applique également aux cookies définis manuellement - ces cookies seront supprimés de l'affichage lors de sa mise à jour. Notez également que le nom du cookie doit être unique - si un deuxième cookie est défini avec le même nom, il remplacera le premier.

Capture d'écran du panneau de configuration du gestionnaire de cookies HTTP
Capture d'écran du panneau de configuration du gestionnaire de cookies HTTP
S'il existe plusieurs gestionnaires de cookies dans le cadre d'un échantillonneur, il n'existe actuellement aucun moyen de spécifier lequel doit être utilisé. De plus, un cookie stocké dans un gestionnaire de cookies n'est disponible pour aucun autre gestionnaire, utilisez donc plusieurs gestionnaires de cookies avec précaution.
Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Effacer les cookies à chaque itération
Si cette option est sélectionnée, tous les cookies définis par le serveur sont effacés chaque fois que la boucle principale du groupe de threads est exécutée. Tous les cookies définis dans l'interface graphique ne sont pas effacés.
Oui
Politique relative aux cookies
La politique de cookies qui sera utilisée pour gérer les cookies. " standard " est la valeur par défaut depuis la version 3.0 et devrait fonctionner dans la plupart des cas. Voir Spécifications des cookies et implémentations de CookieSpec [Remarque : " ignoreCookies " équivaut à omettre le CookieManager.]
Oui
Mise en œuvre
HC4CookieHandler (API HttpClient 4.5.X). La valeur par défaut est HC4CookieHandler depuis la version 3.0.
[Remarque : si vous avez un site Web à tester avec une adresse IPv6, choisissez HC4CookieHandler (conforme à IPv6)]
Oui
Cookies définis par l'utilisateur
Cela vous donne la possibilité d'utiliser des cookies codés en dur qui seront utilisés par tous les threads lors de l'exécution du test.
Le " domaine " est le nom d'hôte du serveur (sans http:// ); le port est actuellement ignoré.
Non (découragé, sauf si vous savez ce que vous faites)
Ajouter un bouton
Ajoutez une entrée à la table des cookies.
N / A
Bouton Supprimer
Supprimer l'entrée de table actuellement sélectionnée.
N / A
Bouton de chargement
Chargez une table de cookies précédemment enregistrée et ajoutez les entrées aux entrées de table de cookies existantes.
N / A
Bouton Enregistrer sous
Enregistre la table de cookies actuelle dans un fichier (n'enregistre aucun cookie extrait des réponses HTTP).
N / A
^

Valeurs par défaut des requêtes HTTP

Cet élément vous permet de définir les valeurs par défaut utilisées par vos contrôleurs de requête HTTP. Par exemple, si vous créez un plan de test avec 25 contrôleurs de requêtes HTTP et que toutes les requêtes sont envoyées au même serveur, vous pouvez ajouter un seul élément HTTP Request Defaults avec le champ " Server Name or IP " rempli. Ensuite , lorsque vous ajoutez les 25 contrôleurs HTTP Request, laissez le champ " Server Name or IP " vide. Les contrôleurs hériteront de cette valeur de champ de l'élément HTTP Request Defaults.

Toutes les valeurs de port sont traitées de la même manière ; un échantillonneur qui ne spécifie pas de port utilisera le port HTTP Request Defaults, s'il en existe un.
Capture d'écran du panneau de configuration des valeurs par défaut des requêtes HTTP
Capture d'écran du panneau de configuration des valeurs par défaut des requêtes HTTP
Champs de configuration avancée de requête HTTP
Champs de configuration avancée de requête HTTP

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Serveur
Nom de domaine ou adresse IP du serveur Web. Par exemple , www.exemple.com . [N'incluez pas le préfixe http:// .
Non
Port
Port sur lequel le serveur Web écoute.
Non
Délai de connexion
Délai de connection dépassé. Nombre de millisecondes à attendre pour qu'une connexion s'ouvre.
Non
Délai de réponse
Délai de réponse. Nombre de millisecondes d'attente d'une réponse.
Non
Mise en œuvre
Java , HttpClient4 . S'il n'est pas spécifié, la valeur par défaut dépend de la valeur de la propriété JMeter jmeter.httpsampler , à défaut, l' implémentation Java est utilisée.
Non
Protocole
HTTP ou HTTPS .
Non
Encodage du contenu
Encodage à utiliser pour la requête.
Non
Chemin
Chemin d'accès à la ressource (par exemple, /servlets/myServlet ). Si la ressource nécessite des paramètres de chaîne de requête, ajoutez-les ci-dessous dans la section « Envoyer les paramètres avec la requête ». Notez que le chemin est le chemin par défaut pour le chemin complet, et non un préfixe à appliquer aux chemins spécifiés sur les écrans de requête HTTP.
Non
Envoyer les paramètres avec la requête
La chaîne de requête sera générée à partir de la liste de paramètres que vous fournissez. Chaque paramètre a un nom et une valeur . La chaîne de requête sera générée de la manière correcte, en fonction du choix de " Méthode " que vous avez fait (c'est-à-dire que si vous avez choisi GET , la chaîne de requête sera ajoutée à l'URL, si POST , elle sera envoyée séparément). De même, si vous envoyez un fichier à l'aide d'un formulaire en plusieurs parties, la chaîne de requête sera créée à l'aide des spécifications du formulaire en plusieurs parties.
Non
Serveur (proxy)
Nom d'hôte ou adresse IP d'un serveur proxy pour effectuer la requête. [N'incluez pas le préfixe http:// .]
Non
Port
Port sur lequel le serveur proxy écoute.
Non, sauf si le nom d'hôte du proxy est spécifié
Nom d'utilisateur
(Facultatif) nom d'utilisateur pour le serveur proxy.
Non
Mot de passe
(Facultatif) mot de passe pour le serveur proxy. (NB ceci est stocké non chiffré dans le plan de test)
Non
Récupérer toutes les ressources intégrées à partir de fichiers HTML
Dites à JMeter d'analyser le fichier HTML et d'envoyer des requêtes HTTP/HTTPS pour toutes les images, applets Java, fichiers JavaScript, CSS, etc. référencés dans le fichier.
Non
Utiliser le pool simultané
Utilisez un pool de connexions simultanées pour obtenir des ressources intégrées.
Non
Taille
Taille du pool pour les connexions simultanées utilisées pour obtenir des ressources intégrées.
Non
Les URL doivent correspondre :
S'il est présent, il doit s'agir d'une expression régulière utilisée pour établir une correspondance avec les URL intégrées trouvées. Donc, si vous souhaitez uniquement télécharger des ressources intégrées à partir de http://example.invalid/ , utilisez l'expression : http://example\.invalid/.*
Non
Les URL ne doivent pas correspondre :
S'il est présent, il doit s'agir d'une expression régulière utilisée pour filtrer toutes les URL intégrées trouvées. Donc, si vous ne voulez pas télécharger de fichiers PNG ou SVG à partir de n'importe quelle source, utilisez l'expression : .*\.(?i:svg|png)
Non
Remarque : les boutons radio n'ont que deux états - activé ou désactivé. Cela rend impossible de remplacer les paramètres de manière cohérente - est-ce que désactivé signifie désactivé ou signifie-t-il utiliser la valeur par défaut actuelle ? JMeter utilise ce dernier (sinon les valeurs par défaut ne fonctionneraient pas du tout). Ainsi, si le bouton est désactivé, un élément ultérieur peut l'activer, mais si le bouton est activé, un élément ultérieur ne peut pas le désactiver.
^

Gestionnaire d'en-tête HTTP

Le gestionnaire d'en-têtes vous permet d'ajouter ou de remplacer les en-têtes de requête HTTP.

JMeter prend désormais en charge plusieurs gestionnaires d'en-tête . Les entrées d'en-tête sont fusionnées pour former la liste de l'échantillonneur. Si une entrée à fusionner correspond à un nom d'en-tête existant, elle remplace l'entrée précédente. Cela permet de configurer un ensemble d'en-têtes par défaut et d'appliquer des ajustements à des échantillonneurs particuliers. Notez qu'une valeur vide pour un en-tête ne supprime pas un en-tête existant, elle remplace simplement sa valeur.

Capture d'écran du panneau de configuration du gestionnaire d'en-tête HTTP
Capture d'écran du panneau de configuration du gestionnaire d'en-tête HTTP

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Nom (en-tête)
Nom de l'en-tête de la requête. Deux en-têtes de requête courants que vous voudrez peut-être expérimenter sont " User-Agent " et " Referer ".
Non (vous devriez en avoir au moins un, cependant)
Évaluer
Demander la valeur d'en-tête.
Non (vous devriez en avoir au moins un, cependant)
Ajouter un bouton
Ajoutez une entrée à la table d'en-tête.
N / A
Bouton Supprimer
Supprimer l'entrée de table actuellement sélectionnée.
N / A
Bouton de chargement
Chargez une table d'en-tête précédemment enregistrée et ajoutez les entrées aux entrées de table d'en-tête existantes.
N / A
Bouton Enregistrer sous
Enregistrez la table d'en-tête actuelle dans un fichier.
N / A
Exemple de gestionnaire d'en-tête

Téléchargez cet exemple. Dans cet exemple, nous avons créé un plan de test qui indique à JMeter de remplacer l'en-tête de requête par défaut " User-Agent " et d'utiliser à la place une chaîne d'agent Internet Explorer particulière. (voir figures 12 et 13).

Figure 12 - Plan de test
Figure 12 - Plan de test
Figure 13 - Panneau de configuration du gestionnaire d'en-tête
Figure 13 - Panneau de configuration du gestionnaire d'en-tête
^

Valeurs par défaut des requêtes Java

Le composant Java Request Defaults vous permet de définir des valeurs par défaut pour les tests Java. Voir la requête Java .

Capture d'écran du panneau de configuration des valeurs par défaut des requêtes Java
Capture d'écran du panneau de configuration des valeurs par défaut des requêtes Java
^

Configuration de la connexion JDBC

Crée une connexion à la base de données (utilisée par JDBC Request Sampler) à partir des paramètres de connexion JDBC fournis. La connexion peut éventuellement être regroupée entre les threads. Sinon, chaque thread obtient sa propre connexion. Le nom de la configuration de connexion est utilisé par l'échantillonneur JDBC pour sélectionner la connexion appropriée. Le pool utilisé est DBCP, voir Paramètres de configuration BasicDataSource
Capture d'écran du panneau de configuration de la configuration de la connexion JDBC
Capture d'écran du panneau de configuration de la configuration de la connexion JDBC

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de la configuration de connexion qui s'affiche dans l'arborescence.
Non
Nom de la variable pour le pool créé
Le nom de la variable à laquelle la connexion est liée. Plusieurs connexions peuvent être utilisées, chacune liée à une variable différente, permettant aux échantillonneurs JDBC de sélectionner la connexion appropriée.
Chaque nom doit être différent. Si deux éléments de configuration portent le même nom, un seul sera enregistré. JMeter enregistre un message si un nom en double est détecté.
Oui
Nombre maximum de connexions
Nombre maximal de connexions autorisées dans le pool. Dans la plupart des cas, réglez-le sur zéro (0) . Cela signifie que chaque thread aura son propre pool avec une seule connexion, c'est-à-dire que les connexions ne sont pas partagées entre les threads.
Si vous voulez vraiment utiliser la mise en pool partagée (pourquoi ?), définissez le nombre maximal sur le même nombre que le nombre de threads pour vous assurer que les threads ne s'attendent pas les uns les autres.
Oui
Attente maximale (ms)
Le pool génère une erreur si le délai d'expiration est dépassé lors de la tentative de récupération d'une connexion, voir BasicDataSource.html#getMaxWaitMillis
Oui
Temps entre les expulsions (ms)
Le nombre de millisecondes de veille entre les exécutions du thread d'expulseur d'objet inactif. Lorsqu'il n'est pas positif, aucun thread d'éviction d'objet inactif ne sera exécuté. (Par défaut à " 60000 ", 1 minute). Voir BasicDataSource.html#getTimeBetweenEvictionRunsMillis
Oui
Validation automatique
Activez ou désactivez la validation automatique pour les connexions.
Oui
Isolement des transactions
Niveau d'isolement des transactions
Oui
Piscine préinitialisée
Le pool de connexion peut être initialisé instantanément. S'il est défini sur False (par défaut), les échantillonneurs de requêtes JDBC utilisant ce pool peuvent mesurer des temps de réponse plus élevés pour les premières requêtes, car le temps d'établissement de la connexion pour l'ensemble du pool est inclus.
Non
Instructions Init SQL séparées par une nouvelle ligne
Une collection d'instructions SQL qui seront utilisées pour initialiser les connexions physiques lors de leur première création. Ces instructions ne sont exécutées qu'une seule fois - lorsque la fabrique de connexions configurée crée la connexion.
Non
Tester en mode inactif
Testez les connexions inactives du pool, voir BasicDataSource.html#getTestWhileIdle . La requête de validation sera utilisée pour le tester.
Oui
Temps d'inactivité minimal expulsable (ms)
Durée minimale pendant laquelle une connexion peut rester inactive dans le pool avant d'être éligible à l'éviction par l'expulseur d'objet inactif, avec la condition supplémentaire qu'au moins des connexions minIdle restent dans le pool. Voir BasicDataSource.html#getSoftMinEvictableIdleTimeMillis . Par défaut à 5000 (5 secondes)
Oui
Requête de validation
Une requête simple utilisée pour déterminer si la base de données répond toujours. Il s'agit par défaut de la méthode ' isValid() ' du pilote jdbc, qui convient à de nombreuses bases de données. Cependant, certains peuvent nécessiter une requête différente ; par exemple Oracle quelque chose comme ' SELECT 1 FROM DUAL ' pourrait être utilisé.

La liste des requêtes de validation peut être configurée avec la propriété jdbc.config.check.query et sont par défaut :

hsqldb
sélectionnez 1 dans INFORMATION_SCHEMA.SYSTEM_USERS
Oracle
sélectionnez 1 parmi deux
DB2
sélectionnez 1 dans sysibm.sysdummy1
MySQL ou MariaDB
sélectionnez 1
Microsoft SQL Server (pilote MS JDBC)
sélectionnez 1
PostgreSQLName
sélectionnez 1
Ingres
sélectionnez 1
Derby
valeurs 1
H2
sélectionnez 1
Oiseau de feu
sélectionnez 1 dans la base de données rdb $
Exasol
sélectionnez 1
Notez que cette requête de validation est utilisée lors de la création du pool pour la valider même si " Test While Idle " suggère que la requête ne serait utilisée que sur les connexions inactives. C'est le comportement DBCP.
Non
URL de la base de données
Chaîne de connexion JDBC pour la base de données.
Oui
Classe de pilote JDBC
Nom qualifié complet de la classe de pilote. (Doit être dans le chemin de classe de JMeter - le plus simple est de copier le fichier .jar dans le répertoire /lib de JMeter ).

La liste des classes de pilotes jdbc préconfigurées peut être configurée avec la propriété jdbc.config.jdbc.driver.class et sont par défaut :

hsqldb
org.hsqldb.jdbc.JDBCDriver
Oracle
oracle.jdbc.OracleDriver
DB2
com.ibm.db2.jcc.DB2Driver
MySQL
com.mysql.jdbc.Driver
Microsoft SQL Server (pilote MS JDBC)
com.microsoft.sqlserver.jdbc.SQLServerDriver ou com.microsoft.jdbc.sqlserver.SQLServerDriver
PostgreSQLName
org.postgresql.Driver
Ingres
com.ingres.jdbc.IngresDriver
Derby
org.apache.derby.jdbc.ClientDriver
H2
org.h2.Driver
Oiseau de feu
org.firebirdsql.jdbc.FBDriver
Derby apache
org.apache.derby.jdbc.ClientDriver
MariaDB
org.mariadb.jdbc.Driver
SQLiteName
org.sqlite.JDBC
Sybase AES
net.sourceforge.jtds.jdbc.Driver
Exasol
com.exasol.jdbc.EXADriver
Oui
Nom d'utilisateur
Nom de l'utilisateur sous lequel se connecter.
Non
Mot de passe
Mot de passe pour se connecter. (NB ceci est stocké non chiffré dans le plan de test)
Non
Propriétés de connexion
Propriétés de connexion à définir lors de l'établissement de la connexion (comme internal_logon=sysdba pour Oracle par exemple)
Non

Des bases de données et des pilotes JDBC différents nécessitent des paramètres JDBC différents. L'URL de la base de données et la classe du pilote JDBC sont définies par le fournisseur de l'implémentation JDBC.

Certains paramètres possibles sont indiqués ci-dessous. Veuillez vérifier les détails exacts dans la documentation du pilote JDBC.

Si JMeter signale Aucun pilote approprié , cela peut signifier soit :

  • La classe de pilote est introuvable. Dans ce cas, il y aura un message de journal tel que DataSourceElement : Impossible de charger le pilote : {classname} java.lang.ClassNotFoundException : {classname}
  • La classe de pilote a été trouvée, mais la classe ne prend pas en charge la chaîne de connexion. Cela peut être dû à une erreur de syntaxe dans la chaîne de connexion ou à l'utilisation d'un nom de classe incorrect.

Si le serveur de base de données n'est pas en cours d'exécution ou n'est pas accessible, JMeter signalera une java.net.ConnectException .

Quelques exemples de bases de données et leurs paramètres sont donnés ci-dessous.

MySQL
Classe de pilote
com.mysql.jdbc.Driver
URL de la base de données
jdbc:mysql://host[:port]/dbname
PostgreSQLName
Classe de pilote
org.postgresql.Driver
URL de la base de données
jdbc:postgresql :{nombase}
Oracle
Classe de pilote
oracle.jdbc.OracleDriver
URL de la base de données
jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no} ))(connect_data=(sid={sid})))
Entrée (2006)
Classe de pilote
ingres.jdbc.IngresDriver
URL de la base de données
jdbc:ingres://host:port/db[;attr=value]
Microsoft SQL Server (pilote MS JDBC)
Classe de pilote
com.microsoft.sqlserver.jdbc.SQLServerDriver
URL de la base de données
jdbc:sqlserver://host:port;DatabaseName=dbname
Derby apache
Classe de pilote
org.apache.derby.jdbc.ClientDriver
URL de la base de données
jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;…]]
MariaDB
Classe de pilote
org.mariadb.jdbc.Driver
URL de la base de données
jdbc:mariadb://host[:port]/dbname[;URLAttributes=value[;…]]
Exasol (voir aussi la documentation du pilote JDBC )
Classe de pilote
com.exasol.jdbc.EXADriver
URL de la base de données
jdbc:exa:host[:port][;schema=SCHEMA_NAME][;prop_x=value_x]
Ce qui précède peut ne pas être correct - veuillez vérifier la documentation du pilote JDBC correspondant.
^

Configuration du magasin de clés

L'élément Keystore Config vous permet de configurer la manière dont Keystore sera chargé et les clés qu'il utilisera. Ce composant est généralement utilisé dans les scénarios HTTPS où vous ne souhaitez pas prendre en compte l'initialisation du magasin de clés dans le temps de réponse.

Pour utiliser cet élément, vous devez d'abord configurer un Java Key Store avec les certificats clients que vous souhaitez tester, pour ce faire :

  1. Créez vos certificats soit avec l'utilitaire Java keytool soit via votre PKI
  2. Si elles sont créées par PKI, importez vos clés dans Java Key Store en les convertissant dans un format acceptable par JKS
  3. Ensuite, référencez le fichier keystore via les deux propriétés JVM (ou ajoutez-les dans system.properties ):
    • -Djavax.net.ssl.keyStore=path_to_keystore
    • -Djavax.net.ssl.keyStorePassword=password_of_keystore

Pour utiliser PKCS11 comme source du magasin, vous devez définir javax.net.ssl.keyStoreType sur PKCS11 et javax.net.ssl.keyStore sur NONE .

Capture d'écran du panneau de configuration de la configuration du magasin de clés
Capture d'écran du panneau de configuration de la configuration du magasin de clés

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Précharge
Précharger ou non Keystore. Le définir sur true est généralement la meilleure option.
Oui
Nom de la variable contenant l'alias du certificat
Nom de la variable qui contiendra l'alias à utiliser pour l'authentification par certificat client. La valeur de la variable sera remplie à partir de l'ensemble de données CSV par exemple. Dans la capture d'écran, " certificat_ssl " sera également une variable dans l'ensemble de données CSV. La valeur par défaut est clientCertAliasVarName
Faux
Index de début d'alias
L'index de la première clé à utiliser dans Keystore, basé sur 0.
Oui
Index de fin d'alias
L'index de la dernière clé à utiliser dans Keystore, basé sur 0. Lorsque vous utilisez " Nom de variable contenant l'alias du certificat ", assurez-vous qu'il est suffisamment grand pour que toutes les clés soient chargées au démarrage. La valeur par défaut est -1, ce qui signifie tout charger.
Oui
Pour que JMeter utilise plusieurs certificats, vous devez vous assurer que :
  • https.use.cached.ssl.context=false est défini dans jmeter.properties ou user.properties
  • Vous utilisez l'implémentation HTTPClient 4 pour la requête HTTP
^

Élément de configuration de connexion

L'élément de configuration de connexion vous permet d'ajouter ou de remplacer les paramètres de nom d'utilisateur et de mot de passe dans les échantillonneurs qui utilisent le nom d'utilisateur et le mot de passe dans le cadre de leur configuration.

Capture d'écran du panneau de configuration de l'élément de configuration de connexion
Capture d'écran du panneau de configuration de l'élément de configuration de connexion

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Nom d'utilisateur
Le nom d'utilisateur par défaut à utiliser.
Non
Mot de passe
Le mot de passe par défaut à utiliser. (NB ceci est stocké non chiffré dans le plan de test)
Non
^

Paramètres par défaut des requêtes LDAP

Le composant LDAP Request Defaults vous permet de définir des valeurs par défaut pour les tests LDAP. Voir la requête LDAP .

Capture d'écran du panneau de configuration des valeurs par défaut des requêtes LDAP
Capture d'écran du panneau de configuration des valeurs par défaut des requêtes LDAP
^

Paramètres par défaut des requêtes étendues LDAP

Le composant LDAP Extended Request Defaults vous permet de définir des valeurs par défaut pour les tests LDAP étendus. Voir la demande étendue LDAP .

Capture d'écran du panneau de configuration des valeurs par défaut des requêtes étendues LDAP
Capture d'écran du panneau de configuration des valeurs par défaut des requêtes étendues LDAP
^

Configuration de l'échantillonneur TCP

La configuration de l'échantillonneur TCP fournit des données par défaut pour l'échantillonneur TCP

Capture d'écran du panneau de configuration de la configuration de l'échantillonneur TCP
Capture d'écran du panneau de configuration de TCP Sampler Config

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Nom de classe TCPClient
Nom de la classe TCPClient. La valeur par défaut est la propriété tcp.handler , à défaut TCPClientImpl .
Non
Nom du serveur ou IP
Nom ou IP du serveur TCP
Numéro de port
Port à utiliser
Réutiliser la connexion
Si cette option est sélectionnée, la connexion est maintenue ouverte. Sinon, il est fermé lorsque les données ont été lues.
Oui
Fermer la connexion
Si cette option est sélectionnée, la connexion sera fermée après l'exécution de l'échantillonneur.
Oui
SO_LINGER
Activer/désactiver SO_LINGER avec le temps d'attente spécifié en secondes lorsqu'un socket est créé. Si vous définissez la valeur " SO_LINGER " sur 0 , vous pouvez empêcher un grand nombre de sockets de rester avec un statut TIME_WAIT .
Non
Valeur d'octet de fin de ligne (EOL)
Valeur d'octet pour la fin de ligne, définissez-la sur une valeur en dehors de la plage -128 à +127 pour ignorer la vérification EOL. Vous pouvez également le définir dans le fichier jmeter.properties avec la propriété tcp.eolByte . Si vous définissez ceci dans TCP Sampler Config et dans le fichier jmeter.properties en même temps, la valeur de réglage dans TCP Sampler Config sera utilisée.
Non
Délai de connexion
Connect Timeout (millisecondes, 0 désactive).
Non
Délai de réponse
Délai de réponse (millisecondes, 0 désactive).
Non
Définir Nodelay
La propriété nodelay doit-elle être définie ?
Texte à envoyer
Texte à envoyer
^

Variables définies par l'utilisateur

L'élément Variables définies par l'utilisateur vous permet de définir un ensemble initial de variables , comme dans le plan de test .

Notez que tous les éléments UDV d'un plan de test - peu importe où ils se trouvent - sont traités au début.
Vous ne pouvez donc pas référencer des variables définies dans le cadre d'un test, par exemple dans un post-processeur.

Les UDV ne doivent pas être utilisées avec des fonctions qui génèrent des résultats différents à chaque fois qu'elles sont appelées. Seul le résultat du premier appel de la fonction sera enregistré dans la variable. Cependant, les UDV peuvent être utilisés avec des fonctions telles que __P() , par exemple :

HÔTE ${__P(hôte,hôte local)}

qui définirait la variable " HOST " pour avoir la valeur de la propriété JMeter " host ", par défaut à " localhost " si elle n'est pas définie.

Pour définir des variables lors d'une exécution de test, voir Paramètres utilisateur . Les UDV sont traitées dans l'ordre dans lequel elles apparaissent dans le plan, de haut en bas.

Pour plus de simplicité, il est suggéré que les UDV soient placés uniquement au début d'un groupe de threads (ou peut-être sous le plan de test lui-même).

Une fois que le plan de test et tous les UDV ont été traités, l'ensemble de variables résultant est copié dans chaque thread pour fournir l'ensemble initial de variables.

Si un élément d'exécution tel qu'un préprocesseur de paramètres utilisateur ou un extracteur d'expressions régulières définit une variable portant le même nom que l'une des variables UDV, cela remplacera la valeur initiale et tous les autres éléments de test du thread verront la mise à jour. évaluer.

Capture d'écran du panneau de configuration des variables définies par l'utilisateur
Capture d'écran du panneau de configuration des variables définies par l'utilisateur
Si vous avez plusieurs groupes de threads, assurez-vous d'utiliser des noms différents pour différentes valeurs, car les UDV sont partagés entre les groupes de threads. De plus, les variables ne peuvent pas être utilisées tant que l'élément n'a pas été traité, vous ne pouvez donc pas référencer des variables définies dans le même élément. Vous pouvez référencer des variables définies dans des VDU antérieures ou sur le plan de test.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Variables définies par l'utilisateur
Paires nom/valeur de variable. La chaîne sous la colonne " Nom " est ce que vous devrez placer entre crochets dans les constructions ${…} pour utiliser les variables ultérieurement. Le ${…} entier sera alors remplacé par la chaîne dans la colonne " Value ".
^

Variable aléatoire

L'élément de configuration de variable aléatoire est utilisé pour générer des chaînes numériques aléatoires et les stocker dans une variable pour une utilisation ultérieure. C'est plus simple que d'utiliser des variables définies par l'utilisateur avec la fonction __Random() .

La variable de sortie est construite à l'aide du générateur de nombres aléatoires, puis le nombre résultant est formaté à l'aide de la chaîne de format. Le nombre est calculé à l'aide de la formule minimum+Random.nextInt(maximum-minimum+1) . Random.nextInt() nécessite un entier positif. Cela signifie que maximum-minimum - c'est-à-dire la plage - doit être inférieur à 2147483647 , mais les valeurs minimale et maximale peuvent être des valeurs longues tant que la plage est correcte.

Comme la valeur aléatoire est évaluée au début de chaque itération, ce n'est probablement pas une bonne idée d'utiliser une variable autre qu'une propriété comme valeur pour le minimum ou le maximum. Ce serait zéro à la première itération.
Capture d'écran du panneau de configuration de la variable aléatoire
Capture d'écran du panneau de contrôle de la variable aléatoire

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Oui
Nom de variable
Nom de la variable dans laquelle stocker la chaîne aléatoire.
Oui
Formater la chaîne
La chaîne de format java.text.DecimalFormat à utiliser. Par exemple " 000 " qui générera des nombres avec au moins 3 chiffres, ou " USER_000 " qui générera une sortie de la forme USER_nnn . S'il n'est pas spécifié, la valeur par défaut consiste à générer le nombre à l'aide de Long.toString()
Non
Valeur minimum
La valeur minimale ( long ) du nombre aléatoire généré.
Oui
Valeur maximum
La valeur maximale ( long ) du nombre aléatoire généré.
Oui
Graine aléatoire
La graine du générateur de nombres aléatoires. Si vous utilisez la même valeur de départ avec Per Thread défini sur true , vous obtiendrez la même valeur pour chaque Thread selon la classe Random . Si aucune graine n'est définie, le constructeur par défaut de Random sera utilisé.
Non
Par thread (utilisateur) ?
Si False , le générateur est partagé entre tous les threads du groupe de threads. Si True , alors chaque thread a son propre générateur aléatoire.
Oui
^

Compteur

Permet à l'utilisateur de créer un compteur qui peut être référencé n'importe où dans le groupe de threads. La configuration du compteur permet à l'utilisateur de configurer un point de départ, un maximum et l'incrément. Le compteur bouclera du début au maximum, puis recommencera avec le début, continuant ainsi jusqu'à la fin du test.

Le compteur utilise un long pour stocker la valeur, donc la plage est de -2^63 à 2^63-1 .

Capture d'écran du panneau de configuration du compteur
Capture d'écran du panneau de configuration du compteur

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Valeur de départ
La valeur de départ du compteur. Le compteur sera égal à cette valeur lors de la première itération (par défaut à 0).
Non
Incrément
De combien incrémenter le compteur après chaque itération (la valeur par défaut est 0, ce qui signifie qu'il n'y a pas d'incrément).
Oui
Valeur maximum
Si le compteur dépasse le maximum, il est réinitialisé à la valeur de départ . La valeur par défaut est Long.MAX_VALUE
Non
Format
Format facultatif, par exemple 000 sera formaté comme 001 , 002 , etc. Ceci est passé à DecimalFormat , de sorte que tous les formats valides peuvent être utilisés. S'il y a un problème d'interprétation du format, il est ignoré. [Le format par défaut est généré à l'aide de Long.toString() ]
Non
Nom de la variable exportée
Ce sera le nom de la variable sous laquelle la valeur du compteur est disponible. Si vous le nommez counterA , vous pouvez ensuite y accéder en utilisant ${counterA} comme expliqué dans les valeurs définies par l'utilisateur (par défaut, il crée une variable de chaîne vide accessible en utilisant ${} mais cela est fortement déconseillé)
Non
Suivre le compteur indépendamment pour chaque utilisateur
En d'autres termes, s'agit-il d'un compteur global ou chaque utilisateur dispose-t-il de son propre compteur ? S'il n'est pas coché, le compteur est global (c'est-à-dire que l'utilisateur #1 obtiendra la valeur " 1 " et l'utilisateur # 2 obtiendra la valeur " 2 " à la première itération). Si cette case est cochée, chaque utilisateur dispose d'un compteur indépendant.
Non
Réinitialiser le compteur à chaque itération de groupe de threads
Cette option n'est disponible que lorsque le compteur est suivi par utilisateur. Si elle est cochée, le compteur sera réinitialisé à la valeur de départ à chaque itération du groupe de threads. Cela peut être utile lorsque Counter est à l'intérieur d'un contrôleur de boucle.
Non
^

Élément de configuration simple

L'élément de configuration simple vous permet d'ajouter ou de remplacer des valeurs arbitraires dans les échantillonneurs. Vous pouvez choisir le nom de la valeur et la valeur elle-même. Bien que certains utilisateurs aventureux puissent trouver une utilisation pour cet élément, il est principalement destiné aux développeurs en tant qu'interface graphique de base qu'ils peuvent utiliser lors du développement de nouveaux composants JMeter.

Capture d'écran du panneau de configuration de l'élément de configuration simple
Capture d'écran du panneau de configuration de l'élément de configuration simple

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Oui
Le nom du paramètre
Le nom de chaque paramètre. Ces valeurs sont internes au fonctionnement de JMeter et ne sont généralement pas documentées. Seuls ceux qui connaissent le code connaîtront ces valeurs.
Oui
Valeur du paramètre
La valeur à appliquer à ce paramètre.
Oui
^

Configuration source MongoDB (OBSOLÈTE)

Crée une connexion MongoDB (utilisée par MongoDB Script Sampler) à partir des paramètres de connexion fournis. Chaque thread obtient sa propre connexion. Le nom de la configuration de connexion est utilisé par l'échantillonneur JDBC pour sélectionner la connexion appropriée.

Vous pouvez ensuite accéder à l'objet com.mongodb.DB dans Beanshell ou JSR223 Test Elements via l'élément MongoDBHolder en utilisant ce code

importer com.mongodb.DB ;
importer org.apache.jmeter.protocol.mongodb.config.MongoDBHolder ;
DB db = MongoDBHolder.getDBFromSource("valeur de la propriété MongoDB Source",
            "valeur de la propriété Nom de la base de données");
…
    
Capture d'écran du panneau de configuration de la configuration de la source MongoDB (obsolète)
Capture d'écran du panneau de configuration de la configuration source de MongoDB (obsolète)

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de la configuration de connexion qui s'affiche dans l'arborescence.
Non
Liste d'adresses du serveur
Serveurs de base de données Mongo
Oui
Source MongoDB
Le nom de la variable à laquelle la connexion est liée.
Chaque nom doit être différent. Si deux éléments de configuration portent le même nom, un seul sera enregistré.
Oui
Continue d'essayer
Si true , le pilote continuera d'essayer de se connecter au même serveur au cas où le socket ne pourrait pas être établi.
Il y a un temps maximum pour continuer à réessayer, qui est de 15 secondes par défaut.
Cela peut être utile pour éviter que certaines exceptions ne soient levées lorsqu'un serveur est temporairement arrêté en bloquant les opérations.
Il peut également être utile de lisser la transition vers un nouveau nœud principal (afin qu'un nouveau nœud principal soit élu dans le délai de nouvelle tentative).
Notez que lorsque vous utilisez ce drapeau
  • pour un jeu de répliques, le pilote essaiera de se connecter à l'ancien nœud principal pendant ce temps, au lieu de basculer immédiatement vers le nouveau
  • cela n'empêche pas l'exception d'être levée dans les opérations de lecture/écriture sur le socket, qui doivent être gérées par l'application.
Même si cet indicateur est faux, le pilote dispose déjà de mécanismes pour recréer automatiquement les connexions rompues et réessayer les opérations de lecture.
La valeur par défaut est false .
Non
Connexions maximales par hôte
Non
Délai de connection dépassé
Délai d'expiration de la connexion en millisecondes.
Il est utilisé uniquement lors de l'établissement d'une nouvelle connexion Socket.connect(java.net.SocketAddress, int) La valeur
par défaut est 0 et signifie aucun délai d'attente.
Non
Délai maximal de nouvelle tentative
La durée maximale en millisecondes à consacrer à une nouvelle tentative d'ouverture de connexion au même serveur.
La valeur par défaut est 0 , ce qui signifie qu'il faut utiliser la valeur par défaut de 15 secondes si autoConnectRetry est activé.
Non
Temps d'attente maximal
Le temps d'attente maximal en millisecondes qu'un thread peut attendre pour qu'une connexion soit disponible.
La valeur par défaut est 120 000 .
Non
Délai d'expiration du socket
Le délai d'attente du socket en millisecondes Il est utilisé pour les opérations de lecture et d'écriture du socket d'E/S Socket.setSoTimeout(int) La valeur
par défaut est 0 et signifie qu'il n'y a pas de délai d'attente.
Non
Socket garder en vie
Cet indicateur contrôle la fonctionnalité socket keep alive qui maintient une connexion active à travers les pare-feu Socket.setKeepAlive(boolean) La valeur
par défaut est false .
Non
ThreadsAllowedToBlockForConnectionMultiplier
Ce multiplicateur, multiplié par le paramètre connectionsPerHost, donne le nombre maximal de threads qui peuvent attendre qu'une connexion soit disponible à partir du pool.
Tous les autres threads obtiendront immédiatement une exception.
Par exemple, si connectionsPerHost vaut 10 et threadsAllowedToBlockForConnectionMultiplier vaut 5 , jusqu'à 50 threads peuvent attendre une connexion.
La valeur par défaut est 5 .
Non
Préoccupation d'écriture : Coffre-fort
Si true , le pilote utilisera un WriteConcern de WriteConcern.SAFE pour toutes les opérations.
Si w , wtimeout , fsync ou j sont spécifiés, ce paramètre est ignoré.
La valeur par défaut est false .
Non
Problème d'écriture : Fsync
La valeur fsync du WriteConcern global .
La valeur par défaut est false .
Non
Préoccupation d'écriture : attendre le journal
La valeur j du WriteConcern global .
La valeur par défaut est false .
Non
Problème d'écriture : attendre les serveurs
La valeur w du WriteConcern global .
La valeur par défaut est 0 .
Non
Problème d'écriture : délai d'attente
La valeur wtimeout du WriteConcern global .
La valeur par défaut est 0 .
Non
Ecrire le problème : Continuer en cas d'erreur
Si les insertions par lot doivent continuer après la première erreur
Non
^
^

Configuration de la connexion par boulon

Crée un pool de connexions Bolt (utilisé par Bolt Request Sampler) à partir des paramètres de connexion fournis.
Capture d'écran du panneau de configuration de la configuration de la connexion par boulon
Capture d'écran du panneau de configuration de la configuration de la connexion par boulon

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet échantillonneur affiché dans l'arborescence.
Non
commentaires
Texte libre pour plus de détails.
Non
URI de boulon
L'URI de la base de données.
Oui
Nom d'utilisateur
Compte d'utilisateur.
Non
Mot de passe
Informations d'identification de l'utilisateur.
Non
^
^

18.5 Assertions

Les assertions sont utilisées pour effectuer des vérifications supplémentaires sur les échantillonneurs et sont traitées après chaque échantillonneur dans la même portée. Pour vous assurer qu'une assertion est appliquée uniquement à un échantillonneur particulier, ajoutez-la en tant qu'enfant de l'échantillonneur.

Remarque : Sauf indication contraire, les assertions ne sont pas appliquées aux sous-échantillons (échantillons enfants) - uniquement à l'échantillon parent. Dans le cas des assertions JSR223 et BeanShell, le script peut récupérer des sous-échantillons à l'aide de la méthode prev.getSubResults() qui renvoie un tableau de SampleResults. Le tableau sera vide s'il n'y en a pas.

Les assertions peuvent être appliquées à l'échantillon principal, aux sous-échantillons ou aux deux. La valeur par défaut consiste à appliquer l'assertion à l'échantillon principal uniquement. Si l'assertion prend en charge cette option, il y aura une entrée sur l'interface graphique qui ressemblera à ceci :

Portée de l'assertion
Portée de l'assertion
ou le suivant
Portée de l'assertion
Portée de l'assertion

Si un sous-échantillonneur échoue et que l'échantillon principal réussit, l'échantillon principal sera défini sur le statut d'échec et un résultat d'assertion sera ajouté. Si l'option de variable JMeter est utilisée, elle est supposée se rapporter à l'échantillon principal, et tout échec sera appliqué à l'échantillon principal uniquement.

La variable JMeterThread.last_sample_ok est mise à jour sur " true " ou " false " après que toutes les assertions pour un échantillonneur ont été exécutées.

Assertion de réponse

Le panneau de contrôle d'assertion de réponse vous permet d'ajouter des chaînes de modèle à comparer à divers champs de la demande ou de la réponse. Les chaînes de modèle sont :

  • Contient , Correspond aux expressions régulières de style Perl5
  • Equals , Substring : texte brut, sensible à la casse

Un résumé des caractères de correspondance de modèle peut être trouvé dans les expressions régulières ORO Perl5.

Vous pouvez également choisir si les chaînes doivent correspondre à l'intégralité de la réponse ou si la réponse ne doit contenir que le modèle. Vous pouvez attacher plusieurs assertions à n'importe quel contrôleur pour plus de flexibilité.

Notez que la chaîne de modèle ne doit pas inclure les délimiteurs englobants, c'est-à-dire utiliser Price: \d+ et non /Price: \d+/ .

Par défaut, le modèle est en mode multi-ligne, ce qui signifie que le méta-caractère " . " ne correspond pas à la nouvelle ligne. En mode multiligne, " ^ " et " $ " correspondent au début ou à la fin de n'importe quelle ligne n'importe où dans la chaîne - pas seulement au début et à la fin de la chaîne entière. Notez que \s correspond à la nouvelle ligne. Le cas est également significatif. Pour remplacer ces paramètres, on peut utiliser la syntaxe d'expression régulière étendue . Par exemple:

(?je)
ignorer la casse
(?s)
traiter la cible comme une seule ligne, c'est-à-dire " . " correspond à une nouvelle ligne
(?est)
les deux ci-dessus
Ceux-ci peuvent être utilisés n'importe où dans l'expression et restent en vigueur jusqu'à ce qu'ils soient remplacés. Par exemple
(?i) tarte aux pommes (?-i)
correspond à « AppLe Pie », mais pas à « AppLe Pie »
(?s)Pomme.+?Tarte
correspond à Apple suivi de Pie , qui peut se trouver sur une ligne suivante.
Pomme(?s).+?Tarte
comme ci-dessus, mais il est probablement plus clair d'utiliser le (?s) au début.
Capture d'écran du panneau de contrôle de l'assertion de réponse
Capture d'écran du panneau de contrôle de l'assertion de réponse

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Postuler à:
Ceci est à utiliser avec des échantillonneurs qui peuvent générer des sous-échantillons, par exemple un échantillonneur HTTP avec des ressources intégrées, un lecteur de courrier ou des échantillons générés par le contrôleur de transaction.
  • Échantillon principal uniquement - ne s'applique qu'à l'échantillon principal
  • Sous-échantillons uniquement - s'applique uniquement aux sous-échantillons
  • Échantillon principal et sous-échantillons - s'applique aux deux.
  • Nom de la variable JMeter à utiliser - l'assertion doit être appliquée au contenu de la variable nommée
Oui
Champ à tester
Indique à JMeter quel champ de la requête ou de la réponse doit être testé.
  • Réponse textuelle - le texte de la réponse du serveur, c'est-à-dire le corps, à l'exclusion de tout en-tête HTTP.
  • Données de la requête - le texte de la requête envoyé au serveur, c'est-à-dire le corps, à l'exclusion des en-têtes HTTP.
  • Code de réponse - par exemple 200
  • Message de réponse - par exemple OK
  • En- têtes de réponse , y compris les en-têtes Set-Cookie (le cas échéant)
  • En-têtes de demande
  • URL échantillonnée
  • Document (texte) - le texte extrait de divers types de documents via Apache Tika (voir la section Afficher l'arborescence des résultats de l' affichage du document).
Oui
Ignorer le statut
Demande à JMeter de définir initialement le statut sur success.

Le succès global de l'échantillon est déterminé en combinant le résultat de l'assertion avec le statut de réponse existant. Lorsque la case Ignorer le statut est cochée, le statut de la réponse est forcé à réussir avant d'évaluer l'assertion.

Les réponses HTTP avec des statuts dans les plages 4xx et 5xx sont normalement considérées comme ayant échoué. La case à cocher " Ignorer le statut " peut être utilisée pour définir le statut réussi avant d'effectuer d'autres vérifications. Notez que cela aura pour effet d'effacer tous les échecs d'assertion précédents, alors assurez-vous que cela n'est défini que sur la première assertion.
Oui
Règles de correspondance de modèle
Indique comment le texte testé est vérifié par rapport au modèle.
  • Contient - vrai si le texte contient le modèle d'expression régulière
  • Matches - true si tout le texte correspond au modèle d'expression régulière
  • Égal à - vrai si tout le texte est égal à la chaîne de modèle (sensible à la casse)
  • Sous -chaîne - vrai si le texte contient la chaîne de modèle (sensible à la casse)
Les modèles Equals et Substring sont des chaînes simples, pas des expressions régulières. NOT peut également être sélectionné pour inverser le résultat de la vérification. OU Appliquez chaque assertion dans une combinaison OU (si 1 motif à tester correspond, l'assertion sera correcte) au lieu de ET (tous les motifs doivent correspondre pour que l'assertion soit correcte).
Oui
Modèles à tester
Une liste de motifs à tester. Chaque modèle est testé séparément. Si un motif échoue, les autres motifs ne sont pas vérifiés. Il n'y a aucune différence entre la configuration d'une Assertion avec plusieurs modèles et la configuration de plusieurs Assertions avec un modèle chacune (en supposant que les autres options sont les mêmes).
Cependant, lorsque la case à cocher Ignorer le statut est sélectionnée, cela a pour effet d'annuler tous les échecs d'assertion précédents. Assurez-vous donc que la case à cocher Ignorer le statut n'est utilisée que sur la première assertion.
Oui
Message d'échec personnalisé
Permet de définir le message d'échec qui remplacera celui généré
Non

Le motif est une expression régulière de style Perl5, mais sans les parenthèses.

Exemples d'assertions
Figure 14 - Plan de test
Figure 14 - Plan de test
Figure 15 - Panneau de contrôle d'assertion avec motif
Figure 15 - Panneau de contrôle d'assertion avec motif
Figure 16 - Résultats de l'écouteur d'assertion (réussite)
Figure 16 - Résultats de l'écouteur d'assertion (réussite)
Figure 17 - Résultats de l'écouteur d'assertion (échec)
Figure 17 - Résultats de l'écouteur d'assertion (échec)
^

Assertion de durée

L'assertion de durée teste que chaque réponse a été reçue dans un laps de temps donné. Toute réponse qui prend plus de temps que le nombre de millisecondes donné (spécifié par l'utilisateur) est marquée comme une réponse ayant échoué.

Capture d'écran du panneau de configuration de l'assertion de durée
Capture d'écran du panneau de configuration de l'assertion de durée

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Durée en millisecondes
Le nombre maximal de millisecondes autorisées pour chaque réponse avant d'être marquée comme ayant échoué.
Oui
^

Assertion de taille

L'assertion de taille teste que chaque réponse contient le bon nombre d'octets. Vous pouvez spécifier que la taille soit égale, supérieure, inférieure ou différente d'un nombre d'octets donné.

Une réponse vide est traitée comme étant de 0 octet plutôt que signalée comme une erreur.
Capture d'écran du panneau de configuration de l'assertion de taille
Capture d'écran du panneau de configuration de l'assertion de taille

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Postuler à:
Ceci est à utiliser avec des échantillonneurs qui peuvent générer des sous-échantillons, par exemple un échantillonneur HTTP avec des ressources intégrées, un lecteur de courrier ou des échantillons générés par le contrôleur de transaction.
  • Échantillon principal uniquement - l'assertion ne s'applique qu'à l'échantillon principal
  • Sous-échantillons uniquement - l'assertion ne s'applique qu'aux sous-échantillons
  • Échantillon principal et sous-échantillons - l'assertion s'applique aux deux.
  • Nom de la variable JMeter à utiliser - l'assertion doit être appliquée au contenu de la variable nommée
Oui
Taille en octets
Le nombre d'octets à utiliser pour tester la taille de la réponse (ou la valeur de la variable JMeter).
Oui
Type de comparaison
S'il faut tester que la réponse est égale, supérieure, inférieure ou différente du nombre d'octets spécifié.
Oui
^

Assertion XML

L'assertion XML vérifie que les données de réponse consistent en un document XML formellement correct. Il ne valide pas le XML basé sur une DTD ou un schéma et n'effectue aucune autre validation.

Capture d'écran du panneau de configuration de l'assertion XML
Capture d'écran du panneau de configuration de l'assertion XML

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
^

Assertion BeanShell

L'assertion BeanShell permet à l'utilisateur d'effectuer une vérification d'assertion à l'aide d'un script BeanShell.

Pour plus de détails sur l'utilisation de BeanShell, veuillez consulter le site Web de BeanShell.

La migration vers JSR223 Assertion + Groovy est fortement recommandée pour les performances, la prise en charge des nouvelles fonctionnalités Java et la maintenance limitée de la bibliothèque BeanShell.

Notez qu'un interpréteur différent est utilisé pour chaque occurrence indépendante de l'assertion dans chaque thread d'un script de test, mais le même interpréteur est utilisé pour les invocations suivantes. Cela signifie que les variables persistent à travers les appels à l'assertion.

Toutes les assertions sont appelées à partir du même thread que l'échantillonneur.

Si la propriété " beanshell.assertion.init " est définie, elle est transmise à l'interpréteur en tant que nom d'un fichier sourcé. Cela peut être utilisé pour définir des méthodes et des variables communes. Il existe un exemple de fichier init dans le répertoire bin : BeanShellAssertion.bshrc

L'élément de test prend en charge les méthodes ThreadListener et TestListener . Ceux-ci doivent être définis dans le fichier d'initialisation. Voir le fichier BeanShellListeners.bshrc pour des exemples de définitions.

Capture d'écran du panneau de configuration de l'assertion BeanShell
Capture d'écran du panneau de configuration de BeanShell Assertion

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence. Le nom est stocké dans la variable de script Label
Réinitialiser bsh.Interpreter avant chaque appel
Si cette option est sélectionnée, l'interpréteur sera recréé pour chaque échantillon. Cela peut être nécessaire pour certains scripts de longue durée. Pour plus d'informations, consultez Meilleures pratiques - Scripts BeanShell .
Oui
Paramètres
Paramètres à transmettre au script BeanShell. Les paramètres sont stockés dans les variables suivantes :
  • Paramètres - chaîne contenant les paramètres comme une seule variable
  • bsh.args - Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script BeanShell à exécuter. Cela remplace le script. Le nom du fichier est stocké dans la variable de script FileName
Non
Scénario
Le script BeanShell à exécuter. La valeur de retour est ignorée.
Oui (sauf si un fichier de script est fourni)

Il existe un exemple de script que vous pouvez essayer.

Avant d'invoquer le script, certaines variables sont configurées dans l'interpréteur BeanShell. Sauf indication contraire, ce sont des chaînes :

  • log - l' objet enregistreur . (par exemple) log.warn("Message"[,Jetable])
  • SampleResult , prev - l' objet SampleResult ; lire écrire
  • Réponse - l'objet de réponse ; lire écrire
  • Échec - booléen ; lire écrire; utilisé pour définir le statut Assertion
  • Message d'échec - Chaîne ; lire écrire; utilisé pour définir le message d'assertion
  • ResponseData - le corps de la réponse (octet [])
  • ResponseCode - par exemple 200
  • ResponseMessage - par exemple OK
  • ResponseHeaders - contient les en-têtes HTTP
  • RequestHeaders - contient les en-têtes HTTP envoyés au serveur
  • ÉchantillonÉtiquette
  • SamplerData - données envoyées au serveur
  • ctx - JMeterContext
  • vars - JMeterVariables - par exemple
    vars.get("VAR1");
    vars.put("VAR2","valeur");
    vars.putObject("OBJ1",nouvel objet());
  • accessoires - JMeterProperties (classe java.util.Properties ) - par exemple
    props.get("START.HMS");
    props.put("PROP1","1234");

Les méthodes suivantes de l'objet Response peuvent être utiles :

  • setStopThread(booléen)
  • setStopTest(booléen)
  • Chaîne getSampleLabel()
  • setSampleLabel(String)
^

Assertion MD5Hex

L'assertion MD5Hex permet à l'utilisateur de vérifier le hachage MD5 des données de réponse.

Capture d'écran du panneau de configuration de l'assertion MD5Hex
Capture d'écran du panneau de configuration de l'assertion MD5Hex

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
somme MD5
32 chiffres hexadécimaux représentant le hachage MD5 (casse non significative)
Oui
^

Assertion HTML

L'assertion HTML permet à l'utilisateur de vérifier la syntaxe HTML des données de réponse à l'aide de JTidy.

Capture d'écran du panneau de configuration de l'assertion HTML
Capture d'écran du panneau de configuration de l'assertion HTML

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
doctype
omit , auto , strict ou loose
Oui
Format
HTML , XHTML ou XML
Oui
Erreurs uniquement
Noter uniquement les erreurs ?
Oui
Seuil d'erreur
Nombre d'erreurs autorisées avant de classer la réponse comme ayant échoué
Oui
Seuil d'avertissement
Nombre d'avertissements autorisés avant de classer la réponse comme ayant échoué
Oui
Nom de fichier
Nom du fichier dans lequel le rapport est écrit
Non
^

Assertion XPath

L'assertion XPath teste la bonne formation d'un document, a la possibilité de valider par rapport à une DTD ou de placer le document via JTidy et de tester un XPath. Si ce XPath existe, l'assertion est vraie. L'utilisation de " / " correspondra à tout document bien formé et constitue l'expression XPath par défaut. L'assertion prend également en charge les expressions booléennes, telles que " count(//*error)=2 ". Voir http://www.w3.org/TR/xpath pour plus d'informations sur XPath.

Quelques exemples d'expressions :
  • //title[text()='Text to match'] - correspond à <title>Text to match</title> n'importe où dans la réponse
  • /title[text()='Text to match'] - correspond à <title>Text to match</title> au niveau racine dans la réponse
Capture d'écran du panneau de configuration de l'assertion XPath
Capture d'écran du panneau de configuration de XPath Assertion

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Utiliser Tidy (analyseur tolérant)
Utiliser Tidy, c'est-à-dire être tolérant aux erreurs XML/HTML
Oui
Calme
Définit le drapeau Tidy Quiet
Si Rangement est sélectionné
Signaler les erreurs
Si une erreur Tidy se produit, définissez l'Assertion en conséquence
Si Rangement est sélectionné
Afficher les avertissements
Définit l'option Tidy showWarnings
Si Rangement est sélectionné
Utiliser des espaces de noms
Faut-il respecter les espaces de noms ? (voir note ci-dessous sur les NAMESPACES)
Si Rangement n'est pas sélectionné
Valider XML
Vérifiez le document par rapport à son schéma.
Si Rangement n'est pas sélectionné
Ignorer les espaces
Ignorer les espaces blancs de l'élément.
Si Rangement n'est pas sélectionné
Récupérer les DTD externes
Si cette option est sélectionnée, les DTD externes sont extraites.
Si Rangement n'est pas sélectionné
Assertion XPath
XPath à faire correspondre dans le document.
Oui
Inverser l'assertion (échouera si les conditions ci-dessus sont remplies)
True si une expression XPath ne correspond pas ou renvoie false
Non
L'analyseur non tolérant peut être assez lent, car il peut avoir besoin de télécharger la DTD, etc.
ESPACES DE NOMS
Pour contourner les limitations d'espace de noms de l'analyseur Xalan XPath (implémentation sur laquelle JMeter est basé), vous devez :
  • fournissez un fichier de propriétés (si par exemple votre fichier s'appelle namespaces.properties ) qui contient des mappages pour les préfixes d'espace de noms :
    prefix1=http\://foo.apache.org
    prefix2=http\://toto.apache.org
    …
    
  • référencez ce fichier dans le fichier user.properties en utilisant la propriété :
    xpath.namespace.config=espaces de noms.properties
^

Assertion XPath2

L'assertion XPath2 teste la bonne formation d'un document. L'utilisation de " / " correspondra à tout document bien formé et constitue l'expression XPath2 par défaut. L'assertion prend également en charge les expressions booléennes, telles que " count(//*error)=2 ".

Quelques exemples d'expressions :
  • //title[text()='Text to match'] - correspond à <title>Text to match</title> n'importe où dans la réponse
  • /title[text()='Text to match'] - correspond à <title>Text to match</title> au niveau racine dans la réponse
Capture d'écran du panneau de configuration de l'assertion XPath2
Capture d'écran du panneau de configuration de l'assertion XPath2

Paramètres

Attribut
La description
Obligatoire
Liste des alias des espaces de noms
Liste des alias d'espaces de noms que vous souhaitez utiliser pour analyser le document, une ligne par déclaration. Vous devez les spécifier comme suit : prefix=namespace . Cette implémentation facilite l'utilisation des espaces de noms par rapport à l'ancienne version de XPathExtractor.
Non
Assertion XPath2
XPath à faire correspondre dans le document.
Oui
Inverser l'assertion
Échouera si l'expression xpath renvoie vrai ou correspond, réussit sinon
Non
Liste des alias d'espace de noms
Liste des alias d'espace de noms préfixe=espace de noms complet (un par ligne)
Non
^

Assertion de schéma XML

L'assertion de schéma XML permet à l'utilisateur de valider une réponse par rapport à un schéma XML.

Capture d'écran du panneau de configuration de l'assertion de schéma XML
Capture d'écran du panneau de configuration de l'assertion de schéma XML

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Nom de fichier
Spécifier le nom du fichier de schéma XML
Oui
^

Assertion JSR223

L'assertion JSR223 permet d'utiliser le code de script JSR223 pour vérifier l'état de l'échantillon précédent.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Langue
Le langage JSR223 à utiliser
Oui
Paramètres
Paramètres à passer au script. Les paramètres sont stockés dans les variables suivantes :
  • Paramètres - chaîne contenant les paramètres comme une seule variable
  • args - Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script à exécuter, si un chemin de fichier relatif est utilisé, alors il sera relatif au répertoire référencé par " user.dir " Propriété système
Non
Mise en cache de compilation de scripts
Chaîne unique dans le plan de test que JMeter utilisera pour mettre en cache le résultat de la compilation du script si le langage utilisé prend en charge l'interface compilable (Groovy en fait partie, java, BeanShell et JavaScript ne le sont pas)
Voir la note dans la propriété JSR223 Sampler Java System si vous utilisez Groovy sans cocher cette option
Non
Scénario
Le script à exécuter.
Oui (sauf si un fichier de script est fourni)

Les variables suivantes sont configurées pour être utilisées par le script :

  • log - ( Logger ) - peut être utilisé pour écrire dans le fichier journal
  • Étiquette - l'étiquette de chaîne
  • Nom de fichier - le nom du fichier de script (le cas échéant)
  • Paramètres - les paramètres (sous forme de chaîne)
  • args - les paramètres sous la forme d'un tableau String (divisé en espaces)
  • ctx - ( JMeterContext ) - donne accès au contexte
  • vars - ( JMeterVariables ) - donne un accès en lecture/écriture aux variables :
    vars.get(clé);
    vars.put(clé,val);
    vars.putObject("OBJ1",nouvel objet());
    vars.getObject("OBJ2");
    
  • accessoires - (JMeterProperties - classe java.util.Properties ) - par exemple
    props.get("START.HMS");
    props.put("PROP1","1234");
    
  • SampleResult , prev - ( SampleResult ) - donne accès au SampleResult précédent (le cas échéant)
  • sampler - ( Sampler ) - donne accès au sampler courant
  • OUT - System.out - par exemple OUT.println("message")
  • AssertionResult - ( AssertionResult ) - le résultat de l'assertion

Le script peut vérifier divers aspects du SampleResult . Si une erreur est détectée, le script doit utiliser AssertionResult.setFailureMessage("message") et AssertionResult.setFailure(true) .

Pour plus de détails sur toutes les méthodes disponibles sur chacune des variables ci-dessus, veuillez consulter la Javadoc

^

Comparer l'assertion

Compare Assertion ne doit pas être utilisé pendant le test de charge car il consomme beaucoup de ressources (mémoire et CPU). Utilisez-le uniquement pour les tests fonctionnels ou pendant le débogage et la validation du plan de test.
L'assertion de comparaison peut être utilisée pour comparer des exemples de résultats dans sa portée. Le contenu ou le temps écoulé peut être comparé, et le contenu peut être filtré avant la comparaison. Les comparaisons d'assertions sont visibles dans le visualiseur d'assertions de comparaison .
Capture d'écran du panneau de configuration de l'assertion de comparaison
Capture d'écran du panneau de configuration de l'assertion de comparaison

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Comparer le contenu
Comparer ou non le contenu (données de réponse)
Oui
Comparer le temps
Si la valeur est ≥0, vérifiez si la différence de temps de réponse n'est pas supérieure à la valeur. C'est-à-dire que si la valeur est 0 , les temps de réponse doivent être exactement égaux.
Oui
Filtres de comparaison
Les filtres peuvent être utilisés pour supprimer des chaînes de la comparaison de contenu. Par exemple, si la page a un horodatage, il peut être mis en correspondance avec : " Heure : \d\d:\d\d:\d\d " et remplacé par une heure fixe fictive " Heure : HH:MM : SS ".
Non
^

Assertion SMIME

L'assertion SMIME peut être utilisée pour évaluer les exemples de résultats de l'échantillonneur de lecteur de courrier. Cette assertion vérifie si le corps d'un message mime est signé ou non. La signature peut également être vérifiée par rapport à un certificat de signataire spécifique. Comme il s'agit d'une fonctionnalité qui n'est pas nécessairement requise par la plupart des utilisateurs, des fichiers jar supplémentaires doivent être téléchargés et ajoutés à JMETER_HOME/lib :
  • bcmail-xxx.jar (SMIME/CMS de BouncyCastle)
  • bcprov-xxx.jar (Fournisseur BouncyCastle)
Ceux-ci doivent être téléchargés depuis BouncyCastle.

Si vous utilisez l' échantillonneur de lecteur de courrier , assurez-vous de sélectionner « Stocker le message à l'aide de MIME (brut) », sinon l'assertion ne pourra pas traiter le message correctement.

Capture d'écran du panneau de configuration de SMIME Assertion
Capture d'écran du panneau de configuration de SMIME Assertion

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Vérifier la signature
Si cette option est sélectionnée, l'assertion vérifiera s'il s'agit d'une signature valide selon les paramètres définis dans la case Signer Certificate .
Oui
Message non signé
Attendre ou non une signature dans le message
Oui
Certificat de signataire
" No Check " signifie qu'il n'effectuera pas de vérification de signature. « Vérifier les valeurs » est utilisé pour vérifier la signature par rapport aux entrées fournies. Et " Fichier de certificat " effectuera la vérification par rapport à un fichier de certificat spécifique.
Oui
Emplacement des messages
L'échantillonneur de courrier peut récupérer plusieurs messages dans un seul échantillon. Utilisez ce champ pour spécifier quel message sera vérifié. Les messages sont numérotés à partir de 0 , donc 0 signifie le premier message. Les nombres négatifs comptent à partir du DERNIER message ; -1 signifie DERNIER, -2 signifie avant-dernier, etc.
Oui
^

Assertion JSON

Ce composant permet d'effectuer des validations de documents JSON. Tout d'abord, il analysera le JSON et échouera si les données ne sont pas JSON. Deuxièmement, il recherchera le chemin spécifié, en utilisant la syntaxe de Jayway JsonPath 1.2.0 . Si le chemin n'est pas trouvé, il échouera. Troisièmement, si le chemin JSON a été trouvé dans le document et qu'une validation par rapport à la valeur attendue a été demandée, il effectuera la validation. Pour la valeur nulle , il y a une case à cocher spéciale dans l'interface graphique. Notez que si le chemin renvoie l'objet tableau, il sera itéré et si la valeur attendue est trouvée, l'assertion réussira. Pour valider un tableau vide, utilisez []chaîne de caractères. De plus, si patch renverra un objet dictionnaire, il sera converti en chaîne avant la comparaison.

Capture d'écran du panneau de configuration de l'assertion JSON
Capture d'écran du panneau de configuration de l'assertion JSON

Paramètres

Attribut
La description
Obligatoire
Affirmer que le chemin JSON existe
Chemin d'accès à l'élément JSON pour assert.
Oui
Valoriser en plus
Cochez la case si vous voulez faire valoir avec une certaine valeur
Non
Correspondance en tant qu'expression régulière
Cochez la case si vous voulez utiliser une expression régulière
Non
Valeur attendue
Valeur pour assert ou expression régulière pour match
Non
Attendre nul
Cochez la case si vous attendez une valeur nulle
Non
Inverser l'assertion (échouera si les conditions ci-dessus sont remplies)
Inverser l'assertion (échouera si les conditions ci-dessus sont remplies)
Non
^

Assertion JSON JMESPath

Ce composant vous permet d'effectuer une assertion sur le contenu des documents JSON à l'aide de JMESPath . Tout d'abord, il analysera le JSON et échouera si les données ne sont pas JSON.
Deuxièmement, il recherchera le chemin spécifié, en utilisant la syntaxe JMESPath.
Si le chemin n'est pas trouvé, il échouera.
Troisièmement, si le chemin JMES a été trouvé dans le document et qu'une validation par rapport à la valeur attendue a été demandée, il effectuera cette vérification supplémentaire. Si vous souhaitez vérifier la nullité, utilisez la case à cocher Expect null .
Notez que le chemin ne peut pas être nul car l'expression JMESPath ne sera pas compilée et une erreur se produira. Même si vous attendez une réponse vide ou nulle, vous devez mettre une expression JMESPath valide.

Capture d'écran du panneau de configuration de l'assertion JSON JMESPath
Capture d'écran du panneau de configuration de l'assertion JSON JMESPath

Paramètres

Attribut
La description
Obligatoire
Affirmer que JMESPath existe
Vérifiez que l'élément JMESPath vers JSON existe
Oui
Valoriser en plus
Cochez la case si vous vérifiez le JMESPath extrait par rapport à celui attendu
Non
Correspondance en tant qu'expression régulière
Cochez la case si vous souhaitez utiliser une expression régulière pour la correspondance
Non
Valeur attendue
Valeur à utiliser pour la correspondance exacte ou l'expression régulière si Correspondance en tant qu'expression régulière est cochée
Non
Attendre nul
Cochez la case si vous vous attendez à ce que la valeur soit nulle
Non
Inverser l'assertion (échouera si les conditions ci-dessus sont remplies)
Inverser l'assertion (échouera si les conditions ci-dessus sont remplies)
Non
^
^

18.6 Minuteries

Depuis la version 3.1, une nouvelle fonctionnalité (en mode bêta à partir de JMeter 3.1 et sous réserve de modifications) a été implémentée qui fournit la fonctionnalité suivante.
Vous pouvez appliquer un facteur de multiplication sur les délais de veille calculés par Random timer en définissant la propriété timer.factor=float number où float number est un nombre décimal positif.
JMeter multipliera ce facteur par le délai de veille calculé. Cette fonctionnalité peut être utilisée par :
Notez que les temporisateurs sont traités avant chaque échantillonneur dans la portée dans laquelle ils se trouvent ; s'il y a plusieurs temporisateurs dans le même oscilloscope, tous les temporisateurs seront traités avant chaque échantillonneur.
Les minuteries ne sont traitées qu'en conjonction avec un échantillonneur. Une minuterie qui n'est pas dans la même portée qu'un échantillonneur ne sera pas traitée du tout.
Pour appliquer une minuterie à un échantillonneur unique, ajoutez la minuterie en tant qu'élément enfant de l'échantillonneur. La minuterie sera appliquée avant l'exécution de l'échantillonneur. Pour appliquer une minuterie après un échantillonneur, ajoutez-la à l'échantillonneur suivant ou ajoutez-la en tant qu'enfant d'un échantillonneur d'action de contrôle de flux .

Minuterie constante

Si vous souhaitez que chaque thread s'interrompe pendant la même durée entre les requêtes, utilisez ce minuteur.

Capture d'écran du panneau de configuration de la minuterie constante
Capture d'écran du panneau de configuration de la minuterie constante

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce temporisateur affiché dans l'arborescence.
Non
Délai de fil
Nombre de millisecondes de pause.
Oui
^

Temporisateur aléatoire gaussien

Ce temporisateur met en pause chaque demande de thread pendant une durée aléatoire, la plupart des intervalles de temps se produisant près d'une valeur particulière. Le retard total est la somme de la valeur distribuée gaussienne (avec une moyenne de 0,0 et un écart type de 1,0 ) multipliée par la valeur d'écart que vous spécifiez et la valeur de décalage. Une autre façon de l'expliquer, dans Gaussian Random Timer, la variation autour d'un décalage constant a une distribution de courbe gaussienne.

Capture d'écran du panneau de configuration du minuteur aléatoire gaussien
Capture d'écran du panneau de configuration du minuteur aléatoire gaussien

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce temporisateur affiché dans l'arborescence
Non
Déviation
Déviation en millisecondes.
Oui
Décalage de retard constant
Nombre de millisecondes de pause en plus du délai aléatoire.
Oui
^

Minuterie aléatoire uniforme

Ce temporisateur met en pause chaque demande de thread pendant une durée aléatoire, chaque intervalle de temps ayant la même probabilité de se produire. Le retard total est la somme de la valeur aléatoire et de la valeur de décalage.

Capture d'écran du panneau de configuration de la minuterie aléatoire uniforme
Capture d'écran du panneau de configuration de la minuterie aléatoire uniforme

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce temporisateur affiché dans l'arborescence.
Non
Délai aléatoire maximal
Nombre aléatoire maximum de millisecondes pour mettre en pause.
Oui
Décalage de retard constant
Nombre de millisecondes de pause en plus du délai aléatoire.
Oui
^

Minuterie à débit constant

Cette minuterie introduit des pauses variables, calculées pour maintenir le débit total (en termes d'échantillons par minute) aussi proche que possible d'un chiffre donné. Bien sûr, le débit sera plus faible si le serveur n'est pas capable de le gérer, ou si d'autres temporisateurs ou éléments de test chronophages l'en empêchent.

NB bien que le temporisateur soit appelé temporisateur à débit constant, la valeur du débit n'a pas besoin d'être constante. Il peut être défini en termes d'appel de variable ou de fonction, et la valeur peut être modifiée au cours d'un test. La valeur peut être modifiée de différentes manières :

  • à l'aide d'une variable compteur
  • en utilisant une fonction __jexl3 , __groovy pour fournir une valeur changeante
  • utiliser le serveur BeanShell distant pour modifier une propriété JMeter

Voir Meilleures pratiques pour plus de détails.

Notez que la valeur de débit ne doit pas être modifiée trop souvent au cours d'un test - il faudra un certain temps pour que la nouvelle valeur prenne effet.

Capture d'écran du panneau de configuration de la minuterie à débit constant
Capture d'écran du panneau de configuration de la minuterie à débit constant

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce temporisateur affiché dans l'arborescence.
Non
Débit cible
Le débit que nous voulons que le temporisateur essaie de générer.
Oui
Calculer le débit en fonction de
  • ce thread uniquement - chaque thread tentera de maintenir le débit cible. Le débit global sera proportionnel au nombre de threads actifs.
  • tous les threads actifs dans le groupe de threads actuel - le débit cible est divisé entre tous les threads actifs du groupe. Chaque thread sera retardé selon les besoins, en fonction de la date de sa dernière exécution.
  • tous les threads actifs - le débit cible est divisé entre tous les threads actifs dans tous les groupes de threads. Chaque thread sera retardé selon les besoins, en fonction de la date de sa dernière exécution. Dans ce cas, chacun des autres groupes de threads aura besoin d'une minuterie à débit constant avec les mêmes paramètres.
  • tous les threads actifs dans le groupe de threads actuel (partagé) - comme ci-dessus, mais chaque thread est retardé en fonction de la dernière exécution d'un thread du groupe.
  • tous les threads actifs (partagés) - comme ci-dessus ; chaque thread est retardé en fonction de la dernière exécution d'un thread.
Oui

Les algorithmes partagés et non partagés visent tous deux à générer le débit souhaité et produiront des résultats similaires.
L'algorithme partagé devrait générer un taux de transaction global plus précis.
L'algorithme non partagé devrait générer une répartition plus uniforme des transactions entre les threads.

^

Minuteur de débit précis

Cette minuterie introduit des pauses variables, calculées pour maintenir le débit total (par exemple en termes d'échantillons par minute) aussi près que possible d'un chiffre donné. Bien sûr, le débit sera plus faible si le serveur n'est pas capable de le gérer, ou si d'autres minuteries, ou s'il n'y a pas assez de threads, ou des éléments de test chronophages l'en empêchent.

Bien que le minuteur soit appelé Precise Throughput Timer, il ne vise pas à produire exactement le même nombre d'échantillons sur des intervalles d'une seconde pendant le test.

La minuterie fonctionne mieux pour des débits inférieurs à 36 000 requêtes/heure, mais votre kilométrage peut varier (voir la section de surveillance ci-dessous si vos objectifs sont très différents).

Meilleur emplacement d'un temporisateur de débit précis dans un plan de test

Comme vous le savez peut-être, les temporisateurs sont hérités par tous les frères et leurs éléments enfants. C'est pourquoi l'un des meilleurs endroits pour Precise Throughput Timer est sous le premier élément d'une boucle de test. Par exemple, vous pouvez ajouter un échantillonneur factice au début et placer la minuterie sous cet échantillonneur factice.

Calendrier produit

Precise Throughput Timer modélise l'horaire des arrivées de Poisson . Ce calendrier se produit souvent dans la vie réelle, il est donc logique de l'utiliser pour les tests de charge. Par exemple, cela pourrait naturellement générer des échantillons proches les uns des autres, ce qui pourrait révéler des problèmes de concurrence. Même si vous parvenez à générer des arrivées de Poisson avec Poisson Random Timer , il serait sensible aux problèmes répertoriés ci-dessous. Par exemple, les vraies arrivées de Poisson peuvent avoir une pause indéfiniment longue, ce qui n'est pas pratique pour les tests de charge. Par exemple, les arrivées de Poisson "régulières" avec un taux de 1 par seconde peuvent se retrouver avec 50 échantillons sur un test de 60 secondes.

Constant Throughput Timer converge vers le débit spécifié, mais il a tendance à produire des échantillons à intervalles réguliers.

Montée en puissance et pic de démarrage

Vous pouvez utiliser une "accélération" ou des approches similaires pour éviter un pic au début du test. Par exemple, si vous configurez le groupe de threads pour qu'il ait 100 threads et que vous réglez la période de montée en puissance sur 0 (ou sur un petit nombre), tous les threads démarreront en même temps et cela produira un pic indésirable de la charge . De plus, si vous définissez une période de montée en puissance trop élevée, il se peut que « trop peu » de threads soient disponibles au tout début pour atteindre la charge requise.

Precise Throughput Timer planifie les exécutions de manière aléatoire, de sorte qu'il peut être utilisé pour générer une charge constante, et il est recommandé de définir à la fois la période de montée en puissance et le délai sur 0 .

Plusieurs groupes de threads commençant en même temps

Une variante du problème de montée en puissance peut apparaître lorsque le plan de test inclut plusieurs groupes de threads . Pour atténuer ce problème, on ajoute généralement un délai "aléatoire" à chaque groupe de threads afin que les threads démarrent à des moments différents.

Precise Throughput Timer évite ce problème car il planifie les exécutions de manière aléatoire. Vous n'avez pas besoin d'ajouter des délais aléatoires supplémentaires pour atténuer le pic de démarrage

Nombre d'itérations par heure

L'une des exigences de base est d'émettre N échantillons par M minutes. Soit 60 itérations par heure. Les clients professionnels ne comprendraient pas si vous rapportiez les résultats des tests de charge avec 57 exécutions "simplement parce que le hasard était aléatoire". Afin de générer 60 itérations par heure, vous devez configurer comme suit (d'autres paramètres peuvent être laissés avec leurs valeurs par défaut)

  • Débit cible (échantillons) : 60
  • Période de débit (secondes) : 3600
  • Durée du test (secondes) : 3600

Les deux premières options définissent le débit. Même si 60/3600, 30/1800 et 120/7200 représentent exactement le même niveau de charge, choisissez celui qui représente le mieux les besoins de l'entreprise. Par exemple, si l'exigence est de tester "60 échantillons par heure", alors réglez 60/3600. Si l'exigence est de tester "1 échantillon par minute", alors réglez 1/60.

La durée du test (secondes) est là pour que la minuterie assure le nombre exact d'échantillons pour une durée de test donnée. Precise Throughput Timer crée un calendrier pour les échantillons au démarrage du test. Par exemple, si vous souhaitez effectuer un test de 5 minutes avec un débit de 60 par heure, vous devez définir la durée du test (secondes) sur 300. Cela permet de configurer le débit de manière conviviale. Remarque : La durée du test (secondes) ne limite pas la durée du test. C'est juste un indice pour la minuterie.

Nombre de discussions et temps de réflexion

L'un des pièges courants consiste à ajuster le nombre de threads et les temps de réflexion afin d'obtenir le débit souhaité. Même si cela peut fonctionner, cette approche entraîne beaucoup de temps passé sur les tests. Il peut être nécessaire d'ajuster à nouveau les threads et les délais lors de l'arrivée d'une nouvelle version de l'application.

La minuterie de débit précise permet de définir un objectif de débit et d'y aller, quelle que soit la performance de l'application. Pour ce faire, Precise Throughput Timer crée un calendrier au démarrage du test, puis il utilise ce calendrier pour libérer les threads. Le principal moteur des temps de réflexion et du nombre de threads devrait être les besoins de l'entreprise, et non le désir de faire correspondre le débit d'une manière ou d'une autre.

Par exemple, si votre application est utilisée par des ingénieurs de support dans un centre d'appels. Supposons qu'il y ait 2 ingénieurs dans le centre d'appels et que le débit cible soit de 1 par minute. Supposons qu'il faille 4 minutes à l'ingénieur pour lire et réviser la page Web. Dans ce cas, vous devez définir 2 threads dans le groupe, utiliser 4 minutes pour les délais de réflexion et spécifier 1 par minute dans Precise Throughput Timer . Bien sûr, cela donnerait quelque chose autour de 2 échantillons/4 minutes = 0,5 par minute et le résultat d'un tel test signifie "vous avez besoin de plus d'ingénieurs de support dans un centre d'appels" ou "vous devez réduire le temps qu'il faut à un ingénieur pour accomplir une tâche ".

Tester des taux faibles et des tests répétables

Tester à faible cadence (par exemple 60 par heure) nécessite de connaître le profil de test souhaité. Par exemple, si vous devez injecter de la charge à intervalles réguliers (par exemple, 60 secondes entre les deux), vous feriez mieux d'utiliser Constant Throughput Timer . Cependant, si vous avez besoin d'un calendrier aléatoire (par exemple pour modéliser de vrais utilisateurs qui exécutent des rapports), alors Precise Throughput Timer est votre ami.

Lors de la comparaison des résultats de plusieurs tests de charge, il est utile de pouvoir répéter exactement le même profil de test. Par exemple, si l'action X (par exemple "Profit Report") est invoquée après 5 minutes de démarrage du test, alors il serait bien de reproduire ce modèle pour les exécutions de test suivantes. La réplication du même modèle de charge simplifie l'analyse des résultats de test (par exemple, le graphique CPU%).

La valeur de départ aléatoire (passage de 0 à aléatoire) permet de contrôler la valeur de départ utilisée par Precise Throughput Timer . Par défaut, il est initialisé avec 0 et cela signifie qu'une graine aléatoire est utilisée pour chaque exécution de test. Si vous avez besoin d'un modèle de charge reproductible, modifiez la valeur de départ aléatoire afin d'obtenir une valeur aléatoire. Le conseil général est d'utiliser une graine non nulle, et "0 par défaut" est une limite d'implémentation.

Remarque : lors de l'utilisation de plusieurs groupes de threads avec les mêmes débits et la même graine non nulle, cela peut entraîner un déclenchement indésirable des échantillons en même temps.

Tester des cadences élevées et/ou de longues durées de test

Precise Throughput Timer génère le programme et le garde en mémoire. Dans la plupart des cas, cela ne devrait pas poser de problème, cependant, rappelez-vous que vous pourriez vouloir garder le calendrier plus court que 1'000'000 d'échantillons. Il faut environ 200 ms pour générer un programme pour 1 000 000 d'échantillons, et le programme consomme 8 mégaoctets dans le tas. Le programme pour 10 millions d'entrées prend 1 à 2 secondes à construire et consomme 80 mégaoctets dans le tas.

Par exemple, si vous souhaitez effectuer un test de 2 semaines avec un taux de 5 000 par heure, vous souhaitez probablement avoir exactement 5 000 échantillons pour chaque heure. Vous pouvez définir la propriété Durée du test (secondes) de la minuterie de la minuterie sur 1 heure. Ensuite, le minuteur créerait un programme de 5 000 échantillons pour une heure, et lorsque le programme est épuisé, le minuteur générerait un programme pour l'heure suivante.

Dans le même temps, vous pouvez définir la durée du test (secondes) sur 2 semaines, et la minuterie générera un calendrier avec 168'000 échantillons = 2 semaines * 5'000 échantillons/heure = 2*7*24*500 . Le programme prendrait environ 30 ms à générer et consommerait un peu plus de 1 mégaoctet.

Charge éclatée

Il peut y avoir un cas où tous les échantillons doivent venir par paires, triplets, etc. Certains cas peuvent être résolus via Synchronizing Timer , cependant Precise Throughput Timer a un moyen natif d'émettre des demandes dans des packs. Ce comportement est désactivé par défaut, et il est contrôlé avec les paramètres "Départs groupés"

  • Nombre de threads dans le lot (threads) . Spécifie le nombre d'échantillons dans un lot. Notez que le nombre total d'échantillons sera toujours conforme au débit cible
  • Délai entre les threads dans le lot (ms) . Par exemple, s'il est défini sur 42 et que la taille du lot est de 3, les threads partiront à x, x + 42 ms, x + 84 ms

Taux de charge variable

Même si les valeurs de propriété (par exemple, le débit) peuvent être définies via des expressions, il est recommandé de conserver plus ou moins la même valeur tout au long du test, car il faut du temps pour recalculer le nouveau calendrier pour adapter les nouvelles valeurs.

Surveillance

Lors de la génération du prochain programme, Precise Throughput Timer enregistre un message sur jmeter.log : 2018-01-04 17:34:03,635 INFO oajtConstantPoissonProcessGenerator : 21 synchronisations générées (... 20 requis, taux 1,0, durée 20, lim exacte 20 000, i21) en 0 ms. First 15 events will be fired at: 1.1869653574244292 (+1.1869653574244292), 1.4691340403043207 (+0.2821686828798915), 3.638151706179226 (+2.169017665874905), 3.836357090410566 (+0.19820538423134026), 4.709330071408575 (+0.8729729809980085), 5.61330076999953 (+0.903970698590955), ... Cela montre que la génération de planification a pris 0 ms et affiche des horodatages absolus en secondes. Dans le cas ci-dessus, le taux a été défini sur 1 par seconde et les horodatages réels sont devenus 1,2 s, 1,5 s, 3,6 s, 3,8 s, 4,7 s, etc.

Capture d'écran du panneau de commande de la minuterie de débit précis
Capture d'écran du panneau de commande de la minuterie de débit précis

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce temporisateur affiché dans l'arborescence
Non
Débit cible (en échantillons par 'période de débit')
Nombre maximal d'échantillons que vous souhaitez obtenir par "période de débit", y compris tous les threads du groupe, à partir de tous les échantillonneurs concernés.
Oui
Période de débit (secondes)
Période de débit. Par exemple, si "débit" est défini sur 42 et "période de débit" sur 21 secondes, vous obtiendrez 2 échantillons par seconde.
Oui
Durée du test (secondes)
Ceci est utilisé pour garantir que vous obtiendrez des échantillons de débit * durée pendant la période de "durée du test".
Oui
Nombre de threads dans le lot (threads)
Si la valeur dépasse 1, plusieurs threads quittent le minuteur simultanément. Le débit moyen correspond toujours à la valeur "débit".
Oui
Délai entre les threads dans le lot (ms)
Par exemple, s'il est défini sur 42 et que la taille du lot est de 3, les threads partiront à x, x+42ms, x+84ms.
Oui
Graine aléatoire (passage de 0 à aléatoire)
Remarque : il est préférable que différentes minuteries aient des valeurs de départ différentes. L'amorçage constant garantit que la minuterie génère les mêmes retards à chaque démarrage du test. La valeur "0" signifie que le temporisateur est véritablement aléatoire (non répétable d'une exécution à l'autre).
Oui
^

Minuterie de synchronisation

Le but du SyncTimer est de bloquer les threads jusqu'à ce qu'un nombre X de threads aient été bloqués, puis ils sont tous libérés en même temps. Un SyncTimer peut ainsi créer de grandes charges instantanées à différents points du plan de test.

Capture d'écran du panneau de commande de la minuterie de synchronisation
Capture d'écran du panneau de commande de la minuterie de synchronisation

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce temporisateur affiché dans l'arborescence.
Non
Nombre d'utilisateurs simultanés à regrouper par
Nombre de threads à libérer en une fois. Le définir sur 0 équivaut à le définir sur Nombre de threads dans le groupe de threads.
Oui
Délai d'attente en millisecondes
S'il est défini sur 0 , Timer attendra que le nombre de threads atteigne la valeur dans " Nombre d'utilisateurs simultanés à grouper ". S'il est supérieur à 0 , le timer attendra au maximum " Timeout in milliseconds " pour le nombre de Threads. Si après l'intervalle de temps imparti, le nombre d'utilisateurs en attente n'est pas atteint, la minuterie s'arrêtera d'attendre. Par défaut à 0
Non
Si le délai d'attente en millisecondes est défini sur 0 et que le nombre de threads n'atteint jamais " Nombre d'utilisateurs simultanés à regrouper par ", le test s'arrêtera indéfiniment. Seul un arrêt forcé l'arrêtera. Le réglage du délai d'attente en millisecondes est une option à considérer dans ce cas.
Synchronisation des blocs de minuterie uniquement dans une JVM, donc si vous utilisez des tests distribués, assurez-vous de ne jamais définir " Nombre d'utilisateurs simultanés à regrouper par " sur une valeur supérieure au nombre d'utilisateurs de son groupe Thread contenant en considérant 1 injecteur uniquement.
^

Minuterie BeanShell

Le minuteur BeanShell peut être utilisé pour générer un délai.

Pour plus de détails sur l'utilisation de BeanShell, veuillez consulter le site Web de BeanShell.

La migration vers JSR223 Timer + Groovy est fortement recommandée pour les performances, la prise en charge des nouvelles fonctionnalités Java et la maintenance limitée de la bibliothèque BeanShell.

L'élément de test prend en charge les méthodes ThreadListener et TestListener . Ceux-ci doivent être définis dans le fichier d'initialisation. Voir le fichier BeanShellListeners.bshrc pour des exemples de définitions.

Capture d'écran du panneau de configuration de BeanShell Timer
Capture d'écran du panneau de configuration de BeanShell Timer

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence. Le nom est stocké dans la variable de script Label
Non
Réinitialiser bsh.Interpreter avant chaque appel
Si cette option est sélectionnée, l'interpréteur sera recréé pour chaque échantillon. Cela peut être nécessaire pour certains scripts de longue durée. Pour plus d'informations, consultez Meilleures pratiques - Scripts BeanShell .
Oui
Paramètres
Paramètres à transmettre au script BeanShell. Les paramètres sont stockés dans les variables suivantes :
  • Paramètres - chaîne contenant les paramètres comme une seule variable
  • bsh.args - Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script BeanShell à exécuter. Le nom du fichier est stocké dans la variable de script FileName La valeur de retour est utilisée comme nombre de millisecondes à attendre.
Non
Scénario
Le script BeanShell. La valeur de retour est utilisée comme nombre de millisecondes à attendre.
Oui (sauf si un fichier de script est fourni)

Avant d'invoquer le script, certaines variables sont configurées dans l'interpréteur BeanShell :

  • log - ( Logger ) - peut être utilisé pour écrire dans le fichier journal
  • ctx - ( JMeterContext ) - donne accès au contexte
  • vars - ( JMeterVariables ) - donne un accès en lecture/écriture aux variables :
    vars.get(clé);
    vars.put(clé,val);
    vars.putObject("OBJ1",nouvel objet());
    
  • props - (JMeterProperties - classe java.util.Properties) - par exemple props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - donne accès au précédent SampleResult (le cas échéant)

Pour plus de détails sur toutes les méthodes disponibles sur chacune des variables ci-dessus, veuillez consulter la Javadoc

Si la propriété beanshell.timer.init est définie, elle est utilisée pour charger un fichier d'initialisation, qui peut être utilisé pour définir des méthodes, etc. à utiliser dans le script BeanShell.

^

Minuterie JSR223

Le temporisateur JSR223 peut être utilisé pour générer un délai à l'aide d'un langage de script JSR223,

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Langage de script
Langage de script à utiliser.
Oui
Paramètres
Paramètres à passer au script. Les paramètres sont stockés dans les variables suivantes :
  • Paramètres - chaîne contenant les paramètres comme une seule variable
  • args - Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script à exécuter, si un chemin de fichier relatif est utilisé, alors il sera relatif au répertoire référencé par " user.dir " Propriété système La valeur de retour est convertie en un entier long et utilisée comme nombre de millisecondes à attendre .
Non
Mise en cache de compilation de scripts
Chaîne unique sur le plan de test que JMeter utilisera pour mettre en cache le résultat de la compilation du script si le langage utilisé prend en charge l'interface compilable (Groovy en fait partie, java, beanshell et javascript ne le sont pas)
Voir la note dans la propriété JSR223 Sampler Java System si vous utilisez Groovy sans cocher cette option
Non
Scénario
Le scénario. La valeur de retour est utilisée comme nombre de millisecondes à attendre.
Oui (sauf si un fichier de script est fourni)

Avant d'invoquer le script, certaines variables sont configurées dans l'interpréteur de script :

  • log - ( Logger ) - peut être utilisé pour écrire dans le fichier journal
  • ctx - ( JMeterContext ) - donne accès au contexte
  • vars - ( JMeterVariables ) - donne un accès en lecture/écriture aux variables :
    vars.get(clé);
    vars.put(clé,val);
    vars.putObject("OBJ1",nouvel objet());
  • props - (JMeterProperties - classe java.util.Properties) - par exemple props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - ( Sampler ) - le Sampler actuel
  • Étiquette - le nom de la minuterie
  • FileName - le nom du fichier (le cas échéant)
  • OUT - System.out

Pour plus de détails sur toutes les méthodes disponibles sur chacune des variables ci-dessus, veuillez consulter la Javadoc

^

Minuterie aléatoire de Poisson

Ce temporisateur met en pause chaque demande de thread pendant une durée aléatoire, la plupart des intervalles de temps se produisant près d'une valeur particulière. Le retard total est la somme de la valeur distribuée de Poisson et de la valeur de décalage.

Remarque : si vous souhaitez modéliser les arrivées de Poisson, envisagez plutôt d'utiliser Precise Throughput Timer .

Capture d'écran du panneau de contrôle de la minuterie aléatoire de Poisson
Capture d'écran du panneau de contrôle de la minuterie aléatoire de Poisson

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce temporisateur affiché dans l'arborescence
Non
Lambda
Valeur lambda en millisecondes.
Oui
Décalage de retard constant
Nombre de millisecondes de pause en plus du délai aléatoire.
Oui
^
^

18.7 Préprocesseurs


Les préprocesseurs sont utilisés pour modifier les échantillonneurs dans leur portée.

Ce modificateur analyse la réponse HTML du serveur et extrait les liens et les formulaires. Un échantillon de test d'URL qui passe par ce modificateur sera examiné pour voir s'il "correspond" à l'un des liens ou formulaires extraits de la réponse immédiatement précédente. Il remplacerait ensuite les valeurs de l'échantillon de test d'URL par les valeurs appropriées du lien ou du formulaire correspondant. Les expressions régulières de type Perl sont utilisées pour trouver des correspondances.

Capture d'écran du panneau de configuration de l'analyseur de liens HTML
Capture d'écran du panneau de configuration de l'analyseur de liens HTML
Les correspondances sont effectuées à l'aide des noms de protocole , d'hôte , de chemin et de paramètre . L'échantillonneur cible ne peut pas contenir de paramètres qui ne figurent pas dans les liens de réponse.
Si vous utilisez des tests distribués, assurez-vous de changer de mode (voir jmeter.properties ) afin qu'il ne s'agisse pas d'un décapage, voir le bogue 56376
Exemple de spidering

Prenons un exemple simple : disons que vous vouliez que JMeter "se déplace" sur votre site, en cliquant lien après lien analysé à partir du code HTML renvoyé par votre serveur (ce n'est pas vraiment la chose la plus utile à faire, mais c'est un bon exemple) . Vous créeriez un Simple Controller et y ajouteriez le "HTML Link Parser". Ensuite, créez une requête HTTP et définissez le domaine sur " .* ", ainsi que le chemin. Cela entraînera la correspondance de votre échantillon de test avec tout lien trouvé sur les pages renvoyées. Si vous souhaitez limiter le spidering à un domaine particulier, modifiez la valeur du domaine pour celle que vous souhaitez. Ensuite, seuls les liens vers ce domaine seront suivis.

Exemple de sondage

Un exemple plus utile : étant donné une application de sondage Web, vous pouvez avoir une page avec plusieurs options de sondage sous forme de boutons radio à sélectionner par l'utilisateur. Disons que les valeurs des options de sondage sont très dynamiques - peut-être générées par l'utilisateur. Si vous vouliez que JMeter teste le sondage, vous pouvez soit créer des échantillons de test avec des valeurs codées en dur choisies, soit laisser l'analyseur de lien HTML analyser le formulaire et insérer une option de sondage aléatoire dans votre échantillon de test d'URL. Pour ce faire, suivez l'exemple ci-dessus, sauf que lors de la configuration des options d'URL de votre contrôleur Web Test, veillez à choisir " POST " comme méthode. Mettez des valeurs codées en dur pour le domaine , le chemin et tous les paramètres de formulaire supplémentaires. Ensuite, pour le paramètre de bouton radio réel, mettez le nom (disons-le 'poll_choice "), puis " .* " pour la valeur de ce paramètre. Lorsque le modificateur examine cet exemple de test d'URL, il constate qu'il "correspond" au formulaire de sondage (et qu'il ne doit correspondre à aucun autre formulaire, étant donné que vous avez spécifié tous les autres aspects de l'échantillon de test d'URL), et il remplacera vos paramètres de formulaire par les paramètres correspondants du formulaire. Puisque l'expression régulière " .* " correspondra à n'importe quoi, le modificateur aura probablement une liste de boutons radio parmi lesquels choisir. Il choisira au hasard et remplacera la valeur dans votre échantillon de test d'URL. À chaque test, une nouvelle valeur aléatoire sera choisie.

Figure 18 - Exemple de sondage en ligne
Figure 18 - Exemple de sondage en ligne
Une chose importante à retenir est que vous devez créer un échantillon de test immédiatement avant qui renverra une page HTML avec les liens et les formulaires pertinents pour votre échantillon de test dynamique.
^

Modificateur de réécriture d'URL HTTP

Ce modificateur fonctionne de la même manière que l'analyseur de liens HTML, sauf qu'il a un objectif spécifique pour lequel il est plus facile à utiliser que l'analyseur de liens HTML et plus efficace. Pour les applications Web qui utilisent la réécriture d'URL pour stocker les identifiants de session au lieu des cookies, cet élément peut être attaché au niveau ThreadGroup, un peu comme HTTP Cookie Manager . Donnez-lui simplement le nom du paramètre d'identifiant de session, et il le trouvera sur la page et ajoutera l'argument à chaque requête de ce ThreadGroup.

Alternativement, ce modificateur peut être attaché à des requêtes sélectionnées et il ne les modifiera qu'à elles seules. Les utilisateurs intelligents détermineront même que ce modificateur peut être utilisé pour saisir des valeurs qui échappent à l' analyseur de liens HTML .

Capture d'écran du panneau de configuration du modificateur de réécriture d'URL HTTP
Capture d'écran du panneau de configuration du modificateur de réécriture d'URL HTTP

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif donné à cet élément dans l'arbre de test.
Non
Nom de l'argument de session
Nom du paramètre à récupérer dans la réponse précédente. Ce modificateur trouvera le paramètre partout où il existe sur la page et saisira la valeur qui lui est assignée, que ce soit dans un HREF ou un formulaire.
Oui
Extension de chemin
Certaines applications Web réécrivent les URL en ajoutant un point-virgule plus le paramètre d'ID de session. Cochez cette case si tel est le cas.
Non
Ne pas utiliser d'égal dans l'extension de chemin
Certaines applications Web réécrivent les URL sans utiliser de signe " = " entre le nom et la valeur du paramètre (comme Intershop Enfinity).
Non
Ne pas utiliser de point d'interrogation dans l'extension de chemin
Empêche la chaîne de requête de se retrouver dans l'extension de chemin (comme Intershop Enfinity).
Non
Identifiant de session en cache ?
La valeur de l'identifiant de session doit-elle être enregistrée pour une utilisation ultérieure lorsque l'identifiant de session n'est pas présent ?
Oui
Encodage d'URL
Valeur d'encodage de l'URL lors de l'écriture du paramètre
Non
Si vous utilisez des tests distribués, assurez-vous de changer de mode (voir jmeter.properties ) afin qu'il ne s'agisse pas d'un décapage, voir Bug 56376 .
^

Paramètres utilisateur

Permet à l'utilisateur de spécifier des valeurs pour les variables utilisateur spécifiques aux threads individuels.

Les variables utilisateur peuvent également être spécifiées dans le plan de test, mais pas spécifiques à des threads individuels. Ce panneau vous permet de spécifier une série de valeurs pour n'importe quelle variable utilisateur. Pour chaque thread, la variable se verra attribuer l'une des valeurs de la série dans l'ordre. S'il y a plus de threads que de valeurs, les valeurs sont réutilisées. Par exemple, cela peut être utilisé pour attribuer un identifiant d'utilisateur distinct à utiliser par chaque thread. Les variables utilisateur peuvent être référencées dans n'importe quel champ de n'importe quel composant JMeter.

La variable est spécifiée en cliquant sur le bouton Ajouter une variable en bas du panneau et en remplissant le nom de la variable dans la colonne ' Nom : '. Pour ajouter une nouvelle valeur à la série, cliquez sur le bouton ' Ajouter un utilisateur ' et remplissez la valeur souhaitée dans la colonne nouvellement ajoutée.

Les valeurs sont accessibles dans n'importe quel composant de test du même groupe de threads, en utilisant la syntaxe de la fonction : ${variable} .

Voir aussi l' élément CSV Data Set Config , qui est plus adapté à un grand nombre de paramètres

Capture d'écran du panneau de configuration des paramètres utilisateur
Capture d'écran du panneau de configuration des paramètres utilisateur

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Mettre à jour une fois par itération
Un indicateur pour indiquer si l'élément Paramètres utilisateur ne doit mettre à jour ses variables qu'une seule fois par itération. si vous intégrez des fonctions dans l'UP, vous aurez peut-être besoin d'un meilleur contrôle sur la fréquence de mise à jour des valeurs des variables. Gardez cette case cochée pour vous assurer que les valeurs sont mises à jour à chaque fois via le contrôleur parent de l'UP. Décochez la case et l'UP mettra à jour les paramètres pour chaque demande d'échantillon effectuée dans son champ d'application .
Oui
^

Préprocesseur BeanShell

Le préprocesseur BeanShell permet d'appliquer du code arbitraire avant de prélever un échantillon.

Pour plus de détails sur l'utilisation de BeanShell, veuillez consulter le site Web de BeanShell.

La migration vers JSR223 PreProcessor + Groovy est fortement recommandée pour les performances, la prise en charge des nouvelles fonctionnalités Java et la maintenance limitée de la bibliothèque BeanShell.

L'élément de test prend en charge les méthodes ThreadListener et TestListener . Ceux-ci doivent être définis dans le fichier d'initialisation. Voir le fichier BeanShellListeners.bshrc pour des exemples de définitions.

Capture d'écran du panneau de configuration du préprocesseur BeanShell
Capture d'écran du panneau de configuration du préprocesseur BeanShell

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence. Le nom est stocké dans la variable de script Label
Non
Réinitialiser bsh.Interpreter avant chaque appel
Si cette option est sélectionnée, l'interpréteur sera recréé pour chaque échantillon. Cela peut être nécessaire pour certains scripts de longue durée. Pour plus d'informations, consultez Meilleures pratiques - Scripts BeanShell .
Oui
Paramètres
Paramètres à transmettre au script BeanShell. Les paramètres sont stockés dans les variables suivantes :
  • Paramètres - chaîne contenant les paramètres comme une seule variable
  • bsh.args - Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script BeanShell à exécuter. Le nom du fichier est stocké dans la variable de script FileName
Non
Scénario
Le script BeanShell. La valeur de retour est ignorée.
Oui (sauf si un fichier de script est fourni)

Avant d'invoquer le script, certaines variables sont configurées dans l'interpréteur BeanShell :

  • log - ( Logger ) - peut être utilisé pour écrire dans le fichier journal
  • ctx - ( JMeterContext ) - donne accès au contexte
  • vars - ( JMeterVariables ) - donne un accès en lecture/écriture aux variables :
    vars.get(clé);
    vars.put(clé,val);
    vars.putObject("OBJ1",nouvel objet());
  • props - (JMeterProperties - classe java.util.Properties) - par exemple props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - donne accès au précédent SampleResult (le cas échéant)
  • sampler - ( Sampler )- donne accès au sampler courant

Pour plus de détails sur toutes les méthodes disponibles sur chacune des variables ci-dessus, veuillez consulter la Javadoc

Si la propriété beanshell.preprocessor.init est définie, elle est utilisée pour charger un fichier d'initialisation, qui peut être utilisé pour définir des méthodes, etc. à utiliser dans le script BeanShell.

^

Préprocesseur JSR223

Le préprocesseur JSR223 permet d'appliquer le code de script JSR223 avant de prélever un échantillon.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Langue
Le langage JSR223 à utiliser
Oui
Paramètres
Paramètres à passer au script. Les paramètres sont stockés dans les variables suivantes :
  • Paramètres - chaîne contenant les paramètres comme une seule variable
  • args - Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script à exécuter, si un chemin de fichier relatif est utilisé, alors il sera relatif au répertoire référencé par " user.dir " Propriété système
Non
Mise en cache de compilation de scripts
Chaîne unique sur le plan de test que JMeter utilisera pour mettre en cache le résultat de la compilation du script si le langage utilisé prend en charge l'interface compilable (Groovy en fait partie, java, beanshell et javascript ne le sont pas)
Voir la note dans la propriété JSR223 Sampler Java System si vous utilisez Groovy sans cocher cette option
Non
Scénario
Le script à exécuter.
Oui (sauf si un fichier de script est fourni)

Les variables JSR223 suivantes sont configurées pour être utilisées par le script :

  • log - ( Logger ) - peut être utilisé pour écrire dans le fichier journal
  • Étiquette - l'étiquette de chaîne
  • FileName - le nom du fichier de script (le cas échéant)
  • Paramètres - les paramètres (sous forme de chaîne)
  • args - les paramètres sous la forme d'un tableau String (divisé en espaces)
  • ctx - ( JMeterContext ) - donne accès au contexte
  • vars - ( JMeterVariables ) - donne un accès en lecture/écriture aux variables :
    vars.get(clé);
    vars.put(clé,val);
    vars.putObject("OBJ1",nouvel objet());
    vars.getObject("OBJ2");
  • props - (JMeterProperties - classe java.util.Properties) - par exemple props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - ( Sampler )- donne accès au sampler courant
  • OUT - System.out - par exemple OUT.println("message")

Pour plus de détails sur toutes les méthodes disponibles sur chacune des variables ci-dessus, veuillez consulter la Javadoc

^

Préprocesseur JDBC

Le préprocesseur JDBC vous permet d'exécuter une instruction SQL juste avant l'exécution d'un échantillon. Cela peut être utile si votre exemple JDBC nécessite que certaines données soient dans la base de données et que vous ne pouvez pas les calculer dans un groupe de threads de configuration. Pour plus de détails, voir Requête JDBC .

Voir le plan de test suivant :

Dans le plan de test lié, " Créer un seuil de prix " JDBC PreProcessor appelle une procédure stockée pour créer un seuil de prix dans la base de données, celui-ci sera utilisé par " Calculer le seuil de prix ".

Créer un préprocesseur de coupure de prix
Créer un préprocesseur de coupure de prix
^

Paramètres utilisateur RegEx

Permet de spécifier des valeurs dynamiques pour les paramètres HTTP extraits d'une autre requête HTTP à l'aide d'expressions régulières. Les paramètres utilisateur RegEx sont spécifiques aux threads individuels.

Ce composant vous permet de spécifier le nom de référence d'une expression régulière qui extrait les noms et les valeurs des paramètres de requête HTTP. Les numéros de groupe d'expressions régulières doivent être spécifiés pour le nom du paramètre et également pour la valeur du paramètre. Le remplacement ne se produira que pour les paramètres de l'échantillonneur qui utilise ces paramètres utilisateur RegEx dont le nom correspond

Capture d'écran du panneau de configuration des paramètres utilisateur RegEx
Capture d'écran du panneau de configuration des paramètres utilisateur RegEx

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Nom de référence de l'expression régulière
Nom d'une référence à une expression régulière
Oui
Noms des paramètres numéro de groupe d'expressions régulières
Numéro de groupe d'expressions régulières utilisées pour extraire les noms de paramètres
Oui
Valeurs des paramètres numéro de groupe de regex
Numéro de groupe de l'expression régulière utilisée pour extraire les valeurs des paramètres
Oui
Exemple d'expression régulière

Supposons que nous ayons une requête qui renvoie un formulaire avec 3 paramètres d'entrée et que nous voulions extraire la valeur de 2 d'entre eux pour les injecter dans la prochaine requête

  1. Créer une expression régulière de post-processeur pour la première requête HTTP
    • refName - définit le nom d'une expression régulière Expression ( listParams )
    • expression régulière - expression qui extraira les noms d'entrée et les attributs de valeurs d'entrée
      Ex : input name="([^"]+?)" value="([^"]+?)"
    • modèle - serait vide
    • match nr - -1 (afin de parcourir toutes les correspondances possibles)
  2. Créer des paramètres utilisateur RegEx de préprocesseur pour la deuxième requête HTTP
    • refName - définit le même nom de référence d'une expression régulière, serait listParams dans notre exemple
    • nombre de groupes de noms de paramètres - nombre de groupes d'expressions régulières pour les noms de paramètres, serait 1 dans notre exemple
    • nombre de groupes de valeurs de paramètres - nombre de groupes d'expressions régulières pour les valeurs de paramètres, serait 2 dans notre exemple

Voir aussi l' élément Regular Expression Extractor , qui est utilisé pour extraire les noms et les valeurs des paramètres

^

Délai d'expiration de l' échantillon

Ce préprocesseur planifie une tâche de minuterie pour interrompre un échantillon s'il prend trop de temps à se terminer. Le délai d'attente est ignoré s'il est nul ou négatif. Pour que cela fonctionne, l'échantillonneur doit implémenter Interruptible. Les échantillonneurs suivants sont connus pour le faire :
AJP, BeanShell, FTP, HTTP, Soap, AccessLog, MailReader, JMS Subscriber, TCPSampler, TestAction, JavaSampler

L'élément de test est destiné à être utilisé lorsque les délais d'attente individuels tels que le délai de connexion ou le délai de réponse sont insuffisants, ou lorsque l'échantillonneur ne prend pas en charge les délais d'attente. Le délai d'attente doit être défini suffisamment long pour qu'il ne soit pas déclenché dans les tests normaux, mais suffisamment court pour interrompre les échantillons bloqués.

[Par défaut, JMeter utilise un Callable pour interrompre l'échantillonneur. Cela s'exécute dans le même thread que le temporisateur, donc si l'interruption prend beaucoup de temps, cela peut retarder le traitement des délais d'attente suivants. Cela ne devrait pas poser de problème, mais si nécessaire, la propriété InterruptTimer.useRunnable peut être définie sur true pour utiliser un thread Runnable séparé au lieu de Callable.]

Capture d'écran du panneau de configuration du délai d'expiration de l'échantillon
Capture d'écran du panneau de configuration du délai d'expiration de l'échantillon

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de ce temporisateur affiché dans l'arborescence.
Non
Délai d'expiration de l'échantillon
Si l'échantillon prend plus de temps à se terminer, il sera interrompu.
Oui
^
^

18.8 Post-processeurs

Comme leur nom l'indique, les post-processeurs sont appliqués après les échantillonneurs. Notez qu'ils sont appliqués à tous les échantillonneurs dans la même portée, donc pour vous assurer qu'un post-processeur est appliqué uniquement à un échantillonneur particulier, ajoutez-le en tant qu'enfant de l'échantillonneur.

Remarque : Sauf indication contraire, les post-processeurs ne sont pas appliqués aux sous-échantillons (échantillons enfants) - uniquement à l'échantillon parent. Dans le cas des post-processeurs JSR223 et BeanShell, le script peut récupérer des sous-échantillons à l'aide de la méthode prev.getSubResults() qui renvoie un tableau de SampleResults. Le tableau sera vide s'il n'y en a pas.

Les post-processeurs sont exécutés avant les assertions, de sorte qu'ils n'ont accès à aucun résultat d'assertion, et le statut de l'échantillon ne reflètera pas non plus les résultats des assertions. Si vous avez besoin d'accéder aux résultats d'assertion, essayez plutôt d'utiliser un écouteur. Notez également que la variable JMeterThread.last_sample_ok est définie sur « true » ou « false » après que toutes les assertions ont été exécutées.

Extracteur d'expression régulière

Permet à l'utilisateur d'extraire des valeurs d'une réponse du serveur à l'aide d'une expression régulière de type Perl. En tant que post-processeur, cet élément s'exécutera après chaque requête Sample dans sa portée, en appliquant l'expression régulière, en extrayant les valeurs demandées, en générant la chaîne de modèle et en stockant le résultat dans le nom de variable donné.

Capture d'écran du panneau de configuration de l'extracteur d'expressions régulières
Capture d'écran du panneau de configuration de l'extracteur d'expressions régulières

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Postuler à:
Ceci est à utiliser avec des échantillonneurs qui peuvent générer des sous-échantillons, par exemple un échantillonneur HTTP avec des ressources intégrées, un lecteur de courrier ou des échantillons générés par le contrôleur de transaction.
  • Échantillon principal uniquement - ne s'applique qu'à l'échantillon principal
  • Sous-échantillons uniquement - s'applique uniquement aux sous-échantillons
  • Échantillon principal et sous-échantillons - s'applique aux deux.
  • Nom de la variable JMeter à utiliser - l'extraction doit être appliquée au contenu de la variable nommée
L'appariement est appliqué tour à tour à tous les échantillons éligibles. Par exemple, s'il existe un échantillon principal et 3 sous-échantillons, chacun contenant une seule correspondance pour l'expression régulière (c'est-à-dire 4 correspondances au total). Pour match number = 3 , Sous-échantillons uniquement, l'extracteur correspondra au 3 ème sous-échantillon. Pour le numéro de correspondance = 3 , Échantillon principal et sous-échantillons, l'extracteur correspondra au 2 e sous-échantillon (la 1 ère correspondance est l'échantillon principal). Pour le match number = 0 ou négatif, tous les échantillons qualifiés seront traités. Pour le numéro de correspondance > 0 , la correspondance s'arrêtera dès que suffisamment de correspondances auront été trouvées.
Oui
Champ à vérifier
Les champs suivants peuvent être cochés :
  • Corps - le corps de la réponse, par exemple le contenu d'une page Web (à l'exclusion des en-têtes)
  • Corps (non échappé) - le corps de la réponse, avec tous les codes d'échappement HTML remplacés. Notez que les échappements HTML sont traités sans tenir compte du contexte, de sorte que certaines substitutions incorrectes peuvent être effectuées.
    Notez que cette option impacte fortement les performances, donc ne l'utilisez qu'en cas d'absolue nécessité et soyez conscient de ses impacts
  • Corps en tant que document - le texte d'extraction de divers types de documents via Apache Tika (voir la section Afficher l'arborescence des résultats du document).
    Notez que l'option Corps en tant que document peut avoir un impact sur les performances, alors assurez-vous qu'elle est correcte pour votre test
  • En-têtes de demande - peuvent ne pas être présents pour les exemples non HTTP
  • En-têtes de réponse - peuvent ne pas être présents pour les échantillons non HTTP
  • URL
  • Code de réponse - par exemple 200
  • Message de réponse - par exemple OK
Les en-têtes peuvent être utiles pour les exemples HTTP ; il peut ne pas être présent pour d'autres types d'échantillons.
Oui
Nom de la variable créée
Le nom de la variable JMeter dans laquelle stocker le résultat. Notez également que chaque groupe est stocké sous [refname]_g# , où [refname] est la chaîne que vous avez entrée comme nom de référence, et # est le numéro de groupe, où le groupe 0 est la correspondance entière, le groupe 1 est la correspondance du première série de parenthèses, etc.
Oui
Expression régulière
Expression régulière utilisée pour analyser les données de réponse. Celui-ci doit contenir au moins un ensemble de parenthèses " () " pour capturer une partie de la chaîne, sauf si vous utilisez le groupe $0$ . N'entourez pas l'expression de / / - à moins bien sûr que vous ne souhaitiez également faire correspondre ces caractères.
Oui
Modèle
Modèle utilisé pour créer une chaîne à partir des correspondances trouvées. Il s'agit d'une chaîne arbitraire avec des éléments spéciaux pour faire référence à des groupes dans l'expression régulière. La syntaxe pour faire référence à un groupe est : ' $1$ ' pour faire référence au groupe 1 , ' $2$ ' pour faire référence au groupe 2 , etc. $0$ fait référence à tout ce que l'expression entière correspond.
Oui
Match n ° (0 pour aléatoire)
Indique quelle correspondance utiliser. L'expression régulière peut correspondre plusieurs fois.
  • Utilisez une valeur de zéro pour indiquer que JMeter doit choisir une correspondance au hasard.
  • Un nombre positif N signifie qu'il faut sélectionner la n ième correspondance.
  • Les nombres négatifs sont utilisés conjointement avec le contrôleur ForEach - voir ci-dessous.
Oui
Valeur par défaut
Si l'expression régulière ne correspond pas, la variable de référence sera définie sur la valeur par défaut. Ceci est particulièrement utile pour les tests de débogage. Si aucune valeur par défaut n'est fournie, il est difficile de dire si l'expression régulière ne correspond pas, si l'élément RE n'a pas été traité ou si la mauvaise variable est utilisée.

Cependant, si vous avez plusieurs éléments de test qui définissent la même variable, vous pouvez laisser la variable inchangée si l'expression ne correspond pas. Dans ce cas, supprimez la valeur par défaut une fois le débogage terminé.

Non, mais recommandé
Utiliser une valeur par défaut vide
Si la case est cochée et que la valeur par défaut est vide, alors JMeter définira la variable sur une chaîne vide au lieu de ne pas la définir. Ainsi, lorsque vous utiliserez par exemple ${var} (si le nom de référence est var) dans votre plan de test, si la valeur extraite n'est pas trouvée, alors ${var} sera égal à une chaîne vide au lieu de contenir ${var} qui peut être utile si la valeur extraite est facultative.
Non

Si le numéro de correspondance est défini sur un nombre non négatif et qu'une correspondance se produit, les variables sont définies comme suit :

  • refName - la valeur du modèle
  • refName_g n , où n = 0 , 1 , 2 - les groupes pour le match
  • refName_g - le nombre de groupes dans la Regex (hors 0 )

Si aucune correspondance ne se produit, la variable refName est définie sur la valeur par défaut (sauf si celle-ci est absente). De plus, les variables suivantes sont supprimées :

  • refName_g0
  • refName_g1
  • refName_g

Si le numéro de correspondance est défini sur un nombre négatif, toutes les correspondances possibles dans les données de l'échantillonneur sont traitées. Les variables sont définies comme suit :

  • refName_matchNr - le nombre de correspondances trouvées ; pourrait être 0
  • refName_ n , où n = 1 , 2 , 3 etc. - les chaînes générées par le modèle
  • refName_ n _g m , où m = 0 , 1 , 2 - les groupes pour match n
  • refName - toujours défini sur la valeur par défaut
  • refName_g n - non défini

Notez que la variable refName est toujours définie sur la valeur par défaut dans ce cas et que les variables de groupe associées ne sont pas définies.

Voir également Assertion de réponse pour des exemples de spécification de modificateurs et pour plus d'informations sur les expressions régulières JMeter.

^

Extracteur de sélecteur CSS (auparavant : Extracteur CSS/JQuery )

Permet à l'utilisateur d'extraire des valeurs d'une réponse HTML de serveur à l'aide d'une syntaxe CSS Selector. En tant que post-processeur, cet élément s'exécutera après chaque requête Sample dans sa portée, en appliquant l'expression CSS/JQuery, en extrayant les nœuds demandés, en extrayant le nœud sous forme de texte ou de valeur d'attribut et stockera le résultat dans le nom de variable donné.

Capture d'écran du panneau de configuration de CSS Selector Extractor
Capture d'écran du panneau de configuration de l'extracteur de sélecteur CSS

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Postuler à:
Ceci est à utiliser avec des échantillonneurs qui peuvent générer des sous-échantillons, par exemple un échantillonneur HTTP avec des ressources intégrées, un lecteur de courrier ou des échantillons générés par le contrôleur de transaction.
  • Échantillon principal uniquement - ne s'applique qu'à l'échantillon principal
  • Sous-échantillons uniquement - s'applique uniquement aux sous-échantillons
  • Échantillon principal et sous-échantillons - s'applique aux deux.
  • Nom de la variable JMeter à utiliser - l'extraction doit être appliquée au contenu de la variable nommée
L'appariement est appliqué tour à tour à tous les échantillons éligibles. Par exemple, s'il existe un échantillon principal et 3 sous-échantillons, chacun contenant une seule correspondance pour l'expression régulière (c'est-à-dire 4 correspondances au total). Pour match number = 3 , Sous-échantillons uniquement, l'extracteur correspondra au 3 ème sous-échantillon. Pour le numéro de correspondance = 3 , Échantillon principal et sous-échantillons, l'extracteur correspondra au 2 e sous-échantillon (la 1 ère correspondance est l'échantillon principal). Pour le match number = 0 ou négatif, tous les échantillons qualifiés seront traités. Pour le numéro de correspondance > 0 , la correspondance s'arrêtera dès que suffisamment de correspondances auront été trouvées.
Oui
Implémentation du sélecteur CSS
2 Les implémentations pour la syntaxe basée sur CSS/JQuery sont prises en charge : Si le sélecteur est défini sur vide, l'implémentation par défaut (JSoup) sera utilisée.
Faux
Nom de la variable créée
Le nom de la variable JMeter dans laquelle stocker le résultat.
Oui
Expression CSS/JQuery
Le sélecteur CSS/JQuery utilisé pour sélectionner des nœuds à partir des données de réponse. Le sélecteur, la combinaison de sélecteurs et les pseudo-sélecteurs sont pris en charge, exemples :
  • E[foo] - un élément E avec un attribut " foo "
  • ancêtre enfant - éléments enfants qui descendent de l'ancêtre, par exemple .body p trouve p éléments n'importe où sous un bloc avec la classe " body "
  • :lt(n) - trouve les éléments dont l'index frère (c'est-à-dire sa position dans l'arbre DOM par rapport à son parent) est inférieur à n ; par exemple td:lt(3)
  • :contains(text) - trouve les éléments qui contiennent le texte donné . La recherche est insensible à la casse ; par exemple p:contains(jsoup)
Pour plus de détails sur la syntaxe, voir :
Oui
Attribut
Nom de l'attribut (selon la syntaxe HTML) à extraire des nœuds correspondant au sélecteur. S'il est vide, le texte combiné de cet élément et de tous ses enfants sera renvoyé.
Il s'agit de la fonction Element#attr(name) équivalente pour JSoup si un attribut est défini.
Extracteur CSS avec jeu de valeurs d'attribut
Extracteur CSS avec jeu de valeurs d'attribut

Si vide, c'est l'équivalent de la fonction Element#text() pour JSoup si aucune valeur n'est définie pour l'attribut.
Extracteur CSS sans jeu d'attributs
Extracteur CSS sans jeu d'attributs
faux
Match n ° (0 pour aléatoire)
Indique quelle correspondance utiliser. Le sélecteur CSS/JQuery peut correspondre plusieurs fois.
  • Utilisez une valeur de zéro pour indiquer que JMeter doit choisir une correspondance au hasard.
  • Un nombre positif N signifie qu'il faut sélectionner la n ième correspondance.
  • Les nombres négatifs sont utilisés conjointement avec le contrôleur ForEach - voir ci-dessous.
Oui
Valeur par défaut
Si l'expression ne correspond pas, la variable de référence sera définie sur la valeur par défaut. Ceci est particulièrement utile pour les tests de débogage. Si aucune valeur par défaut n'est fournie, il est difficile de dire si l'expression ne correspond pas, ou si l'élément CSS/JQuery n'a pas été traité ou si la mauvaise variable est utilisée.

Cependant, si vous avez plusieurs éléments de test qui définissent la même variable, vous pouvez laisser la variable inchangée si l'expression ne correspond pas. Dans ce cas, supprimez la valeur par défaut une fois le débogage terminé.

Non, mais recommandé
Utiliser une valeur par défaut vide
Si la case est cochée et que la valeur par défaut est vide, alors JMeter définira la variable sur une chaîne vide au lieu de ne pas la définir. Ainsi, lorsque vous utiliserez par exemple ${var} (si le nom de référence est var) dans votre plan de test, si la valeur extraite n'est pas trouvée, alors ${var} sera égal à une chaîne vide au lieu de contenir ${var} qui peut être utile si la valeur extraite est facultative.
Non

Si le numéro de correspondance est défini sur un nombre non négatif et qu'une correspondance se produit, les variables sont définies comme suit :

  • refName - la valeur du modèle

Si aucune correspondance ne se produit, la variable refName est définie sur la valeur par défaut (sauf si celle-ci est absente).

Si le numéro de correspondance est défini sur un nombre négatif, toutes les correspondances possibles dans les données de l'échantillonneur sont traitées. Les variables sont définies comme suit :

  • refName_matchNr - le nombre de correspondances trouvées ; pourrait être 0
  • refName_n , où n = 1 , 2 , 3 , etc. - les chaînes générées par le modèle
  • refName - toujours défini sur la valeur par défaut

Notez que la variable refName est toujours définie sur la valeur par défaut dans ce cas.

^

Extracteur XPath2

Cet élément de test permet à l'utilisateur d'extraire des valeurs d'une réponse structurée - XML ​​ou (X)HTML - en utilisant le langage de requête XPath2.
Capture d'écran du panneau de configuration de XPath2 Extractor
Capture d'écran du panneau de configuration de XPath2 Extractor

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Postuler à:
Ceci est à utiliser avec des échantillonneurs qui peuvent générer des sous-échantillons, par exemple un échantillonneur HTTP avec des ressources intégrées, un lecteur de courrier ou des échantillons générés par le contrôleur de transaction.
  • Échantillon principal uniquement - ne s'applique qu'à l'échantillon principal
  • Sous-échantillons uniquement - s'applique uniquement aux sous-échantillons
  • Échantillon principal et sous-échantillons - s'applique aux deux.
  • Nom de la variable JMeter à utiliser - l'extraction doit être appliquée au contenu de la variable nommée
La correspondance XPath est appliquée tour à tour à tous les échantillons éligibles, et tous les résultats correspondants seront renvoyés.
Oui
Renvoyer l'intégralité du fragment XPath au lieu du contenu textuel ?
Si sélectionné, le fragment sera renvoyé plutôt que le contenu du texte.
Par exemple //title renverrait " <title>Apache JMeter</title> " plutôt que " Apache JMeter ".
Dans ce cas, //title/text() renverrait " Apache JMeter ".
Oui
Nom de la variable créée
Le nom de la variable JMeter dans laquelle stocker le résultat.
Oui
Requête XPath
Requête d'éléments en langage XPath 2.0. Peut renvoyer plus d'un match.
Oui
Match n ° (0 pour aléatoire)
Si la requête XPath Path mène à de nombreux résultats, vous pouvez choisir lequel(s) extraire en tant que Variables :
  • 0 : signifie aléatoire (valeur par défaut)
  • -1 signifie extraire tous les résultats, ils seront nommés <nom de la variable> _N (où N va de 1 au nombre de résultats)
  • X : signifie extraire le X ème résultat. Si ce X ème est supérieur au nombre de correspondances, alors rien n'est retourné. La valeur par défaut sera utilisée
Non
Valeur par défaut
Valeur par défaut renvoyée lorsqu'aucune correspondance n'est trouvée. Il est également renvoyé si le nœud n'a pas de valeur et que l'option de fragment n'est pas sélectionnée.
oui
Liste des alias des espaces de noms
Liste des alias d'espaces de noms que vous souhaitez utiliser pour analyser le document, une ligne par déclaration. Vous devez les spécifier comme suit : prefix=namespace . Cette implémentation facilite l'utilisation des espaces de noms par rapport à l'ancienne version de XPathExtractor.
Non

Pour permettre une utilisation dans un contrôleur ForEach , cela fonctionne exactement de la même manière que l'extracteur XPath ci-dessus.

XPath2 Extractor fournit des outils intéressants tels qu'une syntaxe améliorée et bien plus de fonctions que dans sa première version.

Voici quelques exemples :

abs(/livre/page[2])
extrait la 2ème valeur absolue de la page d'un livre
avg(/bibliothèque/livre/page)
extrait le nombre moyen de pages de tous les livres des bibliothèques
comparer(/livre[1]/page[2],/livre[2]/page[2])
renvoie une valeur entière égale à 0 à si la 2 ème page du premier livre est égale à la 2 ème page du 2 ème livre, sinon renvoie -1.

Pour voir plus d'informations sur ces fonctions, veuillez vérifier les fonctions xPath2

^

Extracteur XPath

Cet élément de test permet à l'utilisateur d'extraire des valeurs d'une réponse structurée - XML ​​ou (X)HTML - à l'aide du langage de requête XPath.
Depuis JMeter 5.0, vous devez utiliser XPath2 Extractor car il offre une gestion des espaces de noms meilleure et plus facile, de meilleures performances et une prise en charge de XPath 2.0
Capture d'écran du panneau de configuration de XPath Extractor
Capture d'écran du panneau de configuration de XPath Extractor

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Postuler à:
Ceci est à utiliser avec des échantillonneurs qui peuvent générer des sous-échantillons, par exemple un échantillonneur HTTP avec des ressources intégrées, un lecteur de courrier ou des échantillons générés par le contrôleur de transaction.
  • Échantillon principal uniquement - ne s'applique qu'à l'échantillon principal
  • Sous-échantillons uniquement - s'applique uniquement aux sous-échantillons
  • Échantillon principal et sous-échantillons - s'applique aux deux.
  • Nom de la variable JMeter à utiliser - l'extraction doit être appliquée au contenu de la variable nommée
La correspondance XPath est appliquée tour à tour à tous les échantillons éligibles, et tous les résultats correspondants seront renvoyés.
Oui
Utiliser Tidy (analyseur tolérant)
Si coché, utilisez Tidy pour analyser la réponse HTML en XHTML.
  • " Utiliser Tidy " doit être coché pour la réponse HTML. Cette réponse est convertie en XHTML valide (HTML compatible XML) à l'aide de Tidy
  • " Utiliser Tidy " doit être décoché pour les réponses XHTML ou XML (par exemple RSS)
Pour le HTML, CSS Selector Extractor est la solution correcte et performante. N'utilisez pas XPath pour les extractions HTML.
Oui
Calme
Définit le drapeau Tidy Quiet
Si Rangement est sélectionné
Signaler les erreurs
Si une erreur Tidy se produit, définissez l'Assertion en conséquence
Si Rangement est sélectionné
Afficher les avertissements
Définit l'option Tidy showWarnings
Si Rangement est sélectionné
Utiliser des espaces de noms
Si cette case est cochée, l'analyseur XML utilisera la résolution d'espace de noms. (voir la note ci-dessous sur NAMESPACES) Notez qu'actuellement, seuls les espaces de noms déclarés sur l'élément racine seront reconnus. Voir ci-dessous pour la définition par l'utilisateur des noms d'espace de travail supplémentaires.
Si Rangement n'est pas sélectionné
Valider XML
Vérifiez le document par rapport à son schéma.
Si Rangement n'est pas sélectionné
Ignorer les espaces
Ignorer les espaces blancs de l'élément.
Si Rangement n'est pas sélectionné
Récupérer les DTD externes
Si cette option est sélectionnée, les DTD externes sont extraites.
Si Rangement n'est pas sélectionné
Renvoyer l'intégralité du fragment XPath au lieu du contenu textuel ?
Si sélectionné, le fragment sera renvoyé plutôt que le contenu du texte.
Par exemple //title renverrait " <title>Apache JMeter</title> " plutôt que " Apache JMeter ".
Dans ce cas, //title/text() renverrait " Apache JMeter ".
Oui
Nom de la variable créée
Le nom de la variable JMeter dans laquelle stocker le résultat.
Oui
Requête XPath
Requête d'éléments en langage XPath. Peut renvoyer plus d'un match.
Oui
Match n ° (0 pour aléatoire)
Si la requête XPath Path mène à de nombreux résultats, vous pouvez choisir lequel(s) extraire en tant que Variables :
  • 0 : signifie aléatoire
  • -1 signifie extraire tous les résultats (valeur par défaut), ils seront nommés comme <nom de la variable> _N (où N va de 1 au nombre de résultats)
  • X : signifie extraire le X ème résultat. Si ce X ème est supérieur au nombre de correspondances, alors rien n'est retourné. La valeur par défaut sera utilisée
Non
Valeur par défaut
Valeur par défaut renvoyée lorsqu'aucune correspondance n'est trouvée. Il est également renvoyé si le nœud n'a pas de valeur et que l'option de fragment n'est pas sélectionnée.

Pour permettre une utilisation dans un ForEach Controller , les variables suivantes sont définies au retour :

  • refName - défini sur la première (ou la seule) correspondance ; si aucune correspondance, alors défini par défaut
  • refName_matchNr - défini sur le nombre de correspondances (peut être 0 )
  • refName_n - n = 1 , 2 , 3 , etc. Réglé sur la 1 ère , 2 ème 3 ème correspondance etc.
Remarque : La variable suivante refName_n est définie sur null - par exemple, s'il y a 2 correspondances, alors refName_3 est défini sur null , et s'il n'y a pas de correspondance, alors refName_1 est défini sur null .

XPath est un langage de requête ciblé principalement pour les transformations XSLT. Cependant, il est également utile comme langage de requête générique pour les données structurées. Voir Référence XPath ou Spécification XPath pour plus d'informations. Voici quelques exemples :

/html/tête/titre
extrait l'élément de titre de la réponse HTML
/livre/page[2]
extrait la 2ème page d'un livre
/livre/page
extrait toutes les pages d'un livre
//form[@name='countryForm']//select[@name='country']/option[text()='République tchèque'])/@value
extrait l'attribut de valeur de l'élément d'option qui correspond au texte ' République tchèque ' à l'intérieur de l'élément de sélection avec l'attribut de nom ' country ' à l'intérieur du formulaire avec l'attribut de nom ' countryForm '
Lorsque " Use Tidy " est coché - le document XML résultant peut légèrement différer de la réponse HTML d'origine :
  • Tous les noms d'éléments et d'attributs sont convertis en minuscules
  • Tidy tente de corriger les éléments mal imbriqués. Par exemple - l' ul/font/li d'origine (incorrect) devient l' ul/li/font correct
Voir la page d' accueil de Tidy pour plus d'informations.
ESPACES DE NOMS
Pour contourner les limitations d'espace de noms de l'analyseur Xalan XPath (implémentation sur laquelle JMeter est basé), vous devez :
  • fournissez un fichier de propriétés (si par exemple votre fichier s'appelle namespaces.properties ) qui contient des mappages pour les préfixes d'espace de noms :
    prefix1=http\://foo.apache.org
    prefix2=http\://toto.apache.org
    …
    
  • référencez ce fichier dans le fichier user.properties en utilisant la propriété :
    xpath.namespace.config=espaces de noms.properties

//mon espace de noms : nom de la balise
//*[local-name()='tagname' and namespace-uri()='uri-for-namespace']
uri-for-namespace mynamespace
^

Extracteur JSON JMESPath

Cet élément de test permet à l'utilisateur d'extraire des valeurs d'une réponse structurée - XML ​​ou (X)HTML - à l'aide du langage de requête JMESPath.
Capture d'écran du panneau de configuration de l'extracteur JSON JMESPath
Capture d'écran du panneau de configuration de l'extracteur JSON JMESPath
Dans XPATH Extractor, nous prenons en charge l'extraction de plusieurs xpaths en même temps, mais dans JMES Extractor, une seule expression JMES peut être saisie à la fois.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Postuler à:
Ceci est à utiliser avec des échantillonneurs qui peuvent générer des sous-échantillons, par exemple un échantillonneur HTTP avec des ressources intégrées, un lecteur de courrier ou des échantillons générés par le contrôleur de transaction.
  • Échantillon principal uniquement - ne s'applique qu'à l'échantillon principal
  • Sous-échantillons uniquement - s'applique uniquement aux sous-échantillons
  • Échantillon principal et sous-échantillons - s'applique aux deux.
  • Nom de la variable JMeter à utiliser - l'extraction doit être appliquée au contenu de la variable nommée
Oui
Nom de la variable créée
Le nom de la variable JMeter dans laquelle stocker le résultat.
Oui
Expressions JMESPath
Requête d'élément dans le langage de requête JMESPath. Peut renvoyer le résultat correspondant.
Oui
Match n ° (0 pour aléatoire)
Si la requête JMESPath conduit à de nombreux résultats, vous pouvez choisir lequel(s) extraire en tant que Variables :
  • 0 : signifie aléatoire
  • -1 signifie extraire tous les résultats (valeur par défaut), ils seront nommés comme <nom de la variable> _N (où N va de 1 au nombre de résultats)
  • X : signifie extraire le X ème résultat. Si ce X ème est supérieur au nombre de correspondances, alors rien n'est retourné. La valeur par défaut sera utilisée
Non
Valeur par défaut
Valeur par défaut renvoyée lorsqu'aucune correspondance n'est trouvée. Il est également renvoyé si le nœud n'a pas de valeur et que l'option de fragment n'est pas sélectionnée.

JMESPath est un langage de requête pour JSON. Il est décrit dans une grammaire ABNF avec une spécification complète. Cela garantit que la syntaxe du langage est définie avec précision. Voir Référence JMESPath pour plus d'informations. Voici également quelques exemples Exemple JMESPath .

^

Gestionnaire d'action d'état de résultat

Cet élément de test permet à l'utilisateur d'arrêter le fil ou l'ensemble du test en cas d'échec de l'échantillonneur concerné.
Capture d'écran du panneau de configuration du gestionnaire d'action d'état des résultats
Capture d'écran du panneau de configuration du gestionnaire d'action d'état des résultats

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Action à entreprendre après une erreur de l'échantillonneur
Détermine ce qui se passe si une erreur d'échantillonneur se produit, soit parce que l'échantillon lui-même a échoué, soit parce qu'une assertion a échoué. Les choix possibles sont :
  • Continuer - ignorer l'erreur et poursuivre le test
  • Démarrer la boucle de thread suivante - n'exécute pas les échantillonneurs suivant l'échantillonneur en erreur pour l'itération en cours et redémarre la boucle à la prochaine itération
  • Arrêter le thread - le thread actuel se termine
  • Arrêter le test - l'ensemble du test est arrêté à la fin de tous les échantillons en cours.
  • Arrêter le test maintenant - l'ensemble du test est arrêté brusquement. Tous les échantillonneurs en cours sont interrompus si possible.
Non
^

Post-processeur BeanShell

Le préprocesseur BeanShell permet d'appliquer du code arbitraire après avoir prélevé un échantillon.

Le post-processeur BeanShell n'ignore plus les échantillons avec des données de résultat de longueur nulle

Pour plus de détails sur l'utilisation de BeanShell, veuillez consulter le site Web de BeanShell.

La migration vers JSR223 PostProcessor + Groovy est fortement recommandée pour les performances, la prise en charge des nouvelles fonctionnalités Java et la maintenance limitée de la bibliothèque BeanShell.

L'élément de test prend en charge les méthodes ThreadListener et TestListener . Ceux-ci doivent être définis dans le fichier d'initialisation. Voir le fichier BeanShellListeners.bshrc pour des exemples de définitions.

Capture d'écran du panneau de configuration du post-processeur BeanShell
Capture d'écran du panneau de configuration du post-processeur BeanShell

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence. Le nom est stocké dans la variable de script Label
Non
Réinitialiser bsh.Interpreter avant chaque appel
Si cette option est sélectionnée, l'interpréteur sera recréé pour chaque échantillon. Cela peut être nécessaire pour certains scripts de longue durée. Pour plus d'informations, consultez Meilleures pratiques - Scripts BeanShell .
Oui
Paramètres
Paramètres à transmettre au script BeanShell. Les paramètres sont stockés dans les variables suivantes :
  • Paramètres - chaîne contenant les paramètres comme une seule variable
  • bsh.args - Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script BeanShell à exécuter. Le nom du fichier est stocké dans la variable de script FileName
Non
Scénario
Le script BeanShell. La valeur de retour est ignorée.
Oui (sauf si un fichier de script est fourni)

Les variables BeanShell suivantes sont configurées pour être utilisées par le script :

  • log - ( Logger ) - peut être utilisé pour écrire dans le fichier journal
  • ctx - ( JMeterContext ) - donne accès au contexte
  • vars - ( JMeterVariables ) - donne un accès en lecture/écriture aux variables :
    vars.get(clé);
    vars.put(clé,val);
    vars.putObject("OBJ1",nouvel objet());
  • props - (JMeterProperties - classe java.util.Properties) - par exemple props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - donne accès au précédent SampleResult
  • data - (byte [])- donne accès aux données d'échantillon actuelles

Pour plus de détails sur toutes les méthodes disponibles sur chacune des variables ci-dessus, veuillez consulter la Javadoc

Si la propriété beanshell.postprocessor.init est définie, elle est utilisée pour charger un fichier d'initialisation, qui peut être utilisé pour définir des méthodes, etc. à utiliser dans le script BeanShell.

^

Post-processeur JSR223

Le post-processeur JSR223 permet d'appliquer le code de script JSR223 après avoir prélevé un échantillon.

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Langue
Le langage JSR223 à utiliser
Oui
Paramètres
Paramètres à passer au script. Les paramètres sont stockés dans les variables suivantes :
  • Paramètres - chaîne contenant les paramètres comme une seule variable
  • args - Tableau de chaînes contenant des paramètres, divisés en espaces blancs
Non
Fichier de script
Un fichier contenant le script à exécuter, si un chemin de fichier relatif est utilisé, alors il sera relatif au répertoire référencé par " user.dir " Propriété système
Non
Mise en cache de compilation de scripts
Chaîne unique sur le plan de test que JMeter utilisera pour mettre en cache le résultat de la compilation du script si le langage utilisé prend en charge l'interface compilable (Groovy en fait partie, java, beanshell et javascript ne le sont pas)
Voir la note dans la propriété JSR223 Sampler Java System si vous utilisez Groovy sans cocher cette option
Non
Scénario
Le script à exécuter.
Oui (sauf si un fichier de script est fourni)

Avant d'invoquer le script, certaines variables sont configurées. Notez qu'il s'agit de variables JSR223 - c'est-à-dire qu'elles peuvent être utilisées directement dans le script.

  • log - ( Logger ) - peut être utilisé pour écrire dans le fichier journal
  • Étiquette - l'étiquette de chaîne
  • FileName - le nom du fichier de script (le cas échéant)
  • Paramètres - les paramètres (sous forme de chaîne)
  • args - les paramètres sous la forme d'un tableau String (divisé en espaces)
  • ctx - ( JMeterContext ) - donne accès au contexte
  • vars - ( JMeterVariables ) - donne un accès en lecture/écriture aux variables :
    vars.get(clé);
    vars.put(clé,val);
    vars.putObject("OBJ1",nouvel objet());
    vars.getObject("OBJ2");
  • props - (JMeterProperties - classe java.util.Properties) - par exemple props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - donne accès au précédent SampleResult (le cas échéant)
  • sampler - ( Sampler )- donne accès au sampler courant
  • OUT - System.out - par exemple OUT.println("message")

Pour plus de détails sur toutes les méthodes disponibles sur chacune des variables ci-dessus, veuillez consulter la Javadoc

^

Post-processeur JDBC

Le post-processeur JDBC vous permet d'exécuter une instruction SQL juste après l'exécution d'un échantillon. Cela peut être utile si votre exemple JDBC modifie certaines données et que vous souhaitez réinitialiser l'état à ce qu'il était avant l'exécution de l'exemple JDBC.

Dans le plan de test lié, " JDBC PostProcessor " JDBC PostProcessor appelle une procédure stockée pour supprimer de la base de données le prix limite qui a été créé par PreProcessor.

Post-processeur JDBC
Post-processeur JDBC
^

Extracteur JSON

Le post-processeur JSON vous permet d'extraire des données des réponses JSON à l'aide de la syntaxe JSON-PATH. Ce post-processeur est très similaire à l'extracteur d'expressions régulières. Il doit être placé en tant qu'enfant de HTTP Sampler ou de tout autre échantillonneur qui a des réponses. Il vous permettra d'extraire très facilement du contenu textuel, voir Syntaxe JSON Path .

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Noms des variables créées
Noms de variables séparés par des points-virgules qui contiendront les résultats des expressions JSON-PATH (doit correspondre au nombre d'expressions JSON-PATH)
Oui
Expressions de chemin JSON
Expressions JSON-PATH séparées par des points-virgules (doit correspondre au nombre de variables)
Oui
Les valeurs par défaut
Valeurs par défaut séparées par des points-virgules si les expressions JSON-PATH ne renvoient aucun résultat (doit correspondre au nombre de variables)
Non
Match n ° (0 pour aléatoire)
Si la requête JSON Path génère de nombreux résultats, vous pouvez choisir lesquels extraire en tant que variables :
  • 0 : signifie aléatoire (valeur par défaut)
  • -1 signifie extraire tous les résultats, ils seront nommés <nom de la variable> _N (où N va de 1 au nombre de résultats)
  • X : signifie extraire le X ème résultat. Si ce X ème est supérieur au nombre de correspondances, alors rien n'est retourné. La valeur par défaut sera utilisée
Non
Calculer la concaténation var
Si de nombreux résultats sont trouvés, le plugin les concaténera en utilisant le séparateur ' , ' et le stockera dans une variable nommée <nom de la variable> _ALL
Non
Post-processeur JSON
Post-processeur JSON
^

Extracteur de bordure ¶

Permet à l'utilisateur d'extraire des valeurs d'une réponse de serveur en utilisant les limites gauche et droite. En tant que post-processeur, cet élément s'exécutera après chaque requête Sample dans sa portée, testant les limites, extrayant les valeurs demandées, générant la chaîne de modèle et stockant le résultat dans le nom de variable donné.

Capture d'écran du panneau de configuration de Boundary Extractor
Capture d'écran du panneau de configuration de Boundary Extractor

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Postuler à:
Ceci est à utiliser avec des échantillonneurs qui peuvent générer des sous-échantillons, par exemple un échantillonneur HTTP avec des ressources intégrées, un lecteur de courrier ou des échantillons générés par le contrôleur de transaction.
  • Échantillon principal uniquement - ne s'applique qu'à l'échantillon principal
  • Sous-échantillons uniquement - s'applique uniquement aux sous-échantillons
  • Échantillon principal et sous-échantillons - s'applique aux deux.
  • Nom de la variable JMeter à utiliser - l'assertion doit être appliquée au contenu de la variable nommée
L'appariement est appliqué tour à tour à tous les échantillons éligibles. Par exemple, s'il y a un échantillon principal et 3 sous-échantillons, chacun contenant un seul test d'appariement (c'est-à-dire 4 appariements au total). Pour match number = 3 , Sous-échantillons uniquement, l'extracteur correspondra au 3 ème sous-échantillon. Pour le numéro de correspondance = 3 , Échantillon principal et sous-échantillons, l'extracteur correspondra au 2 e sous-échantillon (la 1 ère correspondance est l'échantillon principal). Pour le match number = 0 ou négatif, tous les échantillons qualifiés seront traités. Pour le numéro de correspondance > 0 , la correspondance s'arrêtera dès que suffisamment de correspondances auront été trouvées.
Oui
Champ à vérifier
Les champs suivants peuvent être cochés :
  • Corps - le corps de la réponse, par exemple le contenu d'une page Web (à l'exclusion des en-têtes)
  • Corps (non échappé) - le corps de la réponse, avec tous les codes d'échappement HTML remplacés. Notez que les échappements HTML sont traités sans tenir compte du contexte, de sorte que certaines substitutions incorrectes peuvent être effectuées.
    Notez que cette option impacte fortement les performances, donc ne l'utilisez qu'en cas d'absolue nécessité et soyez conscient de ses impacts
  • Corps en tant que document - le texte d'extraction de divers types de documents via Apache Tika (voir la section Afficher l'arborescence des résultats du document).
    Notez que l'option Corps en tant que document peut avoir un impact sur les performances, alors assurez-vous qu'elle est correcte pour votre test
  • En-têtes de demande - peuvent ne pas être présents pour les exemples non HTTP
  • En-têtes de réponse - peuvent ne pas être présents pour les échantillons non HTTP
  • URL
  • Code de réponse - par exemple 200
  • Message de réponse - par exemple OK
Les en-têtes peuvent être utiles pour les exemples HTTP ; il peut ne pas être présent pour d'autres types d'échantillons.
Oui
Nom de la variable créée
Le nom de la variable JMeter dans laquelle stocker le résultat. Notez également que chaque groupe est stocké sous [refname]_g# , où [refname] est la chaîne que vous avez entrée comme nom de référence, et # est le numéro de groupe, où le groupe 0 est la correspondance entière, le groupe 1 est la correspondance du première série de parenthèses, etc.
Oui
Limite gauche
Limite gauche de la valeur à trouver
Non
Limite droite
Limite droite de la valeur à trouver
Non
Match n ° (0 pour aléatoire)
Indique quelle correspondance utiliser. Les limites peuvent correspondre plusieurs fois.
  • Utilisez une valeur de zéro pour indiquer que JMeter doit choisir une correspondance au hasard.
  • Un nombre positif N signifie qu'il faut sélectionner la n ième correspondance.
  • Les nombres négatifs sont utilisés conjointement avec le contrôleur ForEach - voir ci-dessous.
Oui
Valeur par défaut
Si les limites ne correspondent pas, la variable de référence sera définie sur la valeur par défaut. Ceci est particulièrement utile pour les tests de débogage. Si aucune valeur par défaut n'est fournie, il est difficile de dire si les limites ne correspondent pas ou si la mauvaise variable est utilisée.

Cependant, si vous avez plusieurs éléments de test qui définissent la même variable, vous pouvez laisser la variable inchangée si l'expression ne correspond pas. Dans ce cas, supprimez la valeur par défaut une fois le débogage terminé.

Non, mais recommandé

Si le numéro de correspondance est défini sur un nombre non négatif et qu'une correspondance se produit, les variables sont définies comme suit :

  • refName - la valeur de l'extraction

Si aucune correspondance ne se produit, la variable refName est définie sur la valeur par défaut (sauf si celle-ci est absente).

Si le numéro de correspondance est défini sur un nombre négatif, toutes les correspondances possibles dans les données de l'échantillonneur sont traitées. Les variables sont définies comme suit :

  • refName_matchNr - le nombre de correspondances trouvées ; pourrait être 0
  • refName_ n , où n = 1 , 2 , 3 etc. - les chaînes générées par le modèle
  • refName_ n _g m , où m = 0 , 1 , 2 - les groupes pour match n
  • refName - toujours défini sur la valeur par défaut

Notez que la variable refName est toujours définie sur la valeur par défaut dans ce cas et que les variables de groupe associées ne sont pas définies.

Si les limites gauche et droite sont nulles, toutes les données sélectionnées dans la portée sont renvoyées
^

18.9 Fonctionnalités diverses


Plan de test

Le plan de test est l'endroit où les paramètres généraux d'un test sont spécifiés.

Des variables statiques peuvent être définies pour des valeurs répétées tout au long d'un test, telles que des noms de serveur. Par exemple, la variable SERVER pourrait être définie comme www.example.com , et le reste du plan de test pourrait s'y référer comme ${SERVER} . Cela simplifie le changement de nom ultérieur.

Si le même nom de variable est réutilisé sur un ou plusieurs éléments de configuration des variables définies par l'utilisateur , la valeur est définie sur la dernière définition du plan de test (lecture de haut en bas). Ces variables doivent être utilisées pour les éléments qui peuvent changer entre les exécutions de test, mais qui restent les mêmes pendant une exécution de test.

Notez que le plan de test ne peut pas faire référence aux variables qu'il définit.
Si vous devez construire d'autres variables à partir des variables du plan de test, utilisez un élément de test Variables définies par l'utilisateur .

La sélection de Tests fonctionnels indique à JMeter d'enregistrer les informations d'échantillon supplémentaires - Données de réponse et Données d'échantillonneur - dans tous les fichiers de résultats. Cela augmente les ressources nécessaires pour exécuter un test et peut avoir un impact négatif sur les performances de JMeter. Si davantage de données sont requises pour un échantillonneur particulier uniquement, ajoutez-y un écouteur et configurez les champs selon vos besoins.

L'option n'affecte pas les fichiers de résultats CSV, qui ne peuvent actuellement pas stocker de telles informations.

De plus, une option existe ici pour demander à JMeter d'exécuter le groupe de threads en série plutôt qu'en parallèle.

Exécuter les groupes de threads tearDown après l'arrêt des threads principaux : si cette option est sélectionnée, les groupes de démontage (le cas échéant) seront exécutés après l'arrêt progressif des threads principaux. Les threads tearDown ne seront pas exécutés si le test est arrêté de force.

Le plan de test fournit désormais un moyen simple d'ajouter un paramètre de chemin de classe à un plan de test spécifique. La fonctionnalité est additive, ce qui signifie que vous pouvez ajouter des fichiers jar ou des répertoires, mais la suppression d'une entrée nécessite le redémarrage de JMeter.

Notez que cela ne peut pas être utilisé pour ajouter des plugins JMeter GUI, car ils sont traités plus tôt.
Cependant, cela peut être utile pour les jar utilitaires tels que les pilotes JDBC. Les jars sont uniquement ajoutés au chemin de recherche pour le chargeur JMeter, pas pour le chargeur de classe système.

Les propriétés JMeter fournissent également une entrée pour charger des chemins de classe supplémentaires. Dans jmeter.properties , modifiez " user.classpath " ou " plugin_dependency_paths " pour inclure des bibliothèques supplémentaires. Voir Classpath de JMeter et Configuration de JMeter pour plus de détails.

Capture d'écran du panneau de contrôle du plan de test
Capture d'écran du panneau de contrôle du plan de test
^

Groupe de threads

Un groupe de threads définit un groupe d'utilisateurs qui exécuteront un cas de test particulier sur votre serveur. Dans l'interface graphique du groupe de threads, vous pouvez contrôler le nombre d'utilisateurs simulés (nombre de threads), le temps de montée en puissance (combien de temps il faut pour démarrer tous les threads), le nombre de fois pour effectuer le test et, éventuellement, un début et l'heure d'arrêt du test.

Voir aussi groupe de threads tearDown et groupe de threads setUp .

Lors de l'utilisation du planificateur, JMeter exécute le groupe de threads jusqu'à ce que le nombre de boucles soit atteint ou que la durée/l'heure de fin soit atteinte - selon la première éventualité. Notez que la condition n'est vérifiée qu'entre les échantillons ; lorsque la condition de fin est atteinte, ce thread s'arrête. JMeter n'interrompt pas les échantillonneurs qui attendent une réponse, de sorte que l'heure de fin peut être retardée arbitrairement.

Capture d'écran du panneau de configuration du groupe de threads
Capture d'écran du panneau de configuration du groupe de threads

Depuis JMeter 3.0, vous pouvez exécuter une sélection de groupes de threads en les sélectionnant et en cliquant avec le bouton droit de la souris. Un menu contextuel apparaîtra :

Menu contextuel pour démarrer une sélection de groupes de threads
Menu contextuel pour démarrer une sélection de groupes de threads

Notez que vous avez trois options pour exécuter la sélection des groupes de threads :
Commencer
Démarrer les groupes de threads sélectionnés uniquement
Commencez sans pause
Démarrer les groupes de threads sélectionnés uniquement mais sans exécuter les minuteries
Valider
Démarrez les groupes de threads sélectionnés uniquement en utilisant le mode de validation. Par défaut, cela exécute le groupe de threads en mode validation (voir ci-dessous)
Mode de validation :
ce mode permet une validation rapide d'un groupe de threads en l'exécutant avec un thread, une itération, sans minuterie et sans délai de démarrage défini sur 0 . Le comportement peut être modifié avec certaines propriétés en définissant dans user.properties :
testplan_validation.nb_threads_per_thread_group
Nombre de threads à utiliser pour valider un groupe de threads, par défaut 1
testplan_validation.ignore_timers
Ignorer les temporisateurs lors de la validation du groupe de threads du plan, par défaut 1
testplan_validation.number_iterations
Nombre d'itérations à utiliser pour valider un groupe de threads
testplan_validation.tpc_force_100_pct
Indique s'il faut forcer le contrôleur de débit en mode pourcentage à s'exécuter comme si le pourcentage était de 100 %. La valeur par défaut est false

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Action à entreprendre après une erreur de l'échantillonneur
Détermine ce qui se passe si une erreur d'échantillonneur se produit, soit parce que l'échantillon lui-même a échoué, soit parce qu'une assertion a échoué. Les choix possibles sont :
  • Continuer - ignorer l'erreur et poursuivre le test
  • Démarrer la boucle de thread suivante - ignorez l'erreur, démarrez la boucle suivante et continuez le test
  • Arrêter le thread - le thread actuel se termine
  • Arrêter le test - l'ensemble du test est arrêté à la fin de tous les échantillons en cours.
  • Arrêter le test maintenant - l'ensemble du test est arrêté brusquement. Tous les échantillonneurs en cours sont interrompus si possible.
Non
Le nombre de fils
Nombre d'utilisateurs à simuler.
Oui
Période de montée en puissance
Combien de temps JMeter devrait prendre pour démarrer tous les threads. S'il y a 10 threads et un temps de montée en puissance de 100 secondes, chaque thread commencera 10 secondes après le démarrage du thread précédent, pour un temps total de 100 secondes pour que le test soit pleinement opérationnel.
Le premier thread démarrera toujours directement, donc si vous avez configuré un thread, le temps de montée en puissance est effectivement zéro . Pour la même raison, le dixième thread de l'exemple ci-dessus sera en fait démarré après 90 secondes et non 100 secondes.
Oui
Nombre de boucles
Nombre de fois pour exécuter le scénario de test. Alternativement, " infini " peut être sélectionné, provoquant l'exécution du test jusqu'à ce qu'il soit arrêté manuellement ou que la fin de la durée de vie du thread soit atteinte.
Oui, sauf si Infini est sélectionné
Retarder la création du thread jusqu'à ce que nécessaire
Si cette option est sélectionnée, les threads sont créés uniquement lorsque la proportion appropriée du temps de montée en puissance s'est écoulée. Ceci est plus approprié pour les tests avec un temps de montée en puissance qui est nettement plus long que le temps d'exécution d'un seul thread. C'est-à-dire où les threads précédents se terminent avant que les suivants ne commencent.
S'il n'est pas sélectionné, tous les threads sont créés au démarrage du test (ils s'arrêtent ensuite pendant la proportion appropriée du temps de montée en puissance). Il s'agit de la valeur par défaut d'origine et convient aux tests où les threads sont actifs pendant la majeure partie du test.
Oui
Spécifier la durée de vie du thread
Si sélectionné, limite le temps d'opération du thread aux limites données
Oui
Durée (secondes)
Si la case du planificateur est cochée, on peut choisir une heure de fin relative. JMeter l'utilisera pour calculer l'heure de fin.
Non
Délai de démarrage (secondes)
Si la case du planificateur est cochée, on peut choisir un délai de démarrage relatif. JMeter l'utilisera pour calculer l'heure de début.
Non
^

Workbench

^

Gestionnaire SSL

Le gestionnaire SSL est un moyen de sélectionner un certificat client afin que vous puissiez tester les applications qui utilisent l'infrastructure à clé publique (PKI). Il n'est nécessaire que si vous n'avez pas configuré les propriétés système appropriées.

Si vous souhaitez tester l'authentification du certificat client, consultez Configuration du magasin de clés
Choisir un certificat client

Vous pouvez soit utiliser un magasin de clés au format Java Key Store (JKS), soit un fichier Public Key Certificate Standard #12 (PKCS12) pour vos certificats clients. Il existe une fonctionnalité des bibliothèques JSSE qui nécessite que vous ayez au moins un mot de passe à six caractères sur votre clé (au moins pour l'utilitaire keytool fourni avec votre JDK).

Pour sélectionner le certificat client, choisissez Options  →  Gestionnaire SSL dans la barre de menus. Il vous sera présenté un outil de recherche de fichiers qui recherche les fichiers PKCS12 par défaut. Votre fichier PKCS12 doit avoir l'extension ' .p12 ' pour que SSL Manager le reconnaisse comme un fichier PKCS12. Tout autre fichier sera traité comme un magasin de clés JKS moyen. Si JSSE est correctement installé, le mot de passe vous sera demandé. La zone de texte ne masque pas les caractères que vous tapez à ce stade. Assurez-vous donc que personne ne regarde par-dessus votre épaule. L'implémentation actuelle suppose que le mot de passe du magasin de clés est également le mot de passe de la clé privée du client avec lequel vous souhaitez vous authentifier.

Ou vous pouvez définir les propriétés système appropriées - voir le fichier system.properties .

La prochaine fois que vous exécuterez votre test, le gestionnaire SSL examinera votre magasin de clés pour voir s'il dispose d'au moins une clé. S'il n'y a qu'une seule clé, SSL Manager la sélectionnera pour vous. S'il y a plus d'une clé, il sélectionne actuellement la première clé. Il n'existe actuellement aucun moyen de sélectionner d'autres entrées dans le magasin de clés, la clé souhaitée doit donc être la première.

Choses à surveiller

Votre certificat d'autorité de certification (CA) doit être correctement installé s'il n'est pas signé par l'un des cinq certificats CA livrés avec votre JDK. Une méthode pour l'installer consiste à importer votre certificat CA dans un fichier JKS et à nommer le fichier JKS " jssecacerts ". Placez le fichier dans le dossier lib/security de votre JRE . Ce fichier sera lu avant le fichier " cacerts " dans le même répertoire. Gardez à l'esprit que tant que le fichier " jssecacerts " existe, les certificats installés dans " cacerts " ne seront pas utilisés. Cela peut vous causer des problèmes. Si cela ne vous dérange pas d'importer votre certificat CA dans le fichier " cacerts", vous pouvez alors vous authentifier auprès de tous les certificats CA installés.

^

Enregistreur de script de test HTTP(S) (auparavant : Serveur proxy HTTP )

L'enregistreur de script de test HTTP(S) permet à JMeter d'intercepter et d'enregistrer vos actions pendant que vous naviguez dans votre application Web avec votre navigateur normal. JMeter créera des exemples d'objets de test et les stockera directement dans votre plan de test au fur et à mesure (afin que vous puissiez visualiser les échantillons de manière interactive pendant que vous les créez).
Assurez-vous de lire cette page wiki pour configurer correctement JMeter.

Pour utiliser l'enregistreur, ajoutez l'élément HTTP(S) Test Script Recorder. Faites un clic droit sur l'élément Plan de test pour obtenir le menu Ajouter : ( Ajouter  →  Éléments non-test  →  Enregistreur de script de test HTTP(S) ).

L'enregistreur est implémenté en tant que serveur proxy HTTP(S). Vous devez configurer votre navigateur pour utiliser le proxy pour toutes les requêtes HTTP et HTTPS.

N'utilisez pas JMeter comme proxy pour tout autre type de requête - FTP, etc. - car JMeter ne peut pas les gérer.

Utilisez idéalement le mode de navigation privée lors de l'enregistrement de la session. Cela devrait garantir que le navigateur démarre sans cookies stockés et empêcher l'enregistrement de certaines modifications. Par exemple, Firefox n'autorise pas l'enregistrement permanent des remplacements de certificat.

Enregistrement HTTPS et certificats

Les connexions HTTPS utilisent des certificats pour authentifier la connexion entre le navigateur et le serveur Web. Lors de la connexion via HTTPS, le serveur présente le certificat au navigateur. Pour authentifier le certificat, le navigateur vérifie que le certificat du serveur est signé par une autorité de certification (CA) liée à l'une de ses CA racines intégrées.

Les navigateurs vérifient également que le certificat correspond au bon hôte ou domaine, qu'il est valide et qu'il n'a pas expiré.
Si l'une des vérifications du navigateur échoue, l'utilisateur sera invité à décider s'il autorise ou non la connexion.

JMeter doit utiliser son propre certificat pour lui permettre d'intercepter la connexion HTTPS du navigateur. En effet, JMeter doit faire semblant d'être le serveur cible.

JMeter générera son ou ses propres certificats. Ceux-ci sont générés avec une période de validité définie par la propriété proxy.cert.validity , 7 jours par défaut et des mots de passe aléatoires. Si JMeter détecte qu'il s'exécute sous Java 8 ou version ultérieure, il générera des certificats pour chaque serveur cible si nécessaire (mode dynamique) à moins que la propriété suivante ne soit définie : proxy.cert.dynamic_keys=false. Lors de l'utilisation du mode dynamique, le certificat sera pour le nom d'hôte correct et sera signé par un certificat CA généré par JMeter. Par défaut, ce certificat CA ne sera pas approuvé par le navigateur, mais il peut être installé en tant que certificat approuvé. Une fois cela fait, les certificats de serveur générés seront acceptés par le navigateur. Cela présente l'avantage que même les ressources HTTPS intégrées peuvent être interceptées et qu'il n'est pas nécessaire de remplacer les vérifications du navigateur pour chaque nouveau serveur.

Les navigateurs ne demandent pas de ressources intégrées. Ainsi, avec les versions antérieures, les ressources intégrées ne seraient téléchargées que pour les serveurs déjà "connus" du navigateur.

À moins qu'un magasin de clés ne soit fourni (et que vous définissiez la propriété proxy.cert.alias ), JMeter doit utiliser l'application keytool pour créer les entrées du magasin de clés. JMeter inclut du code pour vérifier que keytool est disponible en regardant à divers endroits standard. Si JMeter ne parvient pas à trouver l'application keytool, il signalera une erreur. Si nécessaire, la propriété système keytool.directory peut être utilisée pour indiquer à JMeter où trouver keytool. Cela doit être défini dans le fichier system.properties .

Les certificats JMeter sont générés (si nécessaire) lorsque le bouton Démarrer est enfoncé.

La génération de certificats peut prendre un certain temps, période pendant laquelle l'interface graphique ne répondra pas.
Le curseur se transforme en sablier pendant que cela se produit. Lorsque la génération du certificat est terminée, l'interface graphique affiche une boîte de dialogue contextuelle contenant les détails du certificat pour l'autorité de certification racine. Ce certificat doit être installé par le navigateur pour qu'il accepte les certificats hôtes générés par JMeter ; voir ci- dessous pour plus de détails.

Si nécessaire, vous pouvez forcer JMeter à régénérer le keystore (et les certificats exportés - ApacheJMeterTemporaryRootCA[.usr|.crt] ) en supprimant le fichier keystore proxyserver.jks du répertoire JMeter.

Ce certificat ne fait pas partie des certificats auxquels les navigateurs font normalement confiance et ne sera pas destiné au bon hôte.
En conséquence:

  • Le navigateur devrait afficher une boîte de dialogue vous demandant si vous souhaitez accepter le certificat ou non. Par exemple:
    1) Le nom du serveur " www.example.com " ne correspond pas au nom du certificat
       " _ JMeter Root CA pour l'enregistrement (INSTALLER UNIQUEMENT SI C'EST LE VÔTRE) ". Quelqu'un essaie peut-être de vous espionner.
    2) Le certificat pour " _ JMeter Root CA for recording (INSTALL ONLY IF IT S YOURS) " est signé par l'autorité de certification inconnue
       " _ JMeter Root CA pour l'enregistrement (INSTALLER UNIQUEMENT SI C'EST LE VÔTRE) ". Il n'est pas possible de vérifier qu'il s'agit d'un certificat valide.
    
    Vous devrez accepter le certificat afin de permettre au proxy JMeter d'intercepter le trafic SSL afin de l'enregistrer. Cependant, n'acceptez pas ce certificat de façon permanente ; il ne devrait être accepté que temporairement. Les navigateurs n'invitent ce dialogue que pour le certificat de l'URL principale, pas pour les ressources chargées dans la page, telles que les images, les fichiers CSS ou JavaScript hébergés sur un CDN externe sécurisé. Si vous avez de telles ressources (gmail en a par exemple), vous devrez d'abord naviguer manuellement vers ces autres domaines afin d'accepter le certificat de JMeter pour eux. Vérifiez dans jmeter.log les domaines sécurisés pour lesquels vous devez enregistrer un certificat.
  • Si le navigateur a déjà enregistré un certificat validé pour ce domaine, le navigateur détectera JMeter comme une faille de sécurité et refusera de charger la page. Si tel est le cas, vous devez supprimer le certificat de confiance du magasin de clés de votre navigateur.

Les versions de JMeter à partir de la version 2.10 prennent toujours en charge cette méthode, et continueront à le faire si vous définissez la propriété suivante : proxy.cert.alias Les propriétés suivantes peuvent être utilisées pour modifier le certificat utilisé :

  • proxy.cert.directory - le répertoire dans lequel trouver le certificat (par défaut = JMeter bin/ )
  • proxy.cert.file - nom du fichier keystore (par défaut " proxyserver.jks ")
  • proxy.cert.keystorepass - mot de passe du magasin de clés (mot de passe par défaut ) [Ignoré si vous utilisez un certificat JMeter]
  • proxy.cert.keypassword - mot de passe de la clé de certificat (mot de passe par défaut ) [Ignoré si vous utilisez un certificat JMeter]
  • proxy.cert.type - le type de certificat (par défaut " JKS ") [Ignoré si vous utilisez un certificat JMeter]
  • proxy.cert.factory - l'usine (par défaut " SunX509 ") [Ignoré si vous utilisez un certificat JMeter]
  • proxy.cert.alias - l'alias de la clé à utiliser. Si cela est défini, JMeter n'essaie pas de générer son ou ses propres certificats.
  • proxy.ssl.protocol - le protocole à utiliser (par défaut " SSLv3 ")
Si votre navigateur utilise actuellement un proxy (par exemple, un intranet d'entreprise peut acheminer toutes les requêtes externes via un proxy), vous devez indiquer à JMeter d'utiliser ce proxy avant de démarrer JMeter, en utilisant les options de ligne de commande -H et -P . Ce paramètre sera également nécessaire lors de l'exécution du plan de test généré.

Installation du certificat JMeter CA pour l'enregistrement HTTPS

Comme mentionné ci-dessus, lorsqu'il est exécuté sous Java 8, JMeter peut générer des certificats pour chaque serveur. Pour que cela fonctionne correctement, le certificat de signature de l'autorité de certification racine utilisé par JMeter doit être approuvé par le navigateur. La première fois que l'enregistreur est démarré, il générera les certificats si nécessaire. Le certificat de l'autorité de certification racine est exporté dans un fichier portant le nom ApacheJMeterTemporaryRootCA dans le répertoire de lancement actuel. Une fois les certificats configurés, JMeter affichera une boîte de dialogue avec les détails du certificat actuel. À ce stade, le certificat peut être importé dans le navigateur, conformément aux instructions ci-dessous.

Notez qu'une fois que le certificat de l'autorité de certification racine a été installé en tant qu'autorité de certification de confiance, le navigateur fera confiance à tous les certificats signés par celui-ci. Jusqu'à ce que le certificat expire ou que le certificat soit supprimé du navigateur, il n'avertit pas l'utilisateur que le certificat est utilisé. Ainsi, toute personne pouvant obtenir le magasin de clés et le mot de passe peut utiliser le certificat pour générer des certificats qui seront acceptés par tous les navigateurs qui font confiance au certificat de l'autorité de certification racine JMeter. Pour cette raison, le mot de passe pour le magasin de clés et les clés privées sont générés de manière aléatoire et une courte période de validité est utilisée. Les mots de passe sont stockés dans la zone des préférences locales. Assurez-vous que seuls les utilisateurs de confiance ont accès à l'hôte avec le magasin de clés.

La fenêtre contextuelle qui s'affiche une fois que vous démarrez l'enregistreur est une fenêtre contextuelle d'information :
Fenêtre contextuelle du certificat d'installation de l'enregistreur
Fenêtre contextuelle du certificat d'installation de l'enregistreur
Cliquez simplement sur OK et continuez.
Installation du certificat dans Firefox

Choisissez les options suivantes :

  • Outils / Options
  • Avancé / Certificats
  • Afficher les certificats
  • Les autorités
  • Importer …
  • Accédez au répertoire de lancement de JMeter et cliquez sur le fichier ApacheJMeterTemporaryRootCA.crt , appuyez sur Ouvrir
  • Cliquez sur Afficher et vérifiez que les détails du certificat correspondent à ceux affichés par l'enregistreur de script de test JMeter
  • Si OK, sélectionnez « Faire confiance à cette autorité de certification pour identifier les sites Web », et appuyez sur OK
  • Fermez les boîtes de dialogue en appuyant sur OK si nécessaire
Installation du certificat dans Chrome ou Internet Explorer

Chrome et Internet Explorer utilisent le même magasin de confiance pour les certificats.

  • Accédez au répertoire de lancement de JMeter et cliquez sur le fichier ApacheJMeterTemporaryRootCA.crt et ouvrez-le
  • Cliquez sur l'onglet " Détails " et vérifiez que les détails du certificat correspondent à ceux affichés par l'enregistreur de script de test JMeter
  • Si OK, retournez à l' onglet « Général », et cliquez sur « Installer le certificat… » et suivez les invites de l'assistant
Installation du certificat dans Opera
  • Outils / Préférences / Avancé / Sécurité
  • Gérer les certificats…
  • Sélectionnez l' onglet « Intermédiaire », cliquez sur « Importer… »
  • Accédez au répertoire de lancement de JMeter et cliquez sur le fichier ApacheJMeterTemporaryRootCA.usr et ouvrez-le.
Capture d'écran du panneau de configuration de l'enregistreur de script de test HTTP(S)
Capture d'écran du panneau de configuration de l'enregistreur de script de test HTTP(S)

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Port
Port écouté par l'enregistreur de script de test HTTP(S). 8888 est la valeur par défaut, mais vous pouvez la modifier.
Oui
Domaines HTTPS
Liste des noms de domaine (ou d'hôte) pour HTTPS. Utilisez-le pour pré-générer des certificats pour tous les serveurs que vous souhaitez enregistrer.
Par exemple, *.example.com,*.subdomain.example.com
Notez que les domaines génériques ne s'appliquent qu'à un seul niveau, c'est-à-dire que abc.subdomain.example.com correspond à *.subdomain.example.com mais pas à *.example.com
Non
Contrôleur cible
Le contrôleur où le proxy stockera les échantillons générés. Par défaut, il recherchera un contrôleur d'enregistrement et le stockera là où il se trouve.
Oui
Regroupement
S'il faut regrouper les échantillonneurs pour les demandes d'un seul "clic" (demandes reçues sans séparation temporelle significative), et comment représenter ce groupement dans l'enregistrement :
  • Ne regroupez pas les échantillonneurs - stockez tous les échantillonneurs enregistrés de manière séquentielle, sans aucun regroupement.
  • Ajouter des séparateurs entre les groupes - ajoutez un contrôleur nommé " -------------- " pour créer une séparation visuelle entre les groupes. Sinon, les échantillonneurs sont tous stockés séquentiellement.
  • Placez chaque groupe dans un nouveau contrôleur - créez un nouveau contrôleur simple pour chaque groupe et stockez-y tous les échantillonneurs de ce groupe.
  • Enregistrez uniquement le 1 er sampler de chaque groupe - seule la première demande de chaque groupe sera enregistrée. Les indicateurs " Suivre les redirections " et " Récupérer toutes les ressources intégrées… " seront activés dans ces échantillonneurs.
  • Placez chaque groupe dans un nouveau contrôleur de transaction - créez un nouveau contrôleur de transaction pour chaque groupe et stockez-y tous les échantillonneurs de ce groupe.
La propriété proxy.pause détermine l'écart minimum dont JMeter a besoin entre les requêtes pour les traiter comme des "clics" séparés. La valeur par défaut est 5000 (millisecondes) soit 5 secondes. Si vous utilisez le regroupement, assurez-vous de laisser l'espace requis entre les clics.
Oui
Capturer les en-têtes HTTP
Faut-il ajouter des en-têtes au plan ? Si spécifié, un gestionnaire d'en-tête sera ajouté à chaque échantillonneur HTTP. Le serveur proxy supprime toujours les en-têtes Cookie et Authorization des gestionnaires d'en-tête générés. Par défaut, il supprime également les en-têtes If-Modified-Since et If-None-Match . Ceux-ci sont utilisés pour déterminer si les éléments du cache du navigateur sont à jour ; lors de l'enregistrement, on veut normalement télécharger tout le contenu. Pour modifier les en-têtes supplémentaires à supprimer, définissez la propriété JMeter proxy.headers.remove sous la forme d'une liste d'en-têtes séparés par des virgules.
Oui
Ajouter des assertions
Ajouter une assertion vide à chaque sampler ?
Oui
Correspondance d'expression régulière
Utiliser Regex Matching lors du remplacement de variables ? Si coché, le remplacement utilisera les limites des mots, c'est-à-dire qu'il ne remplacera que les mots correspondant aux valeurs de la variable, pas une partie d'un mot. Une limite de mot suit la définition de Perl5 et est équivalente à \b . Plus d'informations ci-dessous dans le paragraphe " Remplacement de variables définies par l'utilisateur ".
Oui
Préfixe/Nom de la transaction
Ajoutez un préfixe au nom de l'échantillonneur pendant l'enregistrement (mode Préfixe). Ou remplacez le nom de l'échantillonneur par le nom choisi par l'utilisateur (nom de la transaction)
Non
Schéma de nommage
Sélectionnez le schéma de nommage des noms d'échantillonneur pendant l'enregistrement. La valeur par défaut est le nom de la transaction
Non
Format de nommage
Si Utiliser la chaîne de format est sélectionné comme schéma de nommage, un format libre peut être donné. Les espaces réservés pour le nom de la transaction, le chemin et le compteur peuvent être donnés par #{name} , #{path} et #{counter} . Un format simple pourrait être " #{name}-#{counter} ", ce qui équivaudrait au schéma de nommage numéroté par défaut. Pour un formatage plus complexe, le formatage Java pour MessageFormat peut être utilisé, comme dans " #{counter,number,000}: #{name}-#{path} ", qui imprimerait le compteur rempli avec jusqu'à trois zéros. La valeur par défaut est une chaîne vide.
Non
Valeur de départ du compteur
Peut être utilisé pour réinitialiser le compteur à une valeur donnée. Notez que l'échantillon suivant incrémentera d'abord puis utilisera la valeur. Si le premier échantillonneur doit commencer par 1 , remettre le compteur à 0 .
Non
Créer une nouvelle transaction après la demande (ms)
Temps d'inactivité entre deux requêtes nécessaires pour les considérer en deux groupes distincts.
Non
Taper
Quel type d'échantillonneur générer (le HTTPClient par défaut ou Java)
Oui
Rediriger automatiquement
Définir la redirection automatiquement dans les échantillonneurs générés ?
Oui
Suivre les redirections
Définir Suivre les redirections dans les échantillonneurs générés ?
Remarque : consultez la section "Enregistrement et redirections" ci-dessous pour obtenir des informations importantes.
Oui
Utiliser Keep-Alive
Définissez Use Keep-Alive dans les échantillonneurs générés ?
Oui
Récupérer toutes les ressources intégrées
Définir Récupérer toutes les ressources intégrées dans les échantillonneurs générés ?
Oui
Filtre Type de contenu
Filtrez les requêtes en fonction du type de contenu - par exemple " text/html [;charset=utf-8 ] ". Les champs sont des expressions régulières qui sont vérifiées pour voir si elles sont contenues dans le content-type . [N'a pas à correspondre à l'intégralité du champ]. Le filtre d'inclusion est vérifié en premier, puis le filtre d'exclusion. Les échantillons filtrés ne seront pas stockés.
Remarque : ce filtrage est appliqué au type de contenu de la réponse
Non
Modèles à inclure
Expressions régulières mises en correspondance avec l'URL complète échantillonnée. Permet de filtrer les demandes enregistrées. Toutes les requêtes passent, mais seules celles qui répondent aux exigences des champs Inclure / Exclure sont enregistrées . Si Inclure et Exclure sont laissés vides, alors tout est enregistré (ce qui peut entraîner des dizaines d'échantillons enregistrés pour chaque page, au fur et à mesure que des images, des feuilles de style, etc. sont enregistrées).
S'il y a au moins une entrée dans le champ Inclure , seules les demandes qui correspondent à un ou plusieurs modèles d' inclusion sont enregistrées
.
Non
Modèles à exclure
Expressions régulières mises en correspondance avec l'URL échantillonnée.
Toutes les demandes qui correspondent à un ou plusieurs modèles d' exclusion ne sont pas enregistrées
.
Non
Avertir les enfants auditeurs des échantillonneurs filtrés
Avertir les enfants auditeurs des échantillonneurs filtrés
Toute réponse correspondant à un ou plusieurs modèles d'exclusion n'est pas transmise aux auditeurs enfants (Afficher l'arborescence des résultats)
.
Non
Bouton Start
Démarrez le serveur proxy. JMeter écrit le message suivant sur la console une fois que le serveur proxy a démarré et qu'il est prêt à recevoir des requêtes : " Proxy up and running ! ".
N / A
Bouton d'arrêt
Arrêtez le serveur proxy.
N / A
Bouton de redémarrage
Arrête et redémarre le serveur proxy. Ceci est utile lorsque vous modifiez/ajoutez/supprimez une expression de filtre d'inclusion/exclusion.
N / A

Enregistrement et redirections

Pendant l'enregistrement, le navigateur suivra une réponse de redirection et générera une demande supplémentaire. Le proxy enregistrera à la fois la demande d'origine et la demande redirigée (sous réserve des exclusions configurées). Les exemples générés ont " Follow Redirects " sélectionné par défaut, car c'est généralement mieux.

Les redirections peuvent dépendre de la demande d'origine, de sorte que la répétition de l'échantillon enregistré à l'origine peut ne pas toujours fonctionner.

Maintenant, si JMeter est configuré pour suivre la redirection pendant la relecture, il émettra la demande d'origine, puis rejouera la demande de redirection qui a été enregistrée. Pour éviter cette relecture en double, JMeter essaie de détecter quand un échantillon est le résultat d'une redirection précédente. Si la réponse actuelle est une redirection, JMeter enregistrera l'URL de redirection. Lorsque la requête suivante est reçue, elle est comparée à l'URL de redirection enregistrée et s'il y a une correspondance, JMeter désactivera l'échantillon généré. Il ajoute également des commentaires à la chaîne de redirection. Cela suppose que toutes les requêtes d'une chaîne de redirection se succéderont sans aucune requête intermédiaire. Pour désactiver la détection de redirection, définissez la propriété proxy.redirect.disabling=false

Inclut et exclut

Les modèles d'inclusion et d'exclusion sont traités comme des expressions régulières (à l'aide de Jakarta ORO). Ils seront mis en correspondance avec le nom d'hôte, le port (réel ou implicite), le chemin et la requête (le cas échéant) de chaque requête de navigateur. Si l'URL que vous parcourez est
" http://localhost/jmeter/index.html?username=xxxx ",
alors l'expression régulière sera testée par rapport à la chaîne :
" localhost:80/jmeter/index.html?username=xxxx ".
Ainsi, si vous souhaitez inclure tous les fichiers .html , votre expression régulière pourrait ressembler à :
" .*\.html(\?.*)? " - ou " .*\.html si vous savez qu'il n'y a pas de chaîne de requête ou vous ne voulez que des pages html sans chaînes de requête.

S'il existe des modèles d'inclusion, l'URL doit correspondre à au moins l'un des modèles , sinon elle ne sera pas enregistrée. S'il existe des modèles d'exclusion, l'URL ne doit correspondre à aucun des modèles , sinon elle ne sera pas enregistrée. En utilisant une combinaison d'inclusions et d'exclusions, vous devriez pouvoir enregistrer ce qui vous intéresse et ignorer ce qui ne vous intéresse pas.

NB la chaîne qui correspond à l'expression régulière doit être la même que la chaîne entière host+path.
Ainsi " \.html " ne correspondra pas à localhost:80/index.html

Capture de données POST binaires

JMeter est capable de capturer des données POST binaires. Pour configurer quels types de contenu sont traités comme binaires, mettez à jour la propriété JMeter proxy.binary.types . Les paramètres par défaut sont les suivants :

# Ces types de contenu seront gérés en enregistrant la requête dans un fichier :
proxy.binary.types=application/x-amf,application/x-java-serialized-object
# Les fichiers seront enregistrés dans ce répertoire :
proxy.binary.directory=utilisateur.dir
# Les fichiers seront créés avec ce suffixe de fichier :
proxy.binary.filesuffix=.binaire

Ajout de minuteries

Il est également possible que le proxy ajoute des temporisateurs au script enregistré. Pour ce faire, créez un minuteur directement dans le composant HTTP(S) Test Script Recorder. Le proxy placera une copie de cette minuterie dans chaque échantillon qu'il enregistre, ou dans le premier échantillon de chaque groupe si vous utilisez le regroupement. Cette copie sera ensuite analysée pour les occurrences de la variable ${T} dans ses propriétés, et toutes ces occurrences seront remplacées par l'intervalle de temps depuis l'échantillonneur précédent enregistré (en millisecondes).

Lorsque vous êtes prêt à commencer, appuyez sur " démarrer ".

Vous devrez modifier les paramètres proxy de votre navigateur pour pointer vers le serveur et le port appropriés, où le serveur est la machine sur laquelle JMeter s'exécute, et le numéro de port provient du panneau de configuration proxy indiqué ci-dessus.

Où les échantillons sont-ils enregistrés ?

JMeter place les échantillons enregistrés dans le contrôleur cible que vous choisissez. Si vous choisissez l'option par défaut " Utiliser le contrôleur d'enregistrement ", ils seront stockés dans le premier contrôleur d'enregistrement trouvé dans l'arborescence des objets de test (assurez-vous donc d'ajouter un contrôleur d'enregistrement avant de commencer l'enregistrement).

Si le proxy ne semble pas enregistrer d'échantillons, cela peut être dû au fait que le navigateur n'utilise pas réellement le proxy. Pour vérifier si c'est le cas, essayez d'arrêter le proxy. Si le navigateur télécharge toujours des pages, c'est qu'il n'envoyait pas de requêtes via le proxy. Vérifiez les options du navigateur. Si vous essayez d'enregistrer à partir d'un serveur fonctionnant sur le même hôte, vérifiez que le navigateur n'est pas défini sur « Contourner le serveur proxy pour les adresses locales » (cet exemple provient d'IE7, mais il y aura des options similaires pour d'autres navigateurs). Si JMeter n'enregistre pas les URL du navigateur telles que http://localhost/ ou http://127.0.0.1/ , essayez d'utiliser le nom d'hôte ou l'adresse IP sans bouclage, par exemple http://myhost/ ou http://192.168. 0,2/ .

Gestion des valeurs par défaut des requêtes HTTP

Si l'enregistreur de script de test HTTP(S) trouve des valeurs par défaut de requête HTTP activées directement dans le contrôleur où les échantillons sont stockés, ou directement dans l'un de ses contrôleurs parents, les échantillons enregistrés auront des champs vides pour les valeurs par défaut que vous avez spécifiées. Vous pouvez contrôler davantage ce comportement en plaçant un élément HTTP Request Defaults directement dans l'enregistreur de script de test HTTP(S), dont les valeurs non vides remplaceront celles des autres HTTP Request Defaults. Voir Meilleures pratiques avec l'enregistreur de script de test HTTP(S) pour plus d'informations.

Remplacement de variable définie par l'utilisateur

De même, si l'enregistreur de script de test HTTP(S) trouve des variables définies par l'utilisateur (UDV) directement dans le contrôleur où les échantillons sont stockés, ou directement dans l'un de ses contrôleurs parents, les échantillons enregistrés auront toutes les occurrences des valeurs de ces variables. remplacé par la variable correspondante. Encore une fois, vous pouvez placer des variables définies par l'utilisateur directement dans l'enregistreur de script de test HTTP(S) pour remplacer les valeurs à remplacer. Voir Meilleures pratiques avec l'enregistreur de script de test pour plus d'informations.

Veuillez noter que la correspondance est sensible à la casse.

Remplacement par des Variables : par défaut, le serveur Proxy recherche toutes les occurrences des valeurs UDV. Si vous définissez la variable WEB avec la valeur www , par exemple, la chaîne www sera remplacée par ${WEB} partout où elle se trouve. Pour éviter que cela ne se produise partout, cochez la case " Regex Matching ". Cela indique au serveur proxy de traiter les valeurs comme des regex (en utilisant les comparateurs de regex compatibles perl5 fournis par ORO).

Si " Regex Matching " est sélectionné, chaque variable sera compilée dans une regex compatible perl incluse dans \b( et )\b . De cette façon, chaque correspondance commencera et se terminera à une limite de mots.

Notez que les caractères de délimitation ne font pas partie du groupe correspondant, par exemple n.* pour correspondre à name out of You can call me 'name' .

Si vous ne voulez pas que votre regex soit entourée de ces correspondances de limites, vous devez enfermer votre regex entre parenthèses, par exemple ('.*?') pour faire correspondre 'name' à You can call me 'name' .

Les variables seront vérifiées dans un ordre aléatoire. Assurez-vous donc que les correspondances potentielles ne se chevauchent pas. Les correspondances qui se chevauchent seraient .* (qui correspond à n'importe quoi) et www (qui correspond à www uniquement). Les apparieurs qui ne se chevauchent pas seraient a+ (correspond à une séquence de a ) et b+ (correspond à une séquence de b ).

Si vous voulez faire correspondre une chaîne entière uniquement, mettez-la entre (^ et $) , par exemple (^thus$) . Les parenthèses sont nécessaires, car les caractères de délimitation normalement ajoutés empêcheront ^ et $ de correspondre.

Si vous souhaitez faire correspondre /images au début d'une chaîne uniquement, utilisez la valeur (^/images) . Jakarta ORO prend également en charge l'anticipation de largeur nulle, de sorte que l'on peut faire correspondre /images/… mais conserver le / final dans la sortie en utilisant (^/images(?=/)) .

Notez que la version actuelle de Jakarta ORO ne prend pas en charge le look-behind - c'est-à-dire (?<=…) ou (?<!…) .

Faites attention aux correspondances qui se chevauchent. Par exemple, la valeur .* en tant que regex dans une variable nommée regex correspondra en partie à une variable remplacée précédente, ce qui entraînera quelque chose comme ${{regex} , ce qui n'est probablement pas le résultat souhaité.

S'il y a des problèmes d'interprétation des variables en tant que modèles, ceux-ci sont signalés dans jmeter.log , alors assurez-vous de vérifier cela si les UDV ne fonctionnent pas comme prévu.

Lorsque vous avez terminé d'enregistrer vos échantillons de test, arrêtez le serveur proxy (appuyez sur le bouton « stop »). N'oubliez pas de réinitialiser les paramètres de proxy de votre navigateur. Maintenant, vous pouvez trier et réorganiser le script de test, ajouter des minuteries, des écouteurs, un gestionnaire de cookies, etc.

Comment puis-je également enregistrer les réponses du serveur ?

Placez simplement un écouteur Afficher l'arborescence des résultats en tant qu'enfant de l'enregistreur de script de test HTTP(S) et les réponses seront affichées. Vous pouvez également ajouter un post-processeur de sauvegarde des réponses à un fichier qui enregistrera les réponses dans des fichiers.

Associer les requêtes aux réponses

Si vous définissez la propriété proxy.number.requests=true , JMeter ajoutera un numéro à chaque échantillonneur et à chaque réponse. Notez qu'il peut y avoir plus de réponses que d'échantillonneurs si des exclusions ou des inclusions ont été utilisées. Les réponses qui ont été exclues auront des étiquettes entre [ et ], par exemple [23 /favicon.ico]

Gestionnaire de cookies

Si le serveur que vous testez utilise des cookies, n'oubliez pas d'ajouter un gestionnaire de cookies HTTP au plan de test lorsque vous avez terminé de l'enregistrer. Pendant l'enregistrement, le navigateur gère tous les cookies, mais JMeter a besoin d'un gestionnaire de cookies pour gérer les cookies lors d'un test. Le serveur JMeter Proxy transmet tous les cookies envoyés par le navigateur lors de l'enregistrement, mais ne les enregistre pas dans le plan de test car ils sont susceptibles de changer entre les exécutions.

Gestionnaire d'autorisation

L'enregistreur de script de test HTTP(S) récupère l'en-tête " Authentication ", tente de calculer la stratégie d'authentification. Si le gestionnaire d'autorisations a été ajouté manuellement au contrôleur cible, HTTP(S) Test Script Recorder le trouvera et ajoutera l'autorisation (celles qui correspondent seront supprimées). Sinon, le gestionnaire d'autorisations sera ajouté au contrôleur cible avec l'objet d'autorisation. Vous devrez peut-être corriger les valeurs calculées automatiquement après l'enregistrement.

Télécharger des fichiers

Certains navigateurs (par exemple Firefox et Opera) n'incluent pas le nom complet d'un fichier lors du téléchargement de fichiers. Cela peut entraîner l'échec du serveur proxy JMeter. Une solution consiste à s'assurer que tous les fichiers à télécharger se trouvent dans le répertoire de travail de JMeter, soit en y copiant les fichiers, soit en démarrant JMeter dans le répertoire contenant les fichiers.

Enregistrement de protocoles non textuels basés sur HTTP non disponibles nativement dans JMeter

Vous devrez peut-être enregistrer un protocole HTTP qui n'est pas géré par défaut par JMeter (Custom Binary Protocol, Adobe Flex, Microsoft Silverlight, …). Bien que JMeter ne fournisse pas d'implémentation de proxy native pour enregistrer ces protocoles, vous avez la possibilité d'enregistrer ces protocoles en implémentant un SamplerCreator personnalisé . Ce créateur d'échantillons traduira le format binaire en une sous-classe HTTPSamplerBase qui peut être ajoutée au cas de test JMeter. Pour plus de détails, voir "Étendre JMeter".

^

Serveur miroir HTTP

Le serveur miroir HTTP est un serveur HTTP très simple - il reflète simplement les données qui lui sont envoyées. Ceci est utile pour vérifier le contenu des requêtes HTTP.

Il utilise le port par défaut 8081 .

Capture d'écran du panneau de configuration du serveur miroir HTTP
Capture d'écran du panneau de configuration du serveur miroir HTTP

Paramètres

Attribut
La description
Obligatoire
Port
Port sur lequel le serveur miroir écoute, par défaut 8081 .
Oui
Nombre maximum de threads
Si défini sur une valeur > 0 , le nombre de threads servant les requêtes sera limité au nombre configuré, s'il est défini sur une valeur ≤ 0 , un nouveau thread sera créé pour servir chaque requête entrante. Par défaut à 0
Non
Taille maximale de la file d'attente
Taille de la file d'attente utilisée pour conserver les tâches avant qu'elles ne soient exécutées par le pool de threads, lorsque le pool de threads est dépassé, les demandes entrantes seront conservées dans cette file d'attente et rejetées lorsque cette file d'attente sera pleine. Ce paramètre n'est utilisé que si le nombre maximal de threads est supérieur à 0 . Par défaut à 25
Non
Notez que vous pouvez obtenir plus de contrôle sur les réponses en ajoutant un gestionnaire d'en-tête HTTP avec les paires nom/valeur suivantes :

Paramètres

Attribut
La description
Obligatoire
X-Sommeil
Temps de veille en ms avant l'envoi de la réponse
Non
X-SetCookie
Cookies à définir lors de la réponse
Non
X-ResponseStatus
État de la réponse, voir Réponses d'état HTTP , exemple 200 OK, 500 Erreur interne du serveur, ….
Non
Longueur de réponse X
Taille de la réponse, cela réduit la réponse à la taille demandée si celle-ci est inférieure à la taille totale
Non
X-SetHeaders
Liste d'en-têtes séparés par des tuyaux, exemple :
headerA: valueA|headerB: valueB définirait headerA sur valueA et headerB sur valueB .
Non

Vous pouvez également utiliser les paramètres de requête suivants :

Paramètres

Attribut
La description
Obligatoire
réorienter
Génère un 302 (redirection temporaire) avec l'emplacement fourni, par exemple ?redirect=/path
Non
statut
Remplace le retour d'état par défaut, par exemple ?status=404 Not Found
Non
v
Drapeau verbeux, écrit certains détails sur la sortie standard, par exemple la première ligne et l'emplacement de redirection si spécifié
Non
^

Affichage des propriétés

L'affichage des propriétés affiche les valeurs des propriétés System ou JMeter. Les valeurs peuvent être modifiées en saisissant un nouveau texte dans la colonne Valeur.

Capture d'écran du panneau de configuration de l'affichage des propriétés
Capture d'écran du panneau de configuration de l'affichage des propriétés

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
^

Échantillonneur de débogage

L'échantillonneur de débogage génère un échantillon contenant les valeurs de toutes les variables et/ou propriétés JMeter.

Les valeurs sont visibles dans le volet Afficher les données de réponse de l'écouteur de l' arborescence des résultats .

Capture d'écran du panneau de configuration de l'échantillonneur de débogage
Capture d'écran du panneau de configuration de Debug Sampler

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Propriétés JMeter
Inclure les propriétés JMeter ?
Oui
Variables JMeter
Inclure les variables JMeter ?
Oui
Propriétés du système
Inclure les propriétés système ?
Oui
^

Déboguer le post-processeur

Le post-processeur de débogage crée un sous-échantillon avec les détails des propriétés précédentes de l'échantillonneur, des variables JMeter, des propriétés et/ou des propriétés système.

Les valeurs sont visibles dans le volet Afficher les données de réponse de l'écouteur de l' arborescence des résultats .

Capture d'écran du panneau de configuration du post-processeur de débogage
Capture d'écran du panneau de configuration du post-processeur de débogage

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Non
Propriétés JMeter
Indique s'il faut afficher les propriétés JMeter (par défaut false ).
Oui
Variables JMeter
Indique s'il faut afficher les variables JMeter (par défaut false ).
Oui
Propriétés de l'échantillonneur
Indique s'il faut afficher les propriétés de l'échantillonneur ( true par défaut ).
Oui
Propriétés du système
Indique s'il faut afficher les propriétés système (par défaut false ).
Oui
^

Fragment de test

Le fragment de test est utilisé conjointement avec le contrôleur d' inclusion et le contrôleur de module .

Capture d'écran du panneau de configuration du fragment de test
Capture d'écran du panneau de configuration du fragment de test

Paramètres

Attribut
La description
Obligatoire
Nom
Nom descriptif de cet élément affiché dans l'arborescence.
Oui
Lorsque vous utilisez Test Fragment avec Module Controller , assurez-vous de désactiver le Test Fragment pour éviter l'exécution du Test Fragment lui-même. Ceci est fait par défaut depuis JMeter 2.13.
^

configurer le groupe de threads

Un type spécial de ThreadGroup qui peut être utilisé pour effectuer des actions de pré-test. Le comportement de ces threads est exactement comme un élément Thread Group normal. La différence est que ces types de threads s'exécutent avant que le test ne procède à l'exécution de groupes de threads réguliers.

Capture d'écran du panneau de configuration du groupe de threads setUp
Capture d'écran du panneau de configuration du groupe de threads setUp
^

groupe de threads démontage

Un type spécial de ThreadGroup qui peut être utilisé pour effectuer des actions post-test. Le comportement de ces threads est exactement comme un élément Thread Group normal. La différence est que ces types de threads s'exécutent une fois que le test a fini d'exécuter ses groupes de threads réguliers.

Capture d'écran du panneau de configuration du groupe de threads tearDown
Capture d'écran du panneau de configuration du groupe de threads tearDown
Notez que par défaut, il ne s'exécutera pas si Test est arrêté correctement. Si vous souhaitez le faire fonctionner dans ce cas, assurez-vous de cocher l'option " Exécuter les groupes de threads démontables après l'arrêt des threads principaux " sur l'élément Plan de test. Si le plan de test est arrêté, tearDown ne s'exécutera pas même si l'option est cochée.
Figure 1 - Exécuter les groupes de threads tearDown après l'arrêt des threads principaux
Figure 1 - Exécuter les groupes de threads tearDown après l'arrêt des threads principaux
^
^
Go to top