Surprenant les paramètres dans JMeter
Sommaire
débutant - This article is part of a series.
Dans une des publications précédentes, nous avons abordé le sujet de la suppression des paramètres. Cela se trouvait dans la partie finale du document concernant comment sauvegarder les résultats en format CSV ou XML provenant du fichier JTL. Je répète ici les paramètres et l’exemple :
Parameters:
-Jjmeter.save.saveservice.output_format=xml
-Jjmeter.save.saveservice.response_data=true
Exécution sur la ligne de commande:
jmeter.sh -n -t script.jmx -l resultados.jtl -j bitacora.log -Jjmeter.save.saveservice.output_format=xml -Jjmeter.save.saveservice.response_data=true
Qu’est-ce que ces paramètres ? #
Bien sûr, ils ne sont pas des paramètres ; ils sont simplement des propriétés. JMeter possède deux types de variables, comme dans n’importe quel langage de programmation. Les variables locales se réfèrent simplement à elles-même sous le nom de variables, mais les propriétés globales sont appelées propriétés. Voici la définition dans Manuel des utilisateurs JMeter.
Quelle est la portée d’une variable ? #
Le plus simple pour expliquer une variable est l’exemple de la corrélation (voir correlacion), qui utilise des variables locales car elles sont normalement utilisées dans un Thread Group ou une Groupe de Threads et sont remplacées par une autre valeur ou supprimées ensuite. De plus, les variables peuvent être définies initialement via la section pour ce but dans le test plan ou via un élément de configuration variables utilisateur, donc les variables peuvent avoir une portée pour plusieurs groupes de threads, mais cela n’est pas recommandé. Les variables sont accessibles via ${Nom_de_la_variable}, si la variable n’a pas été définie et que l’on essaie d’y accéder, cette valeur retournera un null value.
Quelle est la portée d’une propriété ? #
Les propriétés sont définies dans trois fichiers différents : system.properties, jmeter.properties et user.properties. La seule fichier que nous devrions pouvoir modifier est le troisième, user.properties, car si nous faisons une modification incorrecte sur les deux premiers, nous courons le risque de seriously alterer la comportement du logiciel. Si nous voulons attribuer un valeur à une propriété initialement définie, cela peut être fait dans le fichier user.properties. Nous avons une large gamme de valeurs que nous pouvons changer et pour cette raison nous pouvons examiner la section propriétés du guide utilisateur.
En ce que nous l’avons mentionné précédemment, les propriétés sont globales en scope et toutes les groupes de threads contenant le plan de test peuvent accéder à leur valeur. Par conséquent, les propriétés sont un excellent moyen pour communiquer entre les groupes de thread. Pour accéder au contenu des propriétés, nous pouvons utiliser la fonction __P comme suit : ${__P(Nom_de_la_Propriété)}.
Exemple #
Dans cet exemple, nous paramétrerons le nombre de threads, la durée d’ascension et la durée totale du test. Ce même exemple peut être trouvé sur la site de Flood.io en anglais. Nous remplacerons la valeur du groupe de valeurs pour le compteur de threads par ${__P(threads,1)}, la durée d’ascension par ${__P(rampup,1)} et la durée totale du test par ${__P(duration,60)}.
Le résultat sera que si le valeur de threads n’est pas définie, elle sera assignée une valeur de 1. Cela est très pratique lors du débogage ou de la mise en route locale, ainsi que pour le ramp. Si la durée n’est pas définie, la propriété sera assignée une valeur de 60, donc le test se terminera après 60 secondes.
Pour extraire le jus de cette exemple d’automatisation des paramètres, nous pouvons exécuter le test :
./jmeter.sh -n -t Script.jmx -l Script.jtl -Jthreads=10 -Jrampup=10 -Jduration=90
./jmeter.sh -n -t Script.jmx -l Script.jtl -Jthreads=20 -Jrampup=40 -Jduration=120
./jmeter.sh -n -t Script.jmx -l Script.jtl -Jthreads=50 -Jrampup=50 -Jduration=60
Concluison #
Variables et propriétés sont extrêmement utiles et peuvent nous aider à résoudre des logiques complexes dans nos tests. Je recommande d’essayer les valeurs de variables et de propriétés via les fonctions vars.get, vars.put, props.get, et props.put en utilisant les mappages, pré-processeurs et post-processeurs en Groovy.