Présentation de Apache JMeter

JMeter est un logiciel permettant de faire des tests de charges orientés performances ou orientés métiers sur différentes protocoles ou technologies. Il est développé par la Fondation Apache, via son projet Jakarta.

C’est une application Java graphique utilisant l’API Swing, pouvant fonctionner sur tout environnement / poste de travail acceptant une machine virtuelle Java, par exemple, Windows, Linux, etc.

Les protocoles ou technologies possibles pour un test avec JMeter son très nombreux :

  • Web : HTTP, HTTPS
  • WebServices : SOAP / XML-RPC
  • Base de données via le protocole JDBC
  • Annuaire : LDAP
  • Messagerie orientée service via JMS
  • Service de messagerie : SMTP, POP3, IMAP
  • Service FTP
  • etc

JMeter fonctionne en mode mutli-threads (unité d’exécution multiples) qui permettent la concurrence des requêtes de tests durant le tir de charges ou bien d’avoir des paliers de tests en termes d’utilisateurs vituels.

JMeter permet la lecture et l’analyse à froid des données d’un test de charges par enregistrement des données de résultats dans un fichier XML ou CSV.

JMeter permet d’avoir des robots injecteurs pour simuler la charge tout en la répartissant sur plusieurs machines injecteurs (et ainsi éviter que le goulot d’étranglement soit le poste de test).

JMeter est extensible, à travers la possibilité d’ajouter :

  • de nouveaux éléments de tests sur de nouveaux protocoles
  • de nouveaux comportements de tests via des timers
  • de nouvelles visualisations personnalisées

Par ailleurs, JMeter est livré avec des fonctions (au sens macro) natives permettant l’injection de données dynamiques ou/et de la manipulation de données à la volée durant le tir de charges. Pour compléter, JMeter dispose d’éléments scripté (de type BSH/BeanShell) permettant de développer ses propres requêtes personnalisées.

Dans le cas des applications Web, JMeter possède un élément Proxy permettant d’enregistrer automatiquement les requêtes de tests pour un tir, directement lors d’une session ‘modèle’ du scénario effectuée par un utilisateur ‘réel’. Ceci permet d’accélérer la préparation du tir.

Tout ceci en d’autres termes moins « savants », et pour le responsable d’une application (web) :

JMeter est un outil de test de charges qui peut donc « tester » les performances d’une application en simulant des utilisateurs (qualifié de ‘virtuels’) et en enregistrant les temps de réponses pour permet leur analyse.

JMeter n’est qu’un outil de test, il convient donc de suivre une méthodologie pour effectuer un test de charges, tant au niveau de la préparation du tir, de la définition des objectifs du tir, que de son scénario d’exécution et de ses choix d’hypothèses de tir.

JMeter est donc un outil ‘générique’ de tests qui possède une grande souplesse et adaptabilité pour répondre à des exigences de scénario de tir.

Concrètement voici quelques exemples de tir de charges possibles :

  • Tester le temps de réponses d’une application web, en fonction du nombre d’utilisateurs virtuels
  • Tester les écarts de temps de réponses en fonction de palier d’utilisateurs
  • Tester les différences de comportements d’une même application sur deux (ou plus) environnements d’exécution différents (par exemple cluster ou non, configuration 1 / configuration 2, etc)
  • Tester la robustesse d’une application (à partir de quand elle crash…)
  • Tester fonctionnellement une application de manière automatique (tests de non regression, de validité fonctionnelle, etc)
  • Monitorer une application qui le permet (soit via une sorte de ‘ping’, soit par des éléments plus complexe).

D’autres possibilités existent, et ne demandent qu’à être penser.

Pour conclure, JMeter est un outil qui permettra de valider le bon fonctionnement d’une application dans son contexte.

./

Le bonus de la fin est un schéma d’une architecture possible pour un test de charge sur un environnement complexe.

Architecture de test JMeter

Laisser un commentaire