Apache JMeter
Apache JMeter est un projet de logiciel libre permettant d'effectuer des tests de performance d'applications et de serveurs selon différents protocoles ainsi que des tests fonctionnels. Il est développé au sein de la Fondation Apache (ASF).
Développé par | Apache Software Foundation |
---|---|
PremiĂšre version | [1] |
DerniĂšre version | 5.5 () |
DĂ©pĂŽt | github.com/apache/jmeter |
Ăcrit en | Java |
Environnement | Machine virtuelle Java |
Type | Outil de test logiciel (d) |
Licence | Licence Apache version 2.0 |
Site web | jmeter.apache.org |
JMeter est entiĂšrement Ă©crit en Java, ce qui lui permet d'ĂȘtre utilisĂ© sur tout systĂšme d'exploitation supportant une machine virtuelle Java (JVM).
Il permet de simuler le comportement de plusieurs utilisateurs agissant de maniÚre simultanée sur une application Web. Au fur et à mesure de ses développements, il a été étendu et permet de tester d'autres types d'applications : serveurs ftp, serveurs de services Web, bases de données accessible via jdbc, serveurs TCP/IP, LDAP, etc.
Il mesure le temps de rĂ©ponse de chaque requĂȘte et produit des statistiques de ces temps de rĂ©ponse.
Il contient les principales fonctionnalitĂ©s de ce type d'outil : Utilisation d'un jeu de donnĂ©es externalisĂ©es, enregistrement de scĂ©narios web, scĂ©narios "dynamiques", s'adaptant aux rĂ©ponses des serveurs, dĂ©tection d'erreurs, extensibilitĂ©, gestion des cookies et des rĂ©Ă©critures (en) d'URL, lancement des tests Ă partir de plusieurs postes, etc. Il est Ă©galement possible, Ă partir de la version 2.4, de faire de l'"IP spoofing" (simulation de plusieurs adresses IP Ă partir du mĂȘme poste de test) en utilisant les requĂȘtes HTTP HTTPClient (HttpClient version 3 minimum).
Des prĂ©/post processeurs de tests sont disponibles, permettant par exemple de modifier dynamiquement une requĂȘte avant son exĂ©cution ou d'extraire des donnĂ©es de rĂ©sultats de test. Les rĂ©sultats des tests peuvent ĂȘtre visualisĂ©s de diffĂ©rentes maniĂšres et peuvent Ă©galement ĂȘtre enregistrĂ©s sous fichier au format XML ou CSV.
JMeter peut également faire des tests fonctionnels d'une application, permettant ainsi de valider les fonctionnalités d'une application de maniÚre automatisée.
Points intéressants
Le spectre des tests de performances rĂ©alisables est assez large. Il y a moyen de tester les performances de scripts SQL, de requĂȘtes HTTP/SOAP/EJB, d'appels Ă des classes Java et autres encore. L'interface graphique de JMeter offre des possibilitĂ©s de faire des tests multi-threads, de crĂ©er des boucles et contrĂŽleurs de tests plus spĂ©cifiques.
Ses principales fonctionnalités sont :
- Test de performance ;
- Test de robustesse : Simulation de trafic pour vérifier la robustesse selon le niveau de trafic ;
- Test de rupture ;
- Réalisation de résultats statistiques sous plusieurs formes graphiques et textuelles ;
- etc.
JMeter est un outil gĂ©nĂ©rique de tests, il n'est pas limitĂ© Ă une seule nature de types de tests, c'est le mĂ©trologue qui, en crĂ©ant son scĂ©nario de tests, dĂ©finit le type de tests. On peut Ă©galement mĂ©langer des protocoles dans le mĂȘme test (http et ftp par exemple).Par ailleurs, JMeter est extensible, c'est-Ă -dire qu'il est possible de crĂ©er de nouveaux types d'Ă©chantillons (requĂȘtes) implĂ©mentant d'autres protocoles.
Composants de base de Apache JMeter
- Plan de test : Emplacement à partir duquel on définit ce que l'on teste.
- Groupe d'unités : Emplacement à partir duquel on définit les paramÚtres de la simulation :
- Nombre d'unités : nombre d'utilisateurs qui se connectent.
- DurĂ©e de montĂ©e en charge : intervalle de temps oĂč ces utilisateurs se connectent progressivement.
- Nombre d'itérations : nombre d'itérations que fera chaque unité (utilisateur).
- L'option Infini : spĂ©cifie que les unitĂ©s itĂšrent indĂ©finiment (souvent dans ce cas, l'arrĂȘt est manuel ou au bout d'une durĂ©e en seconde).
- Plan de travail : Emplacement permettant de garder les composants de test non utilisés.
- Gestionnaire SSL : Composant permettant de gérer des clés SSL pour s'authentifier via un certificat SSL.
Apache JMeter contient les éléments suivants :
- Ăchantillons : requĂȘtes que l'on peut envoyer Ă un serveur ou une application Web pour tester ses ressources. Apache JMeter inclut les requĂȘtes FTP, les requĂȘtes HTTP, les requĂȘtes JDBC, les requĂȘtes JMS, les requĂȘtes objet Java, les requĂȘtes LDAP, les requĂȘtes SOAP/XML-RPC et les requĂȘtes WebService (SOAP).
- ContrÎleurs : permet la spécification des paramÚtres du test à effectuer. Apache JMeter inclut plusieurs types de contrÎleurs :
- ContrĂŽleur interleave et ContrĂŽleurs alĂ©atoire : composants permettant d'envoyer des requĂȘtes dans un ordre alĂ©atoire.
- ContrĂŽleur boucle : composant permettant d'envoyer plusieurs fois les requĂȘtes spĂ©cifiĂ©es.
- ContrĂŽleur d'exĂ©cution unique : composant permettant de lancer une seule fois les requĂȘtes spĂ©cifiĂ©es quel que soit le nombre d'itĂ©rations prĂ©vues.
- ContrĂŽleur transaction : composant permettant de consolider les rĂ©sultats (temps de rĂ©ponse) d'un ensemble de requĂȘtes.
- ContrĂŽleur enregistreur : composant destinĂ©e Ă capter les requĂȘtes HTTP interceptĂ©es par le composant Proxy HTTP.
Apache JMeter permet de gérer les paramÚtres de certains sites ou serveurs (cookies, sites sécurisés). Les composants disponibles pour gérer ces paramÚtres sont les suivants :
- HTTP, FTP, LDAP, JDBC et Java Request Defaults : Composants permettant de dĂ©finir des paramĂštres par dĂ©faut, ils seront utilisĂ©s pour toutes requĂȘtes.
- Gestionnaire d'autorisation HTTP : Composant fournissant un identifiant et un mot de passe pour les sites oĂč l'accĂšs est restreint.
- Gestionnaire de cookies HTTP : Composant permettant de stocker, d'envoyer et de spécifier des cookies à envoyer au serveur.
- Gestionnaire d'entĂȘtes HTTP : Composant permettant de dĂ©finir l'entĂȘte HTTP des requĂȘtes envoyĂ©es.
Apache JMeter donne la possibilitĂ© d'insĂ©rer une pause entre chaque requĂȘte envoyĂ©e Ă travers les Ă©lĂ©ments Compteurs de temps ou Action de contrĂŽle d'exĂ©cution avec action = Pause. Les diffĂ©rents Compteurs disponibles sont :
- Compteur de temps fixe : Composant permettant d'insĂ©rer un temps constant entre chaque requĂȘte envoyĂ©e.
- Compteur de temps alĂ©atoire gaussien : Composant permettant d'insĂ©rer un temps alĂ©atoire selon la logique Gaussienne entre chaque requĂȘte envoyĂ©e.
- Compteur de dĂ©bit constant : Composant permettant de contrĂŽler la frĂ©quence d'exĂ©cution d'une requĂȘte.
- Compteur de synchronisation : Composant permettant d'attendre un certain nombre d'unitĂ©s pour exĂ©cuter la prochaine requĂȘte en mĂȘme temps.
L'analyse des réponses des serveurs se fait par des assertions, il en existe plusieurs types :
- Assertion réponse : Vérifie si une ou plusieurs chaßnes de caractÚres se trouvent dans la réponse reçue.
- Assertion durée : Vérifie si la réponse a été reçue avant ou aprÚs un temps prédéfini.
- Assertion taille : Vérifie si la taille de réponse (en octets) est supérieure, inférieure, égale, ... à une taille prédéfinie.
- Assertion XML : Vérifie que la page de réponse est un document XML valide.
- Assertion MD5 : VĂ©rifie si l'empreinte MD5 de la rĂ©ponse (entĂȘte et corps) correspond Ă une empreinte MD5 prĂ©dĂ©finie.
- Assertion JSON : VĂ©rifie un chemin au format JSON
- Assertion XPATH : VĂ©rifie une expression XPATH pour un flux XML
Pour l'acquisition et l'affichage des résultats des tests, Apache JMeter inclut des récepteurs. Plusieurs récepteurs sont disponibles :
- Graphique de rĂ©sultats : Composant fournissant un graphique prĂ©sentant les temps de rĂ©ponse, la moyenne, la mĂ©diane, l'Ă©cart-type des diffĂ©rentes requĂȘtes effectuĂ©es.
- Moniteur de courbe (spline) : Composant fournissant un graphique du temps de rĂ©ponse des diffĂ©rentes requĂȘtes exĂ©cutĂ©es, selon la logique Spline.
- RĂ©sultats d'assertion : Composant fournissant les rĂ©sultats des assertions sous forme textuelle de toutes les requĂȘtes exĂ©cutĂ©es.
- Visualiseur de courrier : Composant permettant l'envoi d'un mail Ă l'administrateur en cas de trop nombreux Ă©checs aux requĂȘtes exĂ©cutĂ©es.
- Arbre de rĂ©sultats : Composant affichant la liste des requĂȘtes exĂ©cutĂ©es, leur type et leurs donnĂ©es de rĂ©ponses.
- Tableau de rĂ©sultats : Composant crĂ©ant une table de l'ensemble des requĂȘtes exĂ©cutĂ©es, leur type, leur temps de rĂ©ponse et leur validitĂ©.
- Rapport agrégé : Composant créant une table de l'ensemble des statistiques des tests effectués.
- Enregistreur de données simple : Composant qui enregistre les résultats des tests vers un fichier donné.
JMeter propose un Ă©lĂ©ment hors-test appelĂ© "HTTP(S) Test Script Recorder" (ancien nom : "HTTP Proxy Server") qui permet l'enregistrement d'une session d'utilisation d'une application Web effectuĂ©e depuis son navigateur. Les requĂȘtes sont interceptĂ©es par le proxy recoder, et crĂ©Ă©es en sous Ă©lĂ©ments d'un contrĂŽleur Enregistreur, prĂȘtes Ă ĂȘtre rĂ©exĂ©cutĂ©es. Ceci accĂ©lĂšre la rĂ©alisation d'un scĂ©nario de test de performance.
Livres de référence
- Master JMeter from Load Testing to DevOps, Livre en Anglais par Antonio Gomes Rodrigues, Bruno Demion (Milamber) et Philippe Mouawad, Octobre 2018
- Maßtriser JMeter : Du Test de charge à Devops, Livre en français par Antonio Gomes Rodrigues, Bruno Demion (Milamber) et Philippe Mouawad, Novembre 2015
- JMeter Cookbook, Livre en anglais par Bayo Erinle Octobre 2014
- Performance Testing with JMeter, Livre en anglais par Bayo Erinle Juillet 2013
- Apache JMeter, Livre en anglais par Emily H. Halili Juin 2008
Liens externes
- Site officiel
- Tutoriel JMeter : Test de charges dâun site Web, mode dâemploi
- Différents tutoriels et articles sur JMeter
- Groupe de discussion sur JMeter en français
- Différentes extensions pour JMeter
- « https://projects.apache.org/json/projects/jmeter.json » (consulté le )