Feather Background Waves Background
Aller au contenu
Feather Background Waves Background
Feather Background Waves Background
  1. JMeter en Français/

Fonctions natives de JMeter (Partie 1)

intermédiaire - This article is part of a series.

functions1

J’ai décidé de laisser le traduction littéraire dans ce cas car je pense que l’idée originale reste intacte. Au contraire, dans certaines parties, j’ai ajouté plus d’informations que je n’avais collectées depuis presque un an après l’édition de cet article. Voici la version originale du post en anglais

Il y a quelques temps, lorsque j’étais en train de m’approprier JMeter, je me suis dit que je devrais écrire mes propres fonctions pour toutes les tâches que je voudrais développer dans mes scripts. Je me suis retrouvé à développer des fonctions Beanshell pour chaque challenge que je rencontrais car les fonctions de JMeter n’étaient pas aussi populaires ou “bonnes” pour les tâches basiques. Mais avec chaque version, ces fonctions ont grandement augmenté en nombre et en capacité, devenant des solutions compréhensibles pour une variété large de besoins de test.

Ces jours-ci, je ne peux pas créer une script JMeter sans utiliser au moins quelques fonctions natives. Elles sont si populaires qu’elles sont également utilisées pour les questions de carrière ou techniques. Dans cette postérité, j’espère pouvoir décrire certains de ses plus grands usages et comment en tirer parti.

Qu’est-ce qu’une fonction de JMeter ?>

Qu’est-ce qu’une fonction de JMeter ? #

Une fonction de JMeter est une évaluation qui retourne un valeur ou un résultat. Ces fonctions couvrent une variété de besoins, tels que les informations du test, la logique, les variables et/ou les propriétés, pour n’en nommer qu’une.

Où peut-on utiliser les fonctions de JMeter?>

Où peut-on utiliser les fonctions de JMeter? #

Les fonctions de JMeter peuvent être utilisées dans n’importe quel composant du plan de test, qui suit la ordre d’exécution. En autres mots, l’exécution de JMeter doit passer par ce composant pour exécuter la fonction.

Premier, nous devons regrouper les fonctions par type de fonction ou d’activité. Cela nous donnera une meilleure idée de où utiliser ces dernières. Je fournirai également quelques exemples qui révéleront comment les utiliser et compléteront votre apprentissage.

Voici les fonctions de JMeter que nous aborderons dans ce post:

functions2

1.- Fonctions d’information>

1.- Fonctions d’information #

Les fonctions d’information sont particulièrement utiles pour identifier les données sur la chaîne de thread en cours ou dans une groupe de threads, l’adresse IP du générateur de chargeurs de poids ou son nom de serveur, ou obtenir le temps local dans plusieurs formats. Je dirais que ces fonctions sont la loi lorsqu’on débogage un script. Par exemple, la fonction log nous permet d’envoyer des données de niveau quelconque vers le fichier jmeter.log via une message.

Les données retournées par les fonctions la plus couramment utilisées sont directement issues de l’API service contexte JMeter, qui est comme une API contenant toutes les informations sur le test et les groupes de threads. Si vous voulez un certain élément d’une thread ou d’un groupe de threads, vous pouvez accéder à ses informations, chaque thread contient sa propre context où toutes ses données sont stockées.

Exemples de fonctions d’information :

fonctionexemplerésultat attendu
threadNum${__threadNum}Un nombre pour l’ID de la puce actuelle
threadGroupName${__threadGroupName}Nom de la puce actuelle dans le groupe de puce
samplerName${__samplerName}Nom de la puce actuelle
machineIP${__machineIP}Adresse IP du générateur de charge ou de l’ordinateur
machineName${__machineName}Nom de l’ordinateur généré par le générateur de charge ou de l’ordinateur
time${__time}Affiche la date et heure locale du générateur de charge ou de l’ordinateur en format EPOCH
time${__time(dd-MM-YYYY,)}Affiche la date et heure locale de l’équipement ou du générateur de charge en dd-MM-YYYY format
timeShift${__timeShift(dd-MM-YYYY,,P4D,,)}Base sur la date et heure locale de l’équipement, 4 jours sont ajoutés, en dd-MM-YYYY format
timeShift${__timeShift(dd-MM-YYYY,,P-6D,,)}Base sur la date et heure locale de l’équipement, 6 jours sont soustrait, en dd-MM-YYYY format
log${__log(Hello World)}Affiche “Hello World” à niveau INFO par définition
logn${__logn(${TESTSTART.MS},ERR)}Affiche le début de la test, à l’erreur niveau

Nous incluons également des images de l’exemple et vous pouvez télécharger le fichier ci-dessous:

information-setup

information-response

Le script JMeter avec des exemples de fonctions d’information ( https://github.com/daeep/JMeter/blob/master/JMeter_Functions/Information-functions.jmx) nécessite Java 1.8+, JMeter 5+, et les extensions JMeter.

2.- Fonctions de Fichier d’Entrée>

2.- Fonctions de Fichier d’Entrée #

Quand on gère des volumes importants de données, il est toujours recommandé d’utiliser des fichiers de données statiques. Ces valeurs peuvent être livrées à JMeter via des fichiers CSV ; chaque ligne sera lue et segmentée pour enregistrer les valeurs dans des variables. Je ne suis pas un fan du usage de fichiers CSV ou similaires pour les scripts ; je préfère générer mes propres données aléatoirement.

Toutefois, il y a des moments où nous avons la seule option ou où nous sommes limités à utiliser des inputs externes. Cependant, nous devrions pas utiliser ces solutions de manière excessive car si l’entrée est grande, cela pourrait consommer beaucoup de nos ressources, en particulier RAM. Au contraire, vous pouvez les accéder ligne par ligne avec les fonctions CSVRead ou tout le fichier avec la fonction StringFromFile.

Exemples de fonction du fichier d’entrée:

FonctionExempleRésultat attendu
StringFromFile${__StringFromFile(file.txt,RowAsString,,)}Lit le fichier file.txt et sauvegarde la première ligne dans la variable RowAsString, incrémentée par itération
FileToString${__FileToString(filex.txt,FileAsString,,)}Lit le fichier file.txt et sauvegarde son contenu entier dans la variable FileAsString
CSVRead${__CSVRead(file.csv,0)}Retourne la colonne 0 du premier ligne de la file file.csv, incrémentée par itération
XPath${__XPath(file.xml,..//[@id=book]/div/a)}Retourne le valeur de l’évaluation Xpath dans le fichier file.xml
StringToFile${__StringToFile(file.out,“Hello World”)}Écrit “Hello World” à la file file.out, variables peuvent aussi être écrits
Calculations Mathématiques>

Calculations Mathématiques #

Les calculs mathématiques ou des valeurs aléatoires sont souvent nécessaires pour notre logique métier. Par exemple, imaginez le nombre de billets de avion ou de billets de concert que nous allons acheter. Cela pourrait facilement être résolu en générant une valeur aléatoire entre 1 et 10. Cependant, cette fonction a ses limites ; je ne recommanderais pas du tout d’utiliser cela pour générer un numéro de carte de crédit de 16 chiffres. Il existe d’autres fonctions qui le feront beaucoup plus facilement et efficacement, comme RandomString.

Si vous travaillez avec des dates, ou un jour de calculer une date dans le futur, mais à l’intérieur d’un intervalle de temps, la fonction RandomDate est la solution idéale. Personnellement, je l’utilise en conjonction avec la fonction timeShift pour calculer une date au-delà de 10 à 60 jours dans le futur, et cela se présente quelque chose comme ça.

      ${__RandomDate(MM/dd/YYYY,${__timeShift(MM/dd/YYYY,,P10D,,)},${__timeShift(MM/dd/YYYY,,P60D,,)},,)}

De plus, si vous devez suivre le nombre d’itérations ou des demandes pour un service ou produit spécifique, la fonction counter pourrait être utilisée dans la requête concernant cela pour garder une comptabilisation séquentielle de l’apparition ou des appels. Cette variable pouvait grandir par thread ou groupe de threads selon nos besoins.

Exemples de fonctions de calcul:

FonctionExempleRésultat attendu
compteur${__counter(TRUE,C1)}Execution counter par thread
compteur${__counter(FALSE,C2)}Execution counter par groupe de threads, optionnel par définition
digest${__digest(MD5,Test1234,,,)}Cryptage du texte “Test1234” à l’aide de MD5
digest${__digest(SHA-256,Test1234,mysalt,,)}Cryptage du texte “Test1234” à l’aide de SHA-256 avec une salade
somme entière${__intSum(10,20,IntSum)}Affiche la somme de deux entiers, également enregistre le résultat dans la variable IntSum
somme longue${__longSum(65535,65535,LongSum)}Affiche la somme de deux entiers, également enregistre le résultat dans la variable LongSum
date aléatoire${__RandomDate(,,2021-01-01,,)}Génère une date aléatoire entre aujourd’hui et 2021-01-01
choix aléatoire${__RandomFromMultipleVars(Var1|Var2,)}Choisit un variable aléatoire et affiche son résultat
chaîne aléatoire${__RandomString(16,1234567890,)}Génère une chaîne de 16 caractères, avec un valeur aléatoire choisie à chaque position
chaîne aléatoire${__RandomString(16,abcdefghijkl,)}Génère une chaîne de 16 caractères, avec un valeur aléatoire choisie à chaque position
UUID${__UUID()}Génère un UUID aléatoire de 16 octets ou 128 bits

Nous incluons également des images de l’exemple et vous pouvez télécharger le fichier ci-dessous:

calculations-setup
calculation-response

Le script JMeter avec des exemples de fonctions calculatoires ( https://github.com/daeep/JMeter/blob/master/JMeter_Functions/Calculation-functions.jmx) nécessite Java 1.8+, JMeter 5+, et les extensions JMeter.

Continuons….



intermédiaire - This article is part of a series.