{"id":81,"date":"2008-07-20T17:28:04","date_gmt":"2008-07-20T16:28:04","guid":{"rendered":"http:\/\/blog.milamberspace.net\/?page_id=81"},"modified":"2013-08-09T15:15:49","modified_gmt":"2013-08-09T15:15:49","slug":"presentation-de-apache-jmeter","status":"publish","type":"page","link":"https:\/\/blog.milamberspace.net\/index.php\/jmeter-pages\/presentation-de-apache-jmeter","title":{"rendered":"Pr\u00e9sentation de JMeter"},"content":{"rendered":"<p><a title=\"JMeter\" href=\"http:\/\/jmeter.apache.org\/\" target=\"_blank\">JMeter<\/a> est un logiciel permettant de faire des tests de charge orient\u00e9s performances ou orient\u00e9s m\u00e9tiers (fonctionnels) sur diff\u00e9rentes protocoles ou technologies. Il est d\u00e9velopp\u00e9 par la <a href=\"http:\/\/www.apache.org\">Fondation Apache<\/a>.<\/p>\n<p>C&rsquo;est une application enti\u00e8rement Java avec une interface graphique utilisant l&rsquo;API graphique Swing, pouvant donc fonctionner sur tout environnement \/ poste de travail acceptant une machine virtuelle Java, par exemple : Windows, Linux, Mac, etc.<\/p>\n<p>Les protocoles ou technologies possibles pour un test avec JMeter sont tr\u00e8s nombreux :<\/p>\n<ul>\n<li>Web : HTTP, HTTPS pour des sites &lsquo;web 1.0&rsquo;, web 2.0 (ajax, flex-ws ou flex-amf)<\/li>\n<li>WebServices : SOAP \/ XML-RPC<\/li>\n<li>Base de donn\u00e9es via les pilotes JDBC<\/li>\n<li>Annuaire : LDAP<\/li>\n<li>Messagerie orient\u00e9e service via JMS<\/li>\n<li>Service de messagerie : POP3, IMAP, SMTP<\/li>\n<li>Service FTP<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>JMeter fonctionne en mode multi-threads (unit\u00e9s d&rsquo;ex\u00e9cution multiples) qui permettent la concurrence des requ\u00eates de tests durant le tir de charge ou bien d&rsquo;avoir des paliers de tests en termes d&rsquo;utilisateurs virtuels.<\/p>\n<p>JMeter permet la lecture et l&rsquo;analyse \u00e0 froid des donn\u00e9es d&rsquo;un test de charge par enregistrement des donn\u00e9es de r\u00e9sultats dans un fichier XML ou CSV.<\/p>\n<p>JMeter dispose d&rsquo;\u00e9l\u00e9ments R\u00e9cepteurs permettant la visualisation des r\u00e9sultats sous forme de graphiques ou de statistiques, et ainsi d&rsquo;interpr\u00e9ter ses r\u00e9sultats.<\/p>\n<p>JMeter permet d&rsquo;avoir des robots injecteurs pour simuler la charge tout en la r\u00e9partissant sur plusieurs machines injecteurs (et ainsi \u00e9viter que le goulot d&rsquo;\u00e9tranglement soit le poste de test). Bien qu&rsquo;aujourd&rsquo;hui (2013), un poste de travail r\u00e9cent offre largement les capacit\u00e9s processeur et m\u00e9moire suffisante pour simuler de tr\u00e8s nombreux utilisateurs virtuels.<\/p>\n<p>JMeter est extensible, \u00e0 travers la possibilit\u00e9 d&rsquo;ajouter :<\/p>\n<ul>\n<li>de nouveaux \u00e9l\u00e9ments de tests sur de nouveaux protocoles<\/li>\n<li>de nouveaux comportements de tests via des compteurs de temps<\/li>\n<li>de nouvelles visualisations personnalis\u00e9es<\/li>\n<\/ul>\n<p>Par ailleurs, JMeter est livr\u00e9 avec des fonctions (au sens macro) natives permettant l&rsquo;injection de donn\u00e9es dynamiques ou\/et de la manipulation de donn\u00e9es \u00e0 la vol\u00e9e durant le tir de charge. Pour compl\u00e9ter, JMeter dispose d&rsquo;\u00e9l\u00e9ments script\u00e9s (de type JSR223\/BSF\/BeanShell) permettant de d\u00e9velopper ses propres requ\u00eates personnalis\u00e9es et ceux-ci dans diff\u00e9rents langages (Java, Groovy, Javascript, Jexl, etc.).<\/p>\n<p>Dans le cas des applications Web, JMeter poss\u00e8de un \u00e9l\u00e9ment Proxy permettant d&rsquo;enregistrer automatiquement les requ\u00eates de tests pour un tir, directement lors d&rsquo;une session &lsquo;mod\u00e8le&rsquo; du sc\u00e9nario effectu\u00e9e par un utilisateur &lsquo;r\u00e9el&rsquo;. Ceci permet d&rsquo;acc\u00e9l\u00e9rer la pr\u00e9paration du tir.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>Tout ceci, en d&rsquo;autres termes moins \u00ab\u00a0savants\u00a0\u00bb, et pour le responsable d&rsquo;une application (web) :<\/em><\/span><\/p>\n<p>JMeter est un outil de test de charge qui peut donc \u00ab\u00a0tester\u00a0\u00bb les performances d&rsquo;une application en simulant des utilisateurs (qualifi\u00e9s de &lsquo;virtuels&rsquo;) et en enregistrant les temps de r\u00e9ponses pour permettre leur analyse.<\/p>\n<p>JMeter n&rsquo;est qu&rsquo;un outil de test, il convient donc de suivre une m\u00e9thodologie pour effectuer un test de charge, tant au niveau de la pr\u00e9paration du tir, de la d\u00e9finition des objectifs du tir, que de son sc\u00e9nario d&rsquo;ex\u00e9cution et de ses choix d&rsquo;hypoth\u00e8ses de tir.<\/p>\n<p>JMeter est un outil &lsquo;g\u00e9n\u00e9rique&rsquo; de tests qui poss\u00e8de une grande souplesse et adaptabilit\u00e9 pour r\u00e9pondre \u00e0 des exigences de sc\u00e9nario de tir.<\/p>\n<p>Concr\u00e8tement voici quelques exemples de tir de charge possibles :<\/p>\n<ul>\n<li>Tester les temps de r\u00e9ponses d&rsquo;une application web, en fonction du nombre d&rsquo;utilisateurs virtuels<\/li>\n<li>Tester les \u00e9carts de temps de r\u00e9ponse en fonction de paliers d&rsquo;utilisateurs<\/li>\n<li>Tester les diff\u00e9rences de comportements d&rsquo;une m\u00eame application sur deux (ou plus) environnements d&rsquo;ex\u00e9cution diff\u00e9rents (par exemple cluster ou non, configuration 1 \/ configuration 2, etc)<\/li>\n<li>Tester la robustesse d&rsquo;une application (\u00e0 partir de quand la solution s&rsquo;interrompt brutalement (crash) ?&#8230;)<\/li>\n<li>Tester fonctionnellement une application de mani\u00e8re automatique (tests de non r\u00e9gression, de validit\u00e9 fonctionnelle, etc)<\/li>\n<li>Superviser une application (soit via une sorte de &lsquo;ping&rsquo;, soit par des \u00e9l\u00e9ments plus complexes).<\/li>\n<\/ul>\n<p>D&rsquo;autres possibilit\u00e9s existent, et ne demandent qu&rsquo;\u00e0 \u00eatre pens\u00e9es.<\/p>\n<p>Pour conclure, JMeter est un outil qui permettra de valider le bon fonctionnement d&rsquo;une application dans son contexte.<\/p>\n<p>.\/<\/p>\n<p>Le bonus de la fin est un sch\u00e9ma d&rsquo;une architecture <em>possible<\/em> pour un test de charge sur un environnement complexe.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black; vertical-align: middle;\" alt=\"Architecture de test JMeter\" src=\"\/wp-content\/images\/jmeter-presentation\/architecture-complexe-test.jpg\" width=\"609\" height=\"868\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>JMeter est un logiciel permettant de faire des tests de charge orient\u00e9s performances ou orient\u00e9s m\u00e9tiers (fonctionnels) sur diff\u00e9rentes protocoles ou technologies. Il est d\u00e9velopp\u00e9 par la Fondation Apache. C&rsquo;est une application enti\u00e8rement Java avec une interface graphique utilisant l&rsquo;API graphique Swing, pouvant donc fonctionner sur tout environnement \/ poste de travail acceptant une machine &hellip; <a href=\"https:\/\/blog.milamberspace.net\/index.php\/jmeter-pages\/presentation-de-apache-jmeter\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Pr\u00e9sentation de JMeter<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":85,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-81","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/81","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/comments?post=81"}],"version-history":[{"count":14,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/81\/revisions"}],"predecessor-version":[{"id":1349,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/81\/revisions\/1349"}],"up":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/85"}],"wp:attachment":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/media?parent=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}