Introduction aux tests de performance avec JMeter

1. Vue d’ensemble

Dans cet article, nous allons utiliser Apache JMeter pour configurer et exécuter des tests de performance.

2. Configuration de JMeter

Prenons https://jmeter.apache.org/download jmeter.cgi[download JMeter], décompressez-le, accédez au dossier bin et exécutez l’exécutable ( . Bat pour Windows et . Sh__ pour Linux/Unix).

Ensuite, il suffit d’ajouter ce dossier à la variable d’environnement path pour qu’il soit accessible à partir de la ligne de commande.

La version la plus stable au moment de la rédaction est la 3.3 - nous pouvons vérifier la dernière version here .

3. Création de scripts JMeter

Maintenant, écrivons notre premier script JMeter (un fichier contenant une description technique de nos tests). **

Cette API est un lien simple: application/spring-boot-start[SpringBoot]exposant une API REST.

Mettons à jour le Test plan one et changeons d’abord son nom, puis ajoutons un Thread Group .

Un groupe «Thread» nous permet de connaître le flux d’utilisateurs et de simuler leur interaction avec l’application. Cliquez avec le bouton droit sur le nom de notre script dans l’interface graphique et suivez le menu sélectionné:

Nous passons maintenant à la partie configuration du Thread Group , où nous spécifions le nombre d’utilisateurs qui font des requêtes à notre application en parallèle:

Ici, nous avons spécifié des paramètres tels que:

  • - ** Name: le nom que nous voulons donner au groupe de threads

    • Le nombre de threads (utilisateurs) : le nombre d’utilisateurs parallèles

    • Ramp up up : temps nécessaire pour passer de 0 au nombre d’utilisateurs déclaré

    • Loop count : nombre de répétitions

Ajoutez une requête __HTTP car celle-ci sera simulée par chacun des 5 utilisateurs.

Remplissons les informations pour adresser notre API décrite ci-dessus comme dans l’image ci-dessous:

lien:/uploads/http-request-blur-1024x565.png%201024w[]

Nous venons de renseigner l’adresse du site Web, le port et le chemin spécifique.

Simulons ensuite les requêtes des utilisateurs après l’ajout d’un View Results Tree (Utiliser View Results dans Table si le résultat est une liste d’enregistrements) en suivant le menu « Add> Listener» .

Appuyez sur le bouton droit de la flèche verte en haut pour exécuter le test et voir les données de réponse:

lien:/uploads/http-request-view-result-blur-1024x565.png%201024w[]

Nous pouvons voir une représentation plus détaillée de la réponse sur l’onglet Sampler result .

Terminons par l’ajout de Duration Assertion dans HTTP Request . Ainsi, chaque demande d’une durée supérieure à dix millisecondes sera considérée comme un test ayant échoué:

Après avoir réexécuté le test, nous voyons que certains utilisateurs (ici 3) ne peuvent pas obtenir les listes d’étudiants en moins de dix millisecondes:

Enregistrez maintenant le test avec l’extension .jmx dans le dossier de ressources de l’API.

Plus d’éléments sont disponibles pour configurer notre fichier de test:

Request]: utile pour envoyer une requête JDBC (requête SQL) à une base de données, avant l’utiliser, nous devons mettre en place un http://jmeter.apache.org/usermanual/component reference.html#JDBC Connection Configuration[JDBC configuration de la connexion]element ** http://jmeter.apache.org/usermanual/component reference.html#XML__Assertion[XML

Assertion]: teste que les données de réponse sont d’un code XML correct document ** http://jmeter.apache.org/usermanual/component reference.html#Size Assertion[Size

Assertion]: affirme que la réponse contient le bon nombre d’octets en cela ** http://jmeter.apache.org/usermanual/component reference.html#JMS Publisher[JMS

Publisher]: pour publier des messages sur une cible donnée (rubrique/file d’attente) selon la spécification J2EE pour la messagerie.

Tous les composants disponibles sont détaillés dans le user manual .

4. Exécuter les tests JMeter

Il existe deux manières d’exécuter des tests JMeter, l’une d’elles consiste à utiliser le plug-in Maven disponible et l’autre, l’application autonome JMeter en mode non graphique.

Dans tous les cas, les deux doivent savoir où accéder au script JMeter que nous avons configuré précédemment.

4.1. JMeter Maven Plugin

http://jmeter.lazerycode.com/ est un plugin Maven permettant à l’utilisateur d’exécuter des tests JMeter dans le cadre de notre construction; sa dernière version actuellement is 2.6.0 , compatible avec Apache JMeter 3.3.

Ajoutons-le au pom.xml de notre projet:

<plugin>
    <groupId>com.lazerycode.jmeter</groupId>
    <artifactId>jmeter-maven-plugin</artifactId>
    <version>2.6.0</version>
    <executions>
        <execution>
            <id>jmeter-tests</id>
            <goals>
                <goal>jmeter</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <testFilesDirectory>${project.basedir}/src/main/resources</testFilesDirectory>
        <resultsDirectory>${project.basedir}/src/main/resources</resultsDirectory>
    </configuration>
</plugin>

Après cela, nous pouvons exécuter tous nos tests avec mvn verify ou seulement ceux de JMeter avec mvn jmeter: jmeter ; voici la sortie console de la commande:

lien:/uploads/run-jemeter-log-1024x370.png%201024w[]

Remarque: Ici, nous avons spécifié le répertoire dans lequel nos tests sont situés dans le projet. Celui par défaut ( $ \ {project.basedir}/src/test/jmeter ) sera choisi. De même, le répertoire de résultats est configuré sinon le répertoire par défaut sera $ \ {project.basedir}/target/jmeter/results .

La documentation complète du plug-in est accessible à l’adresse here .

4.2. Mode non graphique

L’autre façon de le faire via l’exécutable JMeter, en supposant qu’il soit disponible via la ligne de commande, permet de procéder comme suit:

jmeter -Jjmeter.save.saveservice.output format = xml__

-n -t src/main/resources/JMeter.jmx -l src/main/resources/JMeter.jtl

Nous définissons XML comme format de sortie, qui remplit le fichier de test exact et le résultat.

  • Remarque: il est recommandé de ne pas utiliser le mode interface graphique pour les tests de charge, mais uniquement pour la création et le débogage des tests. **

5. Conclusion

Dans ce rapide didacticiel, nous avons configuré Apache JMeter sur une application SpringBoot pour exécuter des tests de performance avec un plug-in Maven tout en cherchant pratiquement à concevoir un test de performance de base.

Comme toujours, le code source de cet article est disponible à l’adresse over sur GitHub .