jMeter - Guide rapide
Avant d'entrer dans les détails de JMeter, commençons par comprendre quelques jargons associés au test de toute application.
Performance Test- Ce test définit les meilleures attentes de performances possibles dans une configuration d'infrastructure donnée. Il indique également au début du processus de test si des modifications doivent être apportées avant la mise en production de l'application.
Load Test - Ce test est essentiellement utilisé pour tester le système sous la charge supérieure pour laquelle il a été conçu pour fonctionner.
Stress Test - Ce test est une tentative de briser le système en surchargeant ses ressources.
Qu'est-ce que JMeter?
JMeter est un logiciel qui peut effectuer des tests de charge, des tests commerciaux (fonctionnels) axés sur les performances, des tests de régression, etc., sur différents protocoles ou technologies.
Stefano Mazzocchide l'Apache Software Foundation était le développeur original de JMeter. Il l'a écrit principalement pour tester les performances d'Apache JServ (maintenant appelé projet Apache Tomcat). Apache a ensuite repensé JMeter pour améliorer l'interface graphique et ajouter des capacités de test fonctionnel.
JMeter est une application de bureau Java avec une interface graphique qui utilise l'API graphique Swing. Il peut donc fonctionner sur n'importe quel environnement / poste de travail acceptant une machine virtuelle Java, par exemple - Windows, Linux, Mac, etc.
Les protocoles pris en charge par JMeter sont -
Web - Sites HTTP, HTTPS 'web 1.0' web 2.0 (ajax, flex et flex-ws-amf)
Services Web - SOAP / XML-RPC
Base de données via les pilotes JDBC
Annuaire - LDAP
Service orienté messagerie via JMS
Service - POP3, IMAP, SMTP
Service FTP
Caractéristiques de JMeter
Voici quelques-unes des fonctionnalités de JMeter -
Étant un logiciel open source, il est disponible gratuitement.
Il a une interface graphique simple et intuitive.
JMeter peut effectuer des tests de charge et de performance pour de nombreux types de serveurs - Web - HTTP, HTTPS, SOAP, base de données via JDBC, LDAP, JMS, Mail - POP3, etc.
C'est un outil indépendant de la plate-forme. Sous Linux / Unix, JMeter peut être appelé en cliquant sur le script shell JMeter. Sous Windows, il peut être appelé en démarrant le fichier jmeter.bat.
Il prend en charge les composants Swing et légers (le JAR précompilé utilise les packages javax.swing. *).
JMeter stocke ses plans de test au format XML. Cela signifie que vous pouvez générer un plan de test à l'aide d'un éditeur de texte.
Son framework multi-threading complet permet l'échantillonnage simultané par de nombreux threads et l'échantillonnage simultané de différentes fonctions par des groupes de threads séparés.
Il est hautement extensible.
Il peut également être utilisé pour effectuer des tests automatisés et fonctionnels des applications.
Comment fonctionne JMeter?
JMeter simule un groupe d'utilisateurs envoyant des requêtes à un serveur cible et renvoie des statistiques qui montrent les performances / fonctionnalités du serveur / application cible via des tableaux, des graphiques, etc.
Jetez un œil à la figure suivante qui illustre le fonctionnement de JMeter -
JMeter est un framework pour Java, donc la toute première exigence est d'avoir JDK installé sur votre machine.
Exigence du système
JDK | 1.6 ou supérieur. |
---|---|
Mémoire | Aucune exigence minimale. |
Espace disque | Aucune exigence minimale. |
Système opérateur | Aucune exigence minimale. |
Étape 1: Vérifiez l'installation de Java
Tout d'abord, vérifiez si Java est installé sur votre système. Ouvrez votre console et exécutez l'une des opérations suivantesjava commandes basées sur le système d'exploitation sur lequel vous travaillez.
OS | Tâche | Commander |
---|---|---|
les fenêtres | Ouvrez la console de commande | c: \> java -version |
Linux | Ouvrir le terminal de commande | $ java -version |
Mac | Terminal ouvert | machine: ~ joseph $ java -version |
Si Java est installé sur votre système, vous obtiendrez une sortie appropriée en fonction du système d'exploitation sur lequel vous travaillez.
OS | Production |
---|---|
les fenêtres | version java "1.7.0_25" Environnement d'exécution Java (TM) SE (build 1.7.0_25-b15) VM serveur 64 bits Java HotSpot (TM) (build 23.25-b01, mode mixte) |
Linux | version java "1.7.0_25" Environnement d'exécution Java (TM) SE (build 1.7.0_25-b15) VM serveur 64 bits Java HotSpot (TM) (build 23.25-b01, mode mixte) |
Mac | version java "1.7.0_25" Environnement d'exécution Java (TM) SE (build 1.7.0_25-b15) VM serveur 64 bits Java HotSpot (TM) (build 23.25-b01, mode mixte) |
Si Java n'est pas installé, installez le kit de développement logiciel Java (SDK) à partir de www.oracle.com/technetwork/java/javase/downloads/index.html . Nous supposons que Java 1.7.0_25 est la version installée pour ce didacticiel.
Étape 2: définir l'environnement Java
Met le JAVA_HOMEvariable d'environnement pour pointer vers l'emplacement du répertoire de base, où Java est installé sur votre machine. Par exemple -
OS | Production |
---|---|
les fenêtres | Définissez la variable d'environnement JAVA_HOME sur C: \ Program Files \ Java \ jdk1.7.0_25 |
Linux | export JAVA_HOME = / usr / local / java-current |
Mac | export JAVA_HOME = / Bibliothèque / Java / Accueil |
Ajoutez l'emplacement du compilateur Java au chemin système.
OS | Production |
---|---|
les fenêtres | Ajoutez la chaîne; C: \ Program Files \ Java \ jdk1.7.0_25 \ bin à la fin de la variable système, Path. |
Linux | export PATH = $ PATH: $ JAVA_HOME / bin / |
Mac | non requis |
Vérifiez l'installation de Java à l'aide de java -version comme expliqué ci-dessus.
Étape 3: Téléchargez JMeter
Téléchargez la dernière version de JMeter sur https://jmeter.apache.org/download_jmeter.cgi. Pour ce didacticiel, nous avons téléchargé apache-jmeter-2.9 et l' avons copié dans le dossier C: \> JMeter.
La structure du répertoire doit ressembler à celle ci-dessous -
- apache-jmeter-2.9
- apache-jmeter-2.9\bin
- apache-jmeter-2.9\docs
- apache-jmeter-2.9\extras
- apache-jmeter-2.9\lib\
- apache-jmeter-2.9\lib\ext
- apache-jmeter-2.9\lib\junit
- apache-jmeter-2.9\printable_docs
Vous pouvez renommer le répertoire parent (c.-à-d. Apache-jmeter-2.9) si vous le souhaitez, mais ne changez aucun des noms de sous-répertoire.
Étape 4: Exécutez JMeter
Après avoir téléchargé JMeter, accédez au répertoire bin . Dans ce cas, c'est/home/manisha/apache-jmeter-2.9/bin. Cliquez maintenant sur ce qui suit -
OS | Production |
---|---|
les fenêtres | jmeter.bat |
Linux | jmeter.sh |
Mac | jmeter.sh |
Après une courte pause, l'interface graphique JMeter devrait apparaître, qui est une application Swing, comme le montre la capture d'écran suivante -
Ceci est la page principale et la page par défaut de l'outil.
Qu'est-ce qu'un plan de test?
Un plan de test peut être considéré comme un conteneur pour l'exécution de tests. Il définit ce qu'il faut tester et comment s'y prendre. Un plan de test complet se compose d'un ou plusieurs éléments tels que des groupes de threads, des contrôleurs logiques, des contrôleurs de génération d'échantillons, des écouteurs, des minuteries, des assertions et des éléments de configuration. Un plan de test doit avoir au moins un groupe de threads.
Rédaction d'un plan de test
Suivez les étapes ci-dessous pour rédiger un plan de test -
Étape 1: Démarrez la fenêtre JMeter
Ouvrez la fenêtre JMeter en cliquant sur /home/manisha/apache-jmeter-2.9/bin/jmeter.sh. La fenêtre JMeter apparaîtra comme ci-dessous -
Il s'agit d'une fenêtre JMeter simple et vierge sans aucun élément supplémentaire ajouté. Il contient deux nœuds -
Test Plan node - c'est là que le vrai plan de test est conservé.
Workbench node- Il fournit simplement un emplacement pour stocker temporairement les éléments de test lorsqu'ils ne sont pas utilisés, à des fins de copier / coller. Lorsque vous enregistrez votre plan de test, les éléments de Workbench ne sont pas enregistrés avec lui.
Étape 2: Ajouter / supprimer des éléments
Les éléments (qui seront abordés dans le chapitre suivant Eléments du plan de test ) peuvent être ajoutés à un plan de test en cliquant avec le bouton droit sur le nœud Plan de test et en choisissant un nouvel élément dans la liste «ajouter».
Vous pouvez également charger un élément à partir d'un fichier et l'ajouter en choisissant l'option "fusionner" ou "ouvrir".
Par exemple, ajoutons un élément Thread Group à un plan de test comme indiqué ci-dessous -
Pour supprimer un élément, assurez-vous que l'élément est sélectionné, cliquez avec le bouton droit sur l'élément et choisissez l'option "supprimer".
Étape 3: Charger et enregistrer les éléments
Pour charger un élément à partir d'un fichier -
- Cliquez avec le bouton droit sur l'élément d'arborescence existant auquel vous souhaitez ajouter l'élément chargé.
- Sélectionnez Fusionner.
- Choisissez le fichier dans lequel vous avez enregistré les éléments.
- JMeter fusionnera les éléments dans l'arborescence.
Par défaut, JMeter n'enregistre pas l'élément, vous devez l'enregistrer explicitement.
Pour enregistrer les éléments de l'arborescence -
- Faites un clic droit sur l'élément.
- Choisissez l' option Enregistrer la sélection sous ...
JMeter enregistrera l'élément sélectionné, ainsi que tous les éléments enfants en dessous. Par défaut, JMeter n'enregistre pas les éléments, vous devez l'enregistrer explicitement comme mentionné précédemment.
Étape 4: Configuration des éléments de l'arborescence
Tout élément du plan de test peut être configuré à l'aide des commandes présentes dans le cadre de droite de JMeter. Ces contrôles vous permettent de configurer le comportement de cet élément de test particulier. Par exemple, le groupe de threads peut être configuré pour un certain nombre d'utilisateurs, des périodes de montée en puissance, etc., comme indiqué ci-dessous -
Étape 5: Enregistrer le plan de test
Vous pouvez enregistrer un plan de test entier en utilisant soit Save ou "Save Test Plan As ..." dans le menu Fichier.
Étape 6: Exécutez le plan de test
Vous pouvez exécuter le plan de test en cliquant sur Start(Ctrl + r) depuis le Runélément du menu. Lorsque JMeter commence à s'exécuter, il affiche une petite boîte verte à l'extrémité droite de la section juste sous la barre de menus.
Les nombres à gauche de la case verte correspondent au nombre de threads actifs / nombre total de threads. Celles-ci s'appliquent uniquement à un test exécuté localement; ils n'incluent aucun thread démarré sur des systèmes distants lors de l'utilisation du mode client-serveur.
Étape 7: Arrêtez le plan de test
Vous pouvez arrêter votre test de deux manières -
En utilisant Stop(Contrôle + '.'). Il arrête les threads immédiatement si possible.
En utilisant Shutdown(Contrôle + ','). Il demande aux threads de s'arrêter à la fin de tout travail en cours.
Un plan de test JMeter comprend les éléments de test décrits ci-dessous. Un plan de test comprend au moins un groupe de threads. Dans chaque groupe de threads, nous pouvons placer une combinaison d'un ou de plusieurs autres éléments - Sampler, Logic Controller, Configuration Element, Listener et Timer. Chaque échantillonneur peut être précédé d'un ou plusieurs éléments de pré-processeur, suivis par un élément de post-processeur et / ou un élément d'assertion. Voyons chacun de ces éléments en détail -
Groupe de threads
Les éléments du groupe de threads sont les points de départ de votre plan de test. Comme son nom l'indique, les éléments du groupe de threads contrôlent le nombre de threads que JMeter utilisera pendant le test. Nous pouvons également contrôler les éléments suivants via le Thread Group -
Définition du nombre de threads
Réglage du temps de montée
Définition du nombre d'itérations de test
Le panneau de configuration du groupe de threads ressemble à ceci:
Le panneau du groupe de threads contient les composants suivants -
Action to be taken after a Sampler error - En cas d'erreur lors de l'exécution du test, vous pouvez laisser le test soit -
Continue à l'élément suivant du test
Stop Thread pour arrêter le thread en cours.
Stop Test complètement, au cas où vous voudriez inspecter l'erreur avant qu'elle ne continue à s'exécuter.
Number of Threads - Simule le nombre d'utilisateurs ou de connexions à votre application serveur.
Ramp-Up Period Définit le temps nécessaire à JMeter pour exécuter tous les threads.
Loop Count - Définit le nombre d'exécutions du test.
Scheduler checkbox - Une fois sélectionnée, la section Configuration du planificateur apparaît en bas du panneau de contrôle.
Scheduler Configuration - Vous pouvez configurer l'heure de début et de fin d'exécution du test.
Contrôleurs
JMeter a deux types de contrôleurs: les échantillonneurs et les contrôleurs logiques .
Échantillonneurs
Les échantillonneurs permettent à JMeter d'envoyer des types spécifiques de requêtes à un serveur. Ils simulent une demande utilisateur pour une page du serveur cible. Par exemple, vous pouvez ajouter un échantillonneur de requête HTTP si vous devez effectuer un POST, GET ou DELETE sur un service HTTP.
Certains échantillonneurs utiles sont -
- Requête HTTP
- Demande FTP
- Demande JDBC
- Demande Java
- Requête SOAP / XML
- Demandes RPC
La capture d'écran suivante montre un panneau de configuration de l'échantillonneur de requête HTTP -
Contrôleurs logiques
Les contrôleurs logiques vous permettent de contrôler l'ordre de traitement des échantillonneurs dans un thread. Les contrôleurs logiques peuvent modifier l'ordre d'une requête provenant de n'importe lequel de leurs éléments enfants. Quelques exemples sont - Contrôleur ForEach, Contrôleur While, Contrôleur de boucle, Contrôleur IF, Contrôleur d'exécution, Contrôleur entrelacé, Contrôleur de débit et Contrôleur d'exécution unique.
La capture d'écran suivante montre un panneau de commande de contrôleur de boucle -
La liste suivante comprend tous les contrôleurs logiques fournis par JMeter -
- Contrôleur simple
- Contrôleur de boucle
- Un seul contrôleur
- Contrôleur d'entrelacement
- Contrôleur aléatoire
- Contrôleur d'ordre aléatoire
- Contrôleur de débit
- Contrôleur d'exécution
- Si contrôleur
- Pendant que le contrôleur
- Contrôleur de commutateur
- ForEach Controller
- Contrôleur de module
- Inclure le contrôleur
- Contrôleur de transaction
- Contrôleur d'enregistrement
Fragments de test
Un fragment de test est un type spécial d'élément placé au même niveau que l'élément Thread Group. Il se distingue d'un groupe de threads en ce qu'il n'est exécuté que s'il est référencé par un contrôleur de module ou un contrôleur Include_Controller. Cet élément est purement pour la réutilisation du code dans les plans de test.
Les auditeurs
Les écouteurs vous permettent d'afficher les résultats des échantillonneurs sous forme de tableaux, de graphiques, d'arbres ou de texte simple dans certains fichiers journaux. Ils fournissent un accès visuel aux données recueillies par JMeter sur les cas de test lors de l'exécution d'un composant Sampler de JMeter.
Les écouteurs peuvent être ajoutés n'importe où dans le test, y compris directement sous le plan de test. Ils collecteront des données uniquement à partir d'éléments inférieurs ou égaux à leur niveau. La liste suivante comprend tous les écouteurs fournis par JMeter -
- Exemple de configuration d'enregistrement des résultats
- Graphique des résultats complets
- Résultats du graphique
- Visualiseur Spline
- Résultats d'assertion
- Afficher l'arborescence des résultats
- Rapport agrégé
- Afficher les résultats dans le tableau
- Rédacteur de données simple
- Surveiller les résultats
- Graphique de distribution (alpha)
- Graphique agrégé
- Visualiseur de courrier
- Écouteur BeanShell
- Rapport sommaire
Minuteries
Par défaut, un thread JMeter envoie des requêtes sans pause entre chaque échantillonneur. Ce n'est peut-être pas ce que vous voulez. Vous pouvez ajouter un élément timer qui vous permet de définir une période d'attente entre chaque requête.
La liste suivante montre tous les minuteurs fournis par JMeter -
- Minuterie constante
- Minuterie aléatoire gaussienne
- Minuterie aléatoire uniforme
- Minuterie à débit constant
- Minuterie de synchronisation
- Heure JSR223
- Heure BeanShell
- Heure BSF
- Temps aléatoire de Poisson
La capture d'écran suivante montre un panneau de commande à minuterie constante -
Assertions
Les assertions vous permettent d'inclure un test de validation sur la réponse de votre demande faite à l'aide d'un échantillonneur. À l'aide d'assertions, vous pouvez prouver que votre application renvoie les données correctes. JMeter met en évidence lorsqu'une assertion échoue.
La liste suivante comprend toutes les assertions fournies par JMeter -
- Assertion Beanshell
- Assertion BSF
- Comparer l'assertion
- Assertion JSR223
- Assertion de réponse
- Assertion de durée
- Assertion de taille
- Assertion XML
- Assertion BeanShell
- Assertion MD5Hex
- Assertion HTML
- Assertion XPath
- Assertion de schéma XML
La capture d'écran suivante montre un panneau de configuration d'assertion de réponse -
Éléments de configuration
Les éléments de configuration vous permettent de créer des valeurs par défaut et des variables à utiliser par les échantillonneurs. Ils sont utilisés pour ajouter ou modifier les demandes faites par les échantillonneurs.
Ils sont exécutés au début de la portée dont ils font partie, avant les échantillonneurs situés dans le même scope. Par conséquent, un élément de configuration est accessible uniquement de l'intérieur de la branche où il est placé.
La liste suivante comprend tous les éléments de configuration fournis par JMeter -
- Counter
- Configuration de l'ensemble de données CSV
- Valeurs par défaut des requêtes FTP
- Gestionnaire d’autorisations HTTP
- Gestionnaire de cache HTTP
- Gestionnaire de cookies HTTP
- Serveur proxy HTTP
- Valeurs par défaut des requêtes HTTP
- Gestionnaire d'en-tête HTTP
- Valeurs par défaut des requêtes Java
- Configuration du keystore
- Configuration de la connexion JDBC
- Élément de configuration de connexion
- Valeurs par défaut des requêtes LDAP
- Valeurs par défaut des requêtes étendues LDAP
- Configuration de l'échantillonneur TCP
- Variables définies par l'utilisateur
- Élément de configuration simple
- Variable aléatoire
Éléments pré-processeur
Un élément de pré-processeur est quelque chose qui s'exécute juste avant l'exécution d'un échantillonneur. Ils sont souvent utilisés pour modifier les paramètres d'une requête d'échantillonnage juste avant son exécution ou pour mettre à jour des variables qui ne sont pas extraites du texte de la réponse.
La liste suivante comprend tous les éléments de pré-processeur fournis par JMeter -
- Analyseur de lien HTML
- Modificateur de réécriture d'URL HTTP
- Modificateur de paramètre utilisateur HTTP
- Paramètres utilisateur
- Préprocesseur JDBC
- Préprocesseur JSR223
- Paramètres utilisateur RegEx
- Préprocesseur BeanShell
- Préprocesseur BSF
Éléments de post-processeur
Un post-processeur s'exécute après qu'un échantillonneur a terminé son exécution. Cet élément est le plus souvent utilisé pour traiter les données de réponse, par exemple pour récupérer une valeur particulière pour une utilisation ultérieure.
La liste suivante comprend tous les éléments de post-processeur fournis par JMeter -
- Extracteur d'expressions régulières
- Extracteur XPath
- Gestionnaire d'actions de statut de résultat
- Post-processeur JSR223
- Post-processeur JDBC
- Post-processeur BSF
- Extracteur CSS / JQuery
- BeanShell PostProcessor
- Déboguer le postprocesseur
Ordre d'exécution des éléments de test
Voici l'ordre d'exécution des éléments du plan de test -
- Éléments de configuration
- Pre-Processors
- Timers
- Sampler
- Post-processeurs (sauf si SampleResult est nul)
- Assertions (sauf si SampleResult est nul)
- Écouteurs (sauf si SampleResult est nul)
Construisons un plan de test simple qui teste une page Web. Nous écrivons un plan de test dans Apache JMeter afin de pouvoir tester les performances de la page Web affichée par l'URL - .
Démarrez JMeter
Ouvrez la fenêtre JMeter en cliquant sur /home/manisha/apache-jmeter-2.9/bin/jmeter.sh. La fenêtre JMeter apparaît comme ci-dessous -
Renommer le plan de test
Remplacez le nom du nœud du plan de test par Exemple de test dans la zone de texte Nom . Vous devez changer le focus sur le nœud Workbench et revenir au nœud Plan de test pour voir le nom se refléter.
Ajouter un groupe de threads
Maintenant, nous ajoutons notre premier élément dans la fenêtre. Nous ajoutons un groupe de threads, qui est un espace réservé pour tous les autres éléments tels que les échantillonneurs, les contrôleurs et les écouteurs. Nous en avons besoin pour pouvoir configurer le nombre d'utilisateurs à simuler.
Dans JMeter, tous les éléments de nœud sont ajoutés à l'aide du menu contextuel.
Cliquez avec le bouton droit de la souris sur l'élément auquel vous souhaitez ajouter un nœud d'élément enfant.
Choisissez l'option appropriée à ajouter.
Cliquez avec le bouton droit sur l'exemple de test (notre plan de test) → Ajouter → Threads (utilisateurs) → Thread Group. Ainsi, le groupe de threads est ajouté sous le nœud Plan de test (exemple de test).
Nommez le groupe de threads en tant qu'utilisateurs . Pour nous, cet élément signifie que les utilisateurs visitent la page d'accueil de TutorialsPoint.
Ajouter un échantillonneur
Nous devons ajouter un échantillonneur dans notre groupe de threads (utilisateurs). Comme précédemment pour l'ajout d'un groupe de threads, cette fois, nous ouvrirons le menu contextuel du nœud Thread Group (Users) en cliquant avec le bouton droit de la souris et nous ajouterons un échantillonneur de requête HTTP en choisissant Ajouter → Échantillonneur → option de requête HTTP.
Il ajoutera un échantillonneur de requête HTTP vide sous le nœud Thread Group (Users). Configurons cet élément de nœud -
Name- Nous changerons le nom pour refléter l'action que nous voulons réaliser. Nous l'appellerons commeVisit TutorialsPoint Home Page
Server Name or IP- Ici, nous devons taper le nom du serveur Web. Dans notre cas c'estwww.tutorialspoint.com. (http: // une partie n'est pas écrite ce n'est que le nom du serveur ou son IP)
Protocol - Nous garderons ce champ vide, ce qui signifie que nous voulons HTTP comme protocole.
Path- Nous allons taper le chemin comme / (barre oblique). Cela signifie que nous voulons la page racine du serveur.
Ajouter un auditeur
Nous allons maintenant ajouter un auditeur. Ajoutons View Results Tree Listener sous le nœud Thread Group (User). Cela garantira que les résultats de l'échantillonneur seront disponibles pour être visualisés dans cet élément de nœud Listener.
Pour ajouter un auditeur -
Ouvrez le menu contextuel
Cliquez avec le bouton droit sur le groupe de threads (utilisateurs)
Choisissez l'option Ajouter → Écouteur → Afficher l'arborescence des résultats
Exécutez le plan de test
Maintenant, avec toute la configuration, exécutons le plan de test. Avec la configuration du Thread Group (Users), nous conservons toutes les valeurs par défaut. Cela signifie que JMeter n'exécutera l'échantillonneur qu'une seule fois. C'est similaire à un seul utilisateur, une seule fois.
Ceci est similaire à un utilisateur visitant une page Web via un navigateur, avec l'échantillonneur JMeter. Pour exécuter le plan de test, sélectionnez Exécuter dans le menu et sélectionnez l'option Démarrer.
Apache JMeter nous demande d'enregistrer le plan de test dans un fichier disque avant de démarrer réellement le test. Ceci est important si vous souhaitez exécuter le plan de test plusieurs fois. Vous pouvez opter pour l'exécuter sans enregistrer trop.
Afficher la sortie
Nous avons conservé le paramètre du groupe de threads en tant que thread unique (un seul utilisateur) et boucle pendant 1 fois (exécuté une seule fois), par conséquent, nous obtiendrons le résultat d'une seule transaction dans le View Result Tree Listener.
Les détails du résultat ci-dessus sont -
La couleur verte en regard du nom Visiter la page d'accueil de TutorialsPoint indique le succès.
JMeter a stocké tous les en-têtes et les réponses envoyés par le serveur Web et prêt à nous montrer le résultat de plusieurs manières.
Le premier onglet est Résultats de l'échantillonneur. Il affiche les données JMeter ainsi que les données renvoyées par le serveur Web.
Le deuxième onglet est Demande, qui affiche toutes les données envoyées au serveur Web dans le cadre de la demande.
Le dernier onglet est Données de réponse. Dans cet onglet, l'écouteur affiche les données reçues du serveur au format texte.
Ceci est juste un simple plan de test qui n'exécute qu'une seule requête. Mais la vraie force de JMeter est d'envoyer la même demande, comme si de nombreux utilisateurs l'envoyaient. Pour tester les serveurs Web avec plusieurs utilisateurs, nous devons modifier les paramètres du groupe de threads (utilisateurs).
Dans ce chapitre, nous verrons comment créer un plan de test simple pour tester le serveur de base de données. Pour nos besoins de test, nous utilisons le serveur de base de données MYSQL. Vous pouvez utiliser n'importe quelle autre base de données pour les tests. Pour l'installation et la création de table dans MYSQL, veuillez consulter le didacticiel MYSQL .
Une fois MYSQL installé, suivez les étapes ci-dessous pour configurer la base de données -
Créez une base de données avec le nom "tutoriel".
Créez une table tutorials_tbl .
Insérez des enregistrements dans tutorials_tbl comme indiqué ci-dessous -
mysql> use TUTORIALS;
Database changed
mysql> INSERT INTO tutorials_tbl
->(tutorial_title, tutorial_author, submission_date)
->VALUES
->("Learn PHP", "John Poul", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl
->(tutorial_title, tutorial_author, submission_date)
->VALUES
->("Learn MySQL", "Abdul S", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl
->(tutorial_title, tutorial_author, submission_date)
->VALUES
->("JAVA Tutorial", "Sanjay", '2007-05-06');
Query OK, 1 row affected (0.01 sec)
mysql>
Copiez le pilote JDBC approprié dans /home/manisha/apache-jmeter-2.9/lib.
Créer un plan de test JMeter
Commençons le JMeter à partir de /home/manisha/apache-jmeter-2.9/bin/jmeter.sh.
Ajouter des utilisateurs
Pour créer un groupe de threads,
Cliquez avec le bouton droit sur Plan de test.
Sélectionnez Ajouter → Threads (utilisateurs) → Thread Group.
Ainsi, le groupe de threads est ajouté sous le nœud Plan de test.
Renommez ce groupe de threads en tant qu'utilisateurs JDBC .
Nous ne modifierons pas les propriétés par défaut du groupe de threads.
Ajout de requêtes JDBC
Maintenant que nous avons défini nos utilisateurs, il est temps de définir les tâches qu'ils vont effectuer. Dans cette section, spécifiez les requêtes JDBC à exécuter.
Cliquez avec le bouton droit sur l'élément Utilisateurs JDBC.
Sélectionner Add → Config Element → JDBC Connection Configuration.
Configurez les champs suivants (nous utilisons la base de données MySQL appelée tutoriel) -
Nom de variable lié au pool. Cela doit identifier la configuration de manière unique. Il est utilisé par l'échantillonneur JDBC pour identifier la configuration à utiliser. Nous l'avons nommé test .
URL de la base de données - jdbc: mysql: // localhost: 3306 / tutorial.
Classe de pilote JDBC: com.mysql.jdbc.Driver.
Nom d'utilisateur: root.
Mot de passe: mot de passe pour root.
Les autres champs de l'écran sont laissés par défaut comme indiqué ci-dessous -
Ajoutez maintenant une requête JDBC qui fait référence au pool de configuration JDBC défini ci-dessus. Sélectionnez l'élément Utilisateurs JDBC.
Cliquez sur le bouton droit de votre souris pour accéder au menu Ajouter
Sélectionner Add → Sampler → JDBC Request.
Sélectionnez ce nouvel élément pour afficher son panneau de configuration.
Modifiez les propriétés comme indiqué ci-dessous -
Nom de variable lié au pool. Cela doit identifier de manière unique la configuration. Il est utilisé par l'échantillonneur JDBC pour identifier la configuration à utiliser. Nommé cela comme test .
Nom - Apprenez.
Entrez le nom du pool - test (comme dans l'élément de configuration).
Type de requête - instruction Select.
Entrez le champ Chaîne de requête SQL.
Créer un auditeur
Ajoutez maintenant l'élément Listener. Cet élément est chargé de stocker tous les résultats de vos requêtes JDBC dans un fichier et de présenter un modèle visuel des données.
Sélectionnez l'élément Utilisateurs JDBC
Ajouter un écouteur Afficher l'arborescence des résultats (Add → Listener → View Results Tree).
Enregistrer et exécuter le plan de test
Enregistrez maintenant le plan de test ci-dessus sous db_test.jmx . Exécutez ce plan de test en utilisantRun → Start option.
Vérifiez la sortie
Dans la dernière image, vous pouvez voir que deux enregistrements sont sélectionnés.
Dans ce chapitre, nous verrons comment tester un site FTP à l'aide de JMeter. Créons un plan de test pour tester le site FTP.
Renommer le plan de test
Ouvrez la fenêtre JMeter en cliquant sur /home/manisha/apache-jmeter-2.9/bin/jmeter.sh
Cliquez sur le nœud Plan de test.
Renommez ce nœud de plan de test en tant que TestFTPSite.
Ajouter un groupe de threads
Ajoutez un groupe de threads, qui est un espace réservé pour tous les autres éléments tels que les échantillonneurs, les contrôleurs et les écouteurs.
Faites un clic droit sur TestFTPSite (notre plan de test)
Sélectionnez Ajouter → Threads (utilisateurs) → Thread Group. Le groupe de threads sera ajouté sous le nœud Plan de test (TestFTPSite).
Modifiez les propriétés par défaut du groupe de threads en fonction de nos tests comme suit -
Name - Utilisateurs FTP
Number of Threads (Users) - 4
Ramp-Up Period - laissez la valeur par défaut de 0 seconde.
Loop Count - 1
Ajouter un échantillonneur - Demande FTP
Maintenant que nous avons défini nos utilisateurs, il est temps de définir les tâches qu'ils vont effectuer. Ajoutez des éléments de requête FTP. Nous ajoutons deux éléments de requête FTP, l'un qui récupère un fichier et l'autre qui place un fichier sur le site ftp.
Sélectionnez l'élément utilisateurs FTP.
Cliquez avec le bouton droit de la souris pour afficher le menu Ajouter
Sélectionnez Ajouter → Échantillonneur → Demande FTP.
Sélectionnez l'élément Demande FTP dans l'arborescence.
Modifiez les propriétés suivantes comme indiqué ci-dessous -
Les détails suivants sont saisis dans cet élément -
Name - Demande FTP Get
Server Name or IP - 184.168.74.29
Remote File - /home/manisha/sample_ftp.txt
Local File - sample_ftp.txt
Sélectionnez obtenir (RETR)
Username - manisha
Password - manisha123
Maintenant, ajoutez une autre demande FTP comme ci-dessus et modifiez les propriétés comme indiqué dans la capture d'écran suivante -
Les détails suivants sont saisis dans cet élément -
Name - Demande FTP Put
Server Name or IP - 184.168.74.29
Remote File - /home/manisha/examplefile.txt
Local File - /home/manisha/work/examplefile.txt
Sélectionnez put (STOR)
Username - manisha
Password - manisha123
Ajouter un auditeur
Le dernier élément que vous devez ajouter à votre plan de test est un auditeur. Cet élément se charge de stocker tous les résultats de vos requêtes FTP dans un fichier et de présenter un modèle visuel des données.
Sélectionnez l'élément utilisateurs FTP.
Ajoutez un écouteur Afficher l'arborescence des résultats en sélectionnant Ajouter> Écouteur> Afficher l'arborescence des résultats.
Exécutez le plan de test
Enregistrez maintenant le plan de test ci-dessus sous ftpsite_test.jmx . Exécutez ce plan de test en utilisantRun → Start option.
Afficher la sortie
La sortie suivante peut être vue dans l'écouteur.
Vous pouvez voir que quatre requêtes sont effectuées pour chaque requête FTP et que le test est réussi. Le fichier récupéré pour la demande GET est stocké dans le dossier / bin. Dans notre cas, c'est/home/manisha/apache-jmeter-2.9/bin/. Pour la demande PUT, le fichier est téléchargé sur le chemin/home/manisha/.
Dans ce chapitre, nous allons apprendre à créer un plan de test pour tester un WebService. Pour nos besoins de test, nous avons créé un projet de service Web simple et l'avons déployé localement sur le serveur Tomcat.
Créer un projet de service Web
Pour créer un projet de service Web, nous avons utilisé Eclipse IDE. Écrivez d'abord l'interface de point de terminaison de serviceHelloWorld sous le paquet com.tutorialspoint.ws. Le contenu de HelloWorld.java est le suivant -
package com.tutorialspoint.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld {
@WebMethod String getHelloWorldMessage(String string);
}
Ce service a une méthode getHelloWorldMessage qui prend un paramètre String.
Ensuite, créez la classe d'implémentation HelloWorldImpl.java sous le paquet com.tutorialspoint.ws.
package com.tutorialspoint.ws;
import javax.jws.WebService;
@WebService(endpointInterface="com.tutorialspoint.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
@Override
public String getHelloWorldMessage(String myName) {
return("Hello "+myName+" to JAX WS world");
}
}
Publions maintenant ce service Web localement en créant l'éditeur Endpoint et exposons le service sur le serveur.
La méthode de publication prend deux paramètres -
Chaîne d'URL du point de terminaison.
Objet Implementor, dans ce cas, la classe d'implémentation HelloWorld, qui est exposée en tant que service Web au point de terminaison identifié par l'URL mentionnée dans le paramètre ci-dessus.
Le contenu de HelloWorldPublisher.java est le suivant -
package com.tutorialspoint.endpoint;
import javax.xml.ws.Endpoint;
import com.tutorialspoint.ws.HelloWorldImpl;
public class HelloWorldPublisher {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9000/ws/hello", new HelloWorldImpl());
}
}
Modifiez le contenu web.xml comme indiqué ci-dessous -
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>120</session-timeout>
</session-config>
</web-app>
Pour déployer cette application en tant que service Web, nous aurions besoin d'un autre fichier de configuration sun-jaxws.xml. Le contenu de ce fichier est le suivant -
<?xml version = "1.0" encoding = "UTF-8"?>
<endpoints
xmlns = "http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version = "2.0">
<endpoint name = "HelloWorld"
implementation = "com.tutorialspoint.ws.HelloWorldImpl"
url-pattern = "/hello"/>
</endpoints>
Maintenant que tous les fichiers sont prêts, la structure des répertoires ressemblera à celle illustrée dans la capture d'écran suivante -
Créez maintenant un fichier WAR de cette application.
Choisissez le projet → clic droit → Exporter → fichier WAR.
Enregistrez ceci sous hello.war fichier sous le webapps dossier du serveur Tomcat.
Démarrez maintenant le serveur Tomcat.
Une fois le serveur démarré, vous devriez pouvoir accéder au webservice avec l'URL - http: // localhost: 8080 / hello / hello
Créer un plan de test JMeter
Maintenant, créons un plan de test pour tester le webservice ci-dessus.
Renommer le plan de test
Ouvrez la fenêtre JMeter en cliquant sur /home/manisha/apache-jmeter2.9/bin/jmeter.sh.
Cliquez sur le nœud Plan de test.
Renommez ce nœud de plan de test en tant que WebserviceTest.
Ajouter un groupe de threads
Ajoutez un groupe de threads, qui est un espace réservé pour tous les autres éléments tels que les échantillonneurs, les contrôleurs et les écouteurs.
Cliquez avec le bouton droit sur WebserviceTest (notre plan de test) → Ajouter → Threads (utilisateurs) → Thread Group. Le groupe de threads sera ajouté sous le nœud Plan de test (WebserviceTest).
Ensuite, modifions les propriétés par défaut du Thread Group en fonction de nos tests. Les propriétés suivantes sont modifiées -
Name - utilisateur du webservice
Number of Threads (Users) - 2
Ramp-Up Period - laissez la valeur par défaut de 0 seconde.
Loop Count - 2
Ajouter un échantillonneur - Requête SOAP / XML-RPC
Maintenant que nous avons défini les utilisateurs, il est temps de définir les tâches qu'ils vont effectuer.
Nous allons ajouter un élément de requête SOAP / XML-RPC -
Cliquez avec le bouton droit de la souris pour afficher le menu Ajouter.
Sélectionnez Ajouter → Échantillonneur → Requête SOAP / XML-RPC.
Sélectionnez l'élément de requête SOAP / XML-RPC dans l'arborescence
Modifiez les propriétés suivantes comme dans l'image ci-dessous -
Les détails suivants sont saisis dans cet élément -
Name − SOAP/XML-RPC Request
URL - http: // localhost: 8080 / bonjour / bonjour? Wsdl
Soap/XML-RPC Data - Entrez le contenu ci-dessous
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web = "http://ws.tutorialspoint.com/">
<soapenv:Header/>
<soapenv:Body>
<web:getHelloWorldMessage>
<arg0>Manisha</arg0>
</web:getHelloWorldMessage>
</soapenv:Body>
</soapenv:Envelope>
Ajouter un auditeur
Le dernier élément que vous devez ajouter à votre plan de test est un auditeur. Cet élément est chargé de stocker tous les résultats de vos requêtes HTTP dans un fichier et de présenter un modèle visuel des données.
Sélectionnez l'élément utilisateur du service Web.
Ajoutez un écouteur Afficher l'arborescence des résultats en sélectionnant Ajouter → Écouteur → Afficher l'arborescence des résultats.
Exécutez le plan de test
Enregistrez maintenant le plan de test ci-dessus sous le nom test_webservice.jmx . Exécutez ce plan de test à l'aide de l'option Exécuter → Démarrer.
Afficher la sortie
La sortie suivante peut être vue dans l'écouteur.
Dans la dernière image, vous pouvez voir le message de réponse «Hello Manisha to JAX WS world».
Dans ce chapitre, nous allons apprendre à rédiger un plan de test simple pour tester Java Messaging Service (JMS). JMS prend en charge deux types de messagerie -
Point-to-Point messaging- La messagerie de file d'attente est généralement utilisée pour les transactions où l'expéditeur attend une réponse. Les systèmes de messagerie sont assez différents des requêtes HTTP normales. Dans HTTP, un seul utilisateur envoie une requête et obtient une réponse.
Topic messaging- Les messages thématiques sont communément appelés messages pub / sub. La messagerie thématique est généralement utilisée dans les cas où un message est publié par un producteur et consommé par plusieurs abonnés.
Voyons un exemple de test pour chacun d'entre eux. Les pré-requis pour tester JMS sont:
Nous utilisons Apache ActiveMQ dans l'exemple. Il existe différents serveurs JMS comme IBM WebSphere MQ (anciennement MQSeries), Tibco, etc. Téléchargez à partir des fichiers binaires à partir du site Apache ActiveMQ.
Décompressez l'archive, accédez au répertoire décompressé et exécutez la commande suivante à partir de la console de commande pour démarrer le serveur ActiveMQ -
.\bin\activemq start
Vous pouvez vérifier si le serveur ActiveMQ a démarré en visitant l'interface d'administration à l'adresse suivante http://localhost:8161/admin/. S'il demande une authentification, entrez l'ID utilisateur et le mot de passe en tant qu'administrateur . L'écran est similaire à celui illustré ci-dessous -
Copiez maintenant activemq-all-xxxjar (XXX selon la version) du répertoire décompressé d'ActiveMQ vers /home/manisha/apache-jmeter-2.9/lib.
Avec la configuration ci-dessus, construisons le plan de test pour -
Dans ce chapitre, nous verrons comment créer un plan de test à l'aide de JMeter pour surveiller les serveurs Web. Les utilisations des tests de moniteur sont les suivantes -
Les moniteurs sont utiles pour les tests de résistance et la gestion du système.
Utilisé avec les tests de résistance, le moniteur fournit des informations supplémentaires sur les performances du serveur.
Les moniteurs permettent de voir plus facilement la relation entre les performances du serveur et le temps de réponse côté client.
En tant qu'outil d'administration système, le moniteur permet de surveiller facilement plusieurs serveurs à partir d'une seule console.
Nous avons besoin de Tomcat 5 ou supérieur pour la surveillance. Pour nos besoins de test, nous surveillerons le serveur Tomcat 7.0.42. Vous pouvez tester n'importe quel conteneur de servlet prenant en charge Java Management Extension (JMX). Écrivons un cas de test pour surveiller le serveur Tomcat. Commençons par configurer notre serveur tomcat.
Configurer le serveur Tomcat
Nous commençons par ouvrir le statut du service Tomcat. Pour ce faire, éditez le fichier de configuration des utilisateurs,<TOMCAT_HOME>/conf/tomcat-users.xml. Ce fichier contient une section tomcat-users (commentée) comme indiqué -
<tomcat-users>
<!--
<role rolename = "tomcat"/>
<role rolename = "role1"/>
<user username = "tomcat" password = "tomcat" roles = "tomcat"/>
<user username = "both" password = "tomcat" roles = "tomcat,role1"/>
<user username = "role1" password = "tomcat" roles = "role1"/>
-->
</tomcat-users>
Nous devons changer cette section pour ajouter les rôles d'administrateur, manager, manager-gui et affecter l'utilisateur "admin". Le fichier révisé est le suivant -
<tomcat-users>
<role rolename = "manager-gui"/>
<role rolename = "manager-script"/>
<role rolename = "manager-jmx"/>
<role rolename = "manager-status"/>
<user username = "admin" password = "admin" roles = "manager-gui,manager-script,manager-jmx,manager-status"/>
</tomcat-users>
Démarrez maintenant le serveur tomcat <TOMCAT_HOME> /bin/startup.sh pour Linux et <TOMCAT_HOME> /bin/startup.bat pour Windows. Une fois démarré, vérifiez que la supervision Tomcat fonctionne en saisissant le lien suivant dans votre navigateur -
http://localhost:8080/manager/status?XML=true
Une fenêtre d'authentification apparaît dans le navigateur. Entrez le login et le mot de passe tomcat associés (dans notre cas c'est admin). Ensuite, le navigateur affiche l'état d'exécution de Tomcat comme ci-dessous -
À partir de la capture d'écran ci-dessus, nous pouvons noter quelques choses -
Dans l'URL, notez que XML = true (notez le respect de la casse) permet un affichage net du superviseur Tomcat nécessaire au fonctionnement du JMeter.
Notez également qu'il existe deux connecteurs par défaut. Le connecteur AJP utilisé en général couplé au module frontal mod_jk Apache HTTPD et au connecteur HTTP qui est couramment utilisé pour un accès direct à Tomcat via le port 8080.
Rédiger un plan de test JMeter
Laissez-nous surveiller le serveur Tomcat en écrivant un plan de test -
Renommer le plan de test
Ouvrez la fenêtre JMeter en cliquant sur /home/manisha/apache-jmeter2.9/bin/jmeter.sh.
Cliquez sur le nœud Plan de test.
Ajoutez un groupe de threads comme expliqué à l'étape suivante.
Ajouter un groupe de threads
Faites un clic droit sur Test Plan → Add → Threads(Users) → Thread Group. Le groupe de threads sera ajouté sous le nœud Plan de test.
Modifiez le nombre de boucles pour toujours (ou un grand nombre) afin que suffisamment d'échantillons soient générés.
Gestionnaire d’autorisations HTTP
Ajoutez HTTP Authorization Manager à l'élément Thread Group en sélectionnant Add → Config element → HTTP Authorization Manager. Cet élément gère l'authentification demandée par le navigateur pour voir l'état du serveur Tomcat.
Sélectionnez le gestionnaire d'autorisation HTTP.
Modifiez les détails suivants -
Username - admin (selon la configuration dans le fichier tomcat-users.xml)
Password - admin (selon la configuration dans le fichier tomcatusers.xml)
Les autres champs sont laissés vides.
Ajouter une requête Sampler-HTTP
Maintenant que nous avons défini nos utilisateurs, il est temps de définir les tâches qu'ils vont effectuer. Nous ajoutons un élément de requête HTTP.
Cliquez avec le bouton droit sur le bouton de la souris pour afficher le menu Ajouter.
Sélectionnez Ajouter → Échantillonneur → Requête HTTP.
Ensuite, sélectionnez l'élément HTTP Request dans l'arborescence.
Modifiez les propriétés suivantes comme dans l'image ci-dessous -
Les détails suivants sont saisis dans cet élément -
Name - État du serveur
Server Name or IP - localhost
Port - 8080
Path - / manager / statut
Parameters- Ajoutez un paramètre de requête nommé "XML" en majuscules. Donnez-lui la valeur "true" en minuscules.
Optional Tasks - Cochez «Utiliser comme moniteur» au bas de l'échantillonneur.
Ajouter une minuterie constante
Pour demander périodiquement l'état du serveur, ajoutez une minuterie constante qui permettra un intervalle de temps entre chaque demande. Ajoutez une minuterie à ce groupe de fils en sélectionnant Ajouter → Minuterie → Minuterie constante.
Entrez 5000 millisecondes dans la zone Thread Delay . En général, l'utilisation d'intervalles inférieurs à 5 secondes peut ajouter du stress à votre serveur. Découvrez quel est l'intervalle acceptable avant de déployer le moniteur dans votre environnement de production.
Ajouter un auditeur
Le dernier élément que vous devez ajouter à votre plan de test est un auditeur. Nous ajoutons deux types d'auditeurs. Celui qui stocke les résultats dans un fichier et le second qui montre la vue graphique des résultats.
Sélectionnez l'élément de groupe de threads.
Ajouter un écouteur Simple Data Writer Ajouter → Listener → Simple Data Writer.
Spécifiez un répertoire et un nom de fichier du fichier de sortie (dans notre cas, il s'agit de /home/manisha/work/sample.csv)
Ajoutons un autre auditeur en sélectionnant l'élément du plan de test Add → Listener → Monitor Results.
Exécutez le plan de test
Maintenant, enregistrez le plan de test ci-dessus sous monitor_test.jmx . Exécutez ce plan de test à l'aide de l'option Exécuter → Démarrer.
Afficher la sortie
Les résultats seront enregistrés dans le fichier /home/manisha/work/sample.csv. Vous pouvez également voir un résultat graphique dans l'écouteur de résultats Monitor comme dans l'image ci-dessous.
Notez que le graphique a des légendes des deux côtés du graphique. Sur la gauche se trouve le pourcentage et la droite est mort / sain. Si la ligne de mémoire augmente et diminue rapidement, cela peut indiquer un problème de mémoire. Dans ces situations, il est judicieux de profiler l'application avec Borland OptimizeIt ou JProbe. Ce que vous voulez voir est un modèle régulier pour la charge, la mémoire et les threads. Tout comportement erratique indique généralement des performances médiocres ou un bogue quelconque.
Les écouteurs permettent d'accéder aux informations que JMeter rassemble sur les cas de test pendant l'exécution de JMeter. Les résultats ou informations recueillis par les auditeurs peuvent être présentés sous la forme de -
- tree
- tables
- graphs
- fichier journal
Tous les écouteurs écrivent les mêmes données brutes dans le fichier de sortie lorsque celui-ci est spécifié.
Configuration par défaut
Les éléments par défaut à enregistrer peuvent être définis de l'une des deux manières suivantes -
dans le jmeter.properties(ou user.properties) fichier. Ce fichier est présent dans le/bin dossier de JMeter.Pour modifier le format par défaut, recherchez la ligne suivante dans jmeter.properties -
jmeter.save.saveservice.output_format=
En utilisant la fenêtre contextuelle Config comme indiqué dans la capture d'écran suivante -
JMeter crée les résultats d'un test exécuté sous forme de journaux de texte JMeter (JTL). Ceux-ci sont normalement appelés fichiers JTL, car c'est l'extension par défaut - mais n'importe quelle extension peut être utilisée.
Si plusieurs tests sont exécutés en utilisant le même nom de fichier de sortie, JMeter ajoute automatiquement de nouvelles données à la fin du fichier.
L'écouteur peut enregistrer les résultats dans un fichier mais pas dans l'interface utilisateur. Il est destiné à fournir un moyen efficace d'enregistrement des données en éliminant la surcharge de l'interface graphique.
Lors de l'exécution -
GUI mode - utiliser l'écouteur Simple Data Writer
non-GUI mode - le drapeau -l peut être utilisé pour créer un fichier de données.
Les auditeurs peuvent utiliser beaucoup de mémoire s'il y a beaucoup d'échantillons. Pour minimiser la quantité de mémoire nécessaire, utilisez le format Simple Data Write with CSV.
Format du journal CSV
Le format du journal CSV dépend des éléments de données sélectionnés dans la configuration. Seuls les éléments de données spécifiés sont enregistrés dans le fichier. L'ordre d'apparition des colonnes est fixe et est le suivant -
Champ | La description | Exemple de valeur |
---|---|---|
timeStamp | en millisecondes depuis le 1/1/1970 | 1354223881017 |
écoulé | en millisecondes | 1858 |
étiquette | étiquette d'échantillonneur | Requête HTTP |
Code de réponse | par exemple 200, 404 | 200 |
responseMessage | par exemple OK | D'accord |
threadName | Groupe de fils 1-1 | |
Type de données | ex. texte | texte |
Succès | vrai ou faux | vrai |
échecMessage | si seulement | |
octets | nombre d'octets dans l'échantillon | 34908 |
grpThreads | nombre de threads actifs dans ce groupe de threads | 1 |
toutes les discussions | nombre total de threads actifs dans tous les groupes | 1 |
URL | http://tutorialspoint.com | |
Nom de fichier | si Enregistrer la réponse dans un fichier a été utilisé | |
latence | heure de la première réponse | 132 |
codage | utf-8 | |
SampleCount | nombre d'échantillons (1, sauf si plusieurs échantillons sont agrégés) | 1 |
ErrorCount | nombre d'erreurs (0 ou 1, sauf si plusieurs échantillons sont agrégés) | 0 |
Nom d'hôte | où l'échantillon a été généré | Ordinateur portableManisha |
Temps d'inactivité | nombre de millisecondes de temps d'inactivité (normalement 0) | |
Variables | si spécifié |
Enregistrement des données de réponse
Les données de réponse peuvent être enregistrées dans le fichier journal XML si nécessaire. Cependant, il ne permet pas de sauvegarder des fichiers et des images volumineux. Dans de tels cas, utilisez le post-processeur Save_Responses_to_a_file. Cela génère un nouveau fichier pour chaque échantillon et enregistre le nom de fichier avec l'exemple. Le nom de fichier peut ensuite être inclus dans la sortie de journal d'exemple. Les données seront extraites du fichier si nécessaire lors du rechargement de l'exemple de fichier journal.
Chargement (lecture) des données de réponse
Pour afficher un fichier de résultats existant, vous pouvez utiliser le bouton "Parcourir ..." du fichier pour sélectionner un fichier. Si nécessaire, créez simplement un plan de test factice avec l'auditeur approprié.
Enregistrement des données de l'interface graphique de l'auditeur
JMeter est capable de sauvegarder n'importe quel écouteur sous forme de fichier PNG. Faire cela,
Sélectionnez l'auditeur dans le panneau de gauche en sélectionnant Édition → Enregistrer comme image. Une boîte de dialogue de fichier apparaît.
Saisissez le nom souhaité.
Sauvegardez l'auditeur.
Fonctions JMeter et variables utilisateur
Les fonctions JMeter sont des valeurs spéciales qui peuvent remplir les champs de n'importe quel échantillonneur ou autre élément d'une arborescence de test.
Un appel de fonction ressemble à ceci -
${__functionName(var1,var2,var3)}
_functionName correspond au nom d'une fonction. Par exemple${__threadNum}.
Si un paramètre de fonction contient une virgule, assurez-vous de l'échapper avec "\" comme indiqué ci-dessous -
${__time(EEE\, d MMM yyyy)}
Les variables sont référencées comme -
${VARIABLE}
Liste des fonctions
Le tableau suivant répertorie un groupe de fonctions regroupées en types -
Type de fonction | Nom | Commentaire |
---|---|---|
Information | threadNum | Obtenez le numéro de fil. |
Information | samplerName | Obtenez le nom de l'échantillonneur (étiquette). |
Information | machineIP | Obtenez l'adresse IP de la machine locale. |
Information | nom de la machine | Obtenez le nom de l'ordinateur local. |
Information | temps | Renvoie l'heure actuelle dans différents formats. |
Information | Journal | Enregistrer (ou afficher) un message (et renvoyer la valeur). |
Information | se connecter | Enregistrer (ou afficher) un message (valeur de retour vide). |
Contribution | StringFromFile | Lire une ligne dans un fichier. |
Contribution | FileToString | Lisez un fichier entier. |
Contribution | CSVRead | Lire à partir d'un fichier délimité CSV. |
Contribution | XPath | Utilisez une expression XPath pour lire à partir d'un fichier. |
Calcul | compteur | Générez un nombre incrémentiel. |
Calcul | intSum | Ajoutez des nombres int. |
Calcul | longSum | Ajoutez des nombres longs. |
Calcul | Aléatoire | Générez un nombre aléatoire. |
Calcul | RandomString | Générez une chaîne aléatoire. |
Calcul | UUID | Générez un UUID de type 4 aléatoire. |
Scripting | BeanShell | Exécutez un script BeanShell. |
Scripting | javaScript | Processus JavaScript (Mozilla Rhino). |
Scripting | jexl, jexl2 | Évaluez une expression Jexl Commons. |
Propriétés | propriété | Lire une propriété. |
Propriétés | P | Lire une propriété (méthode abrégée). |
Propriétés | setProperty | Définissez une propriété JMeter. |
Variables | Divisé | Divisez une chaîne en variables. |
Variables | V | Évaluez un nom de variable. |
Variables | évaluer | Évaluez une expression variable. |
Variables | evalVar | Évaluez une expression stockée dans une variable. |
Chaîne | regexFunction | Analyser la réponse précédente à l'aide d'une expression régulière. |
Chaîne | escapeOroRegexpChars | Cite les méta caractères utilisés par l'expression régulière ORO. |
Chaîne | carboniser | Générez des valeurs de caractères Unicode à partir d'une liste de nombres. |
Chaîne | unescape | Traitez les chaînes contenant des échappements Java (par exemple \ n & \ t). |
Chaîne | unescapeHtml | Décodez les chaînes encodées en HTML. |
Chaîne | escapeHtml | Encodez les chaînes à l'aide du codage HTML. |
Chaîne | TestPlanName | Renvoie le nom du plan de test actuel. |
Il existe deux types de fonctions -
Valeurs statiques (ou variables) définies par l'utilisateur
Fonctions intégrées
Les valeurs statiques définies par l'utilisateur permettent à l'utilisateur de définir des variables à remplacer par leur valeur statique lorsqu'un arbre de test est compilé et soumis à l'exécution.
Les variables ne peuvent pas être imbriquées; c'est à dire${Var${N}} ne marche pas.
La fonction __V (variable) (versions après 2.2) peut être utilisée pour cela - $ {__ V (Var $ {N})}.
Ce type de remplacement est possible sans fonctions, mais il est moins pratique et moins intuitif.
Où utiliser les fonctions et les variables
Les fonctions et les variables peuvent être écrites dans n'importe quel champ de n'importe quel composant de test.
Les fonctions suivantes devraient bien fonctionner dans un plan de test -
- intSum
- longSum
- machineName
- BeanShell
- javaScript
- jexl
- random
- time
- fonctions de propriété
- fonctions de journalisation
Les fonctions utilisées dans le plan de test comportent certaines restrictions. Les variables de thread JMeter n'auront pas été entièrement configurées lorsque les fonctions sont traitées, donc les noms de variables passés en tant que paramètres ne seront pas définis et les références de variables ne fonctionneront pas. Par conséquent, split () et regex () et les fonctions d'évaluation des variables ne fonctionneront pas. La fonction threadNum () ne fonctionnera pas et n'a aucun sens au niveau du plan de test.
Référencer des variables et des fonctions
Le référencement d'une variable dans un élément de test se fait en mettant entre parenthèses le nom de la variable avec '$ {' et '}'.
Les fonctions sont référencées de la même manière, mais par convention, les noms des fonctions commencent par «__» pour éviter tout conflit avec les noms de valeurs utilisateur.
Certaines fonctions prennent des arguments pour les configurer, et ceux-ci sont placés entre parenthèses, séparés par des virgules. Si la fonction ne prend aucun argument, les parenthèses peuvent être omises. Par exemple -
${__BeanShell(vars.put("name"\,"value"))}
Alternativement, vous pouvez définir votre script en tant que variable, par exemple sur le plan de test -
SCRIPT vars.put("name","value")
Le script peut alors être référencé comme suit -
${__BeanShell(${SCRIPT})}
La boîte de dialogue d'aide aux fonctions
La boîte de dialogue Function Helper est disponible à partir de JMeter Options languette.
À l'aide de l'aide aux fonctions, vous pouvez sélectionner une fonction dans le menu déroulant et affecter des valeurs à ses arguments. La colonne de gauche du tableau fournit une brève description de l'argument et la colonne de droite est l'endroit où vous écrivez la valeur de cet argument. Différentes fonctions prennent des arguments différents.
Une fois que vous avez fait cela, cliquez sur le bouton «Générer», et la chaîne appropriée est générée, que vous pouvez copier-coller dans le plan de test partout où vous en avez besoin.
Variables prédéfinies
Certaines variables sont définies en interne par JMeter. Ils sont -
COOKIE_cookiename - contient la valeur du cookie.
JMeterThread.last_sample_ok - que le dernier échantillon soit OK ou non - vrai / faux. Remarque - ceci est mis à jour après l'exécution des PostProcessors et des Assertions.
Variables START.
Propriétés prédéfinies
Certaines propriétés intégrées sont définies par JMeter. Ceux-ci sont énumérés ci-dessous. Pour plus de commodité, les propriétés START sont également copiées dans des variables portant les mêmes noms.
START.MS - Heure de début de JMeter en millisecondes.
START.YMD - Heure de début JMeter au format aaaaMMjj.
START.HMS - Heure de début de JMeter comme HHmmss.
TESTSTART.MS - heure de début du test en millisecondes.
Notez que les variables / propriétés START représentent l'heure de démarrage de JMeter, pas l'heure de début du test. Ils sont principalement destinés à être utilisés dans les noms de fichiers, etc.
Les expressions régulières sont utilisées pour rechercher et manipuler du texte, sur la base de modèles. JMeter interprète les formes d'expressions régulières ou de modèles utilisés tout au long d'un plan de test JMeter, en incluant le logiciel de correspondance de modèles Apache Jakarta ORO .
Avec l'utilisation d'expressions régulières, nous pouvons certainement gagner beaucoup de temps et obtenir une plus grande flexibilité lorsque nous créons ou améliorons un plan de test. Les expressions régulières fournissent une méthode simple pour obtenir des informations à partir de pages lorsqu'il est impossible ou très difficile de prédire un résultat.
Un exemple d'utilisation standard d'expressions consiste à obtenir un ID de session à partir de la réponse du serveur. Si le serveur renvoie une clé de session unique, nous pouvons facilement l'obtenir en utilisant les expressions de notre script de chargement.
Pour utiliser des expressions régulières dans votre plan de test, vous devez utiliser l'extracteur d'expressions régulières de JMeter. Vous pouvez placer des expressions régulières dans n'importe quel composant d'un plan de test.
Il convient de souligner la différence entre contains et matches, tel qu'utilisé sur l'élément de test d'assertion de réponse -
containssignifie que l'expression régulière correspond à au moins une partie de la cible, donc "alphabet" "contient" "ph.b." car l'expression régulière correspond à la sous-chaîne «phabe».
matchessignifie que l'expression régulière correspond à l'ensemble de la cible. Par conséquent, «l'alphabet» est «mis en correspondance» par «al. * T».
Supposons que vous souhaitiez faire correspondre la partie suivante d'une page Web -
name = "file" value = "readme.txt"
Et vous voulez extraire readme.txt. Une expression régulière appropriée serait -
name = "file" value = "(.+?)">
Les caractères spéciaux ci-dessus sont -
( et ) - ceux-ci entourent la partie de la chaîne de correspondance à renvoyer
. - correspond à n'importe quel caractère
+ - une ou plusieurs fois
? - arrêter quand le premier match réussit
Créer un plan de test JMeter
Laissez-nous comprendre l'utilisation des expressions régulières dans l'extracteur d'expressions régulières - un élément de post-processeur en écrivant un plan de test. Cet élément extrait le texte de la page actuelle à l'aide d'une expression régulière pour identifier le modèle de texte auquel un élément souhaité se conforme.
Nous écrivons d'abord une page HTML contenant une liste de personnes et leurs identifiants de messagerie. Nous le déployons sur notre serveur tomcat. Le contenu de html (index.html) est le suivant -
<html>
<head>
</head>
<body>
<table style = "border: 1px solid #000000;">
<th style = "border: 1px solid #000000;">ID</th>
<th style = "border: 1px solid #000000;">name</th>
<th style = "border: 1px solid #000000;">Email</th>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">3</td>
<td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
<td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
</tr>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">4</td>
<td id = "Name" style = "border: 1px solid #000000;">joe</td>
<td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
</tr>
</table>
</body>
</html>
En le déployant sur le serveur tomcat, cette page ressemblerait à celle illustrée dans la capture d'écran suivante -
Dans notre plan de test, nous sélectionnerons la personne dans la première ligne du tableau des personnes dans la page de liste des personnes ci-dessus. Pour capturer l'ID de cette personne, nous allons d'abord déterminer le modèle où nous trouverons la personne dans la deuxième ligne.
Comme on peut le voir dans l'instantané suivant, l'ID de la deuxième personne est entouré de <td id = "ID"> et </ td>, et c'est la deuxième ligne de données ayant ce modèle. Nous pouvons l'utiliser pour correspondre au modèle exact dont nous voulons extraire les informations. Comme nous voulons extraire deux informations de cette page, l'ID de la personne et le nom de la personne, les champs sont définis comme suit -
Démarrez JMeter, ajoutez un groupe de threads Test Plan → Add→ Threads(Users)→ Thread Group.
Ensuite, ajoutez une requête HTTP d'échantillonneur, sélectionnez le plan de test, faites un clic droit Add → Sampler → HTTP Request et entrez les détails comme indiqué ci-dessous -
Name - Gérer
Server Name or IP - localhost
Port Number - 8080
Protocol - Nous garderons ce champ vide, ce qui signifie que nous voulons HTTP comme protocole.
Path - jmeter / index.html
Ensuite, ajoutez un extracteur d'expressions régulières. Sélectionnez l'échantillonneur de requête HTTP (Gérer), faites un clic droitAdd → Post Processor → Regular Expression Extractor.
Le tableau suivant fournit une description des champs utilisés dans la capture d'écran ci-dessus -
Sr.Non | Champ et description |
---|---|
1 | Reference Name Le nom de la variable dans laquelle le test extrait sera stocké (refname). |
2 | Regular Expression Le modèle par rapport auquel le texte à extraire sera mis en correspondance. Les groupes de texte qui seront extraits sont encadrés par les caractères '(' et ')'. Nous utilisons ". +?" pour indiquer une seule instance du texte entre les balises <td ..> .. </td>. Dans notre exemple, l'expression est - <td id = "ID"> (+?) </td> \ s * <td id = "Name"> (+?) </td> \ s * |
3 | Template Chaque groupe de texte extrait est placé en tant que membre de la variable Personne, en suivant l'ordre de chaque groupe de motif entouré par '(' et ')'. Chaque groupe est stocké sous le nom refname_g #, où refname est la chaîne que vous avez entrée comme nom de référence et # est le numéro du groupe. $ 1 $ to fait référence au groupe 1, $ 2 $ to se réfère au groupe 2, etc. $ 0 $ fait référence à ce que l'expression entière correspond. Dans cet exemple, l'ID que nous extrayons est conservé dans Person_g1, tandis que la valeur Name est stockée dans Person_g2. |
4 | Match No. Puisque nous prévoyons d'extraire seulement la deuxième occurrence de ce modèle, correspondant au deuxième volontaire, nous utilisons la valeur 2. La valeur 0 ferait une correspondance aléatoire, tandis qu'une valeur négative doit être utilisée avec le contrôleur ForEach. |
5 | Default Si l'élément n'est pas trouvé, ce sera la valeur par défaut. Ce champ n'est pas obligatoire. Vous pouvez le laisser vide. |
Ajoutez un écouteur pour capturer le résultat de ce plan de test. Cliquez avec le bouton droit sur le groupe de threads et sélectionnez l'option Ajouter → Écouteur → Afficher l'arborescence des résultats pour ajouter l'écouteur.
Enregistrez le plan de test sous reg_express_test.jmx et exécutez le test. La sortie serait un succès comme indiqué dans la capture d'écran suivante -
JMeter présente certaines limitations, en particulier lorsqu'il est exécuté dans un environnement distribué. Suivre ces directives aidera à créer une charge réelle et continue -
Utilisez plusieurs instances de JMeter au cas où, le nombre de threads serait supérieur.
Vérifiez les règles de portée et concevez en conséquence.
Utilisez toujours les conventions de dénomination pour tous les éléments.
Vérifiez les paramètres de connectivité par défaut du navigateur avant d'exécuter des scripts.
Ajoutez des auditeurs de manière appropriée.
Voici quelques suggestions pour réduire les besoins en ressources -
Utilisez le mode non-GUI: jmeter -n -t test.jmx -l test.jtl.
Utilisez le moins d'auditeurs possible; si vous utilisez l'indicateur -l comme ci-dessus, ils peuvent tous être supprimés ou désactivés.
Désactivez l'écouteur «Afficher l'arborescence des résultats» car il consomme beaucoup de mémoire et peut entraîner le gel de la console ou le manque de mémoire de JMeter. Il est cependant prudent d'utiliser l'écouteur «Afficher l'arborescence des résultats» avec uniquement «Erreurs» coché.
Plutôt que d'utiliser de nombreux échantillonneurs similaires, utilisez le même échantillonneur dans une boucle et utilisez des variables (ensemble de données CSV) pour faire varier l'échantillon. Ou peut-être utiliser l'échantillonneur de journal d'accès.
N'utilisez pas le mode fonctionnel.
Utilisez la sortie CSV plutôt que XML.
Enregistrez uniquement les données dont vous avez besoin.
Utilisez le moins d'assertions possible.
Désactivez tous les graphiques JMeter car ils consomment beaucoup de mémoire. Vous pouvez afficher tous les graphiques en temps réel à l'aide de l'onglet JTL de votre interface Web.
N'oubliez pas d'effacer le chemin local de CSV Data Set Config s'il est utilisé.
Nettoyez l'onglet Fichiers avant chaque exécution de test.