Un avis ? Un commentaire ?
Cet espace est pour vous.
Hier, le lundi 10 avril 2017, le cyclone Cook traverse la Nouvelle Calédonie. Inquiets, les habitants se rendent en masse sur les sites d’informations météorologiques. Malheureusement, par intermittence, il semblerait que ces sites se soient retrouvés en état d’indisponibilité…
Une charge d’utilisateurs élevée peut compromettre la disponibilité d’un site web. Heureusement, certains tests non-fonctionnels aident à anticiper ce risque. Lancés périodiquement, au sein d’un cycle d’intégration continue, ils permettent de valider que l’applicatif résiste à une certaine charge d’utilisateurs. En prévision de la prochaine intempérie, nous vous proposons donc de voir comment intégrer des tests JMeter à votre instance Jenkins…
JMeter est un logiciel libre qui permet de réaliser des tests de performance, de charge, de stress, de vieillissement et de robustesse. Notre article ne vise pas à vous apprendre à concevoir un plan de test JMeter ; pour cela, nous vous conseillons la documentation officielle, qui fournit des tutoriels très complets.
Juste un conseil : pour commencer, configurez JMeter en anglais de façon à coller au vocabulaire spécifique utilisé dans les tutoriels.
Attention : à ce jour, sur Linux, la commande apt-get install jmeter n’installe pas la dernière version.
Pour installer la dernière version de JMeter, récupérez le numéro de version de JMeter à cette adresse, puis lancez les commandes suivantes :
wget -c http://ftp.ps.pl/pub/apache//jmeter/binaries/apache-jmeter-NUMVERSION.tgz
tar -xf apache-jmeter-NUMVERSION.tgz
Jenkins va lancer le test JMeter hors-GUI, c’est pourquoi il est important de comprendre comment lancer un test en ligne de commande. Il est aussi bon à savoir que, même si l’interface JMeter est pratique pour configurer ou débugger les tests, elle est déconseillée pour les lancer car elle consomme beaucoup de ressources et cela est donc susceptible de créer des effets de sonde.
Pour lancer un test en ligne de commande, enregistrer le plan de test au format JMX, qui est un format de fichier xml propre à JMeter.
Puis, lancer la commande suivante :
chemin/vers/bin/.jmeter -n -t chemin/vers/plan-de-test.jmx
« -n » indique que l’on souhaite lancer le test hors interface,
« -t » précède le chemin du plan de test à exécuter.
Vous pouvez configurer un alias pour écrire simplement « jmeter » à la place du chemin complet, mais Jenkins ne reconnaîtra pas cet alias.
Le résultat est un peu austère… mais le plugin Jenkins est aussi là pour ça !
chemin/vers/bin/./jmeter -n -t $JENKINS_HOME/workspace/NomDujob/plan-de-test.jmx -l $JENKINS_HOME/workspace/JMeter/plan-de-test.jtl -e
Le fichier jtl contient les informations nécessaires à la création du reporting. Il sera automatiquement généré.
Il vous reste à définir les seuils relatifs ou absolus à partir desquels vous souhaitez que votre build soit déclaré instable ou en erreur. Pour cet exemple, nous avons arbitrairement choisi une définition absolue : 1 erreur = build instable, 10 erreurs = build en échec.
En intégrant les tests JMeter à votre chaîne d’ordonnancement, vous serez capables à tout moment de connaître, selon vos tests, les performances, la résistance ou l’endurance de votre applicatif à tester. Des indicateurs qui peuvent se révéler tout aussi critiques que ceux que l’on obtient pendant les tests fonctionnels. Attention, la phase de définition des seuils est critique ; il faut veiller à n’être ni trop permissif, ni trop sévère. Comme souvent dans le monde du test, c’est avant tout une question de compromis entre qualité et vélocité…
Dans un prochain article, nous parlerons de Gatling, un autre outil open-source concurrent de JMeter qui peut également d’intégrer avec Jenkins.
Bonne découverte, et bon courage à tous les Calédoniens qui se remettent du cyclone.
Gérer les paramètres Jenkins quand on est maniaque (ou flemmard)
SonarQube met son grain de sel dans Gitlab !
Performance, charge, stress… quelle différence ?
Et si vous avez besoin de prendre du recul sur l’automatisation de vos tests, nous vous conseillons cette ressource !
Cet espace est pour vous.