{"id":35,"date":"2007-09-25T15:36:57","date_gmt":"2007-09-25T15:36:57","guid":{"rendered":"http:\/\/blog.milamberspace.net\/index.php\/jmeter-test-de-charges-dun-site-web-mode-demploi\/affinage-du-scenario-de-tests"},"modified":"2012-09-28T07:01:46","modified_gmt":"2012-09-28T06:01:46","slug":"affinage-du-scenario-de-tests","status":"publish","type":"page","link":"https:\/\/blog.milamberspace.net\/index.php\/jmeter-pages\/jmeter-test-de-charges-dun-site-web-mode-demploi\/affinage-du-scenario-de-tests","title":{"rendered":"Affinage du sc\u00e9nario de tests"},"content":{"rendered":"<p><span style=\"text-decoration: underline;\"><strong>Affinage du sc\u00e9nario de tests<\/strong><\/span><\/p>\n<p>JMeter avec sa fonction de proxy nous a permis de faire automatiquement un gros travail d&rsquo;\u00e9criture du sc\u00e9nario de tir. Cependant il reste un travail de v\u00e9rification et d&rsquo;affinage \u00e0 faire.<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Ajout des identifiants des Requ\u00eates HTTP<br \/>\n<\/strong><\/span><\/p>\n<p>Afin de mieux retrouver les diff\u00e9rents \u00e9l\u00e9ments test\u00e9s dans les r\u00e9cepteurs de r\u00e9sultats, nous allons ajouter un identifiant dans le nom des \u00e9l\u00e9ments <strong>Requ\u00eates <\/strong><span style=\"font-style: normal;\"><strong>HTTP<\/strong><\/span>. Ainsi avant le champ<strong><em> Nom<\/em><\/strong> correspondait \u00e0 l&rsquo;URI de la page, maintenant ce sera un identifiant +l&rsquo;URI de la page. Par exemple, avant le nom \u00e9tait : \u00ab\u00a0\/examples\/servlets\/index.html\u00a0\u00bb, ensuite le nom deviends : \u00ab\u00a003 \/examples\/servlets\/index.html\u00a0\u00bb. Le 03 pour la troisi\u00e8me requ\u00eate.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Ajout des ID item HTTP Request\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/01-jmeter-affinage-numero.png\" border=\"1\" alt=\"Ajout des ID item HTTP Request\" width=\"564\" height=\"204\" \/><br \/>\n<\/span><\/p>\n<p>Voici un petit nettoyage \u00e0 faire : dans le deuxi\u00e8me appel \u00e0 la servlet SessionExample, il y a eu le <em>jssessionid<\/em> qui a \u00e9t\u00e9 ajout\u00e9 \u00e0 l&rsquo;URI, on va le supprimer du champ <strong><em>Chemin<\/em><\/strong>.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Nettoyage jssessionid\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/02-jmeter-affinage-jsessionid.png\" border=\"1\" alt=\"Nettoyage jssessionid\" width=\"648\" height=\"249\" \/><br \/>\n<\/span><\/p>\n<p>Le r\u00e9sultat du nettoyage donne ceci :<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"R\u00e9sultat nettoyage jssessionid\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/03-jmeter-affinage-corrige.png\" border=\"1\" alt=\"R\u00e9sultat nettoyage jssessionid\" width=\"595\" height=\"237\" \/><br \/>\n<\/span><\/p>\n<p><strong><span style=\"text-decoration: underline;\">Ajout d&rsquo;\u00e9l\u00e9ment de type R\u00e9cepteur<\/span><\/strong><\/p>\n<p>Maintenant nous allons ajouter \u00e0 notre sc\u00e9nario de tir des nouveaux \u00e9l\u00e9ments afin de pourvoir \u00ab\u00a0voir\u00a0\u00bb les r\u00e9sultats d&rsquo;un test de charge. Pour cela, on se place sur l&rsquo;item <strong>Groupe d&rsquo;unit\u00e9s<\/strong>, et avec un clic droit avec la souris on ajoute un <strong>Rapport Consolid\u00e9<\/strong>.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Ajout d'un Summary Report\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/04-jmeter-ajouter-rapport.png\" border=\"1\" alt=\"Ajout d'un Summary Report\" width=\"673\" height=\"438\" \/><br \/>\n<\/span><\/p>\n<p style=\"text-align: left;\">Et on termine avec un \u00e9l\u00e9ment <strong>R\u00e9cepteurs &gt; Arbre de r\u00e9sultats<\/strong>.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Ajout d'un item View Results Tree\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/05-jmeter-ajoute-arbre-resultats.png\" border=\"1\" alt=\"Ajout d'un item View Results Tree\" width=\"684\" height=\"449\" \/><br \/>\n<\/span><\/p>\n<p>On a donc pour finir, deux \u00e9l\u00e9ments <em>r\u00e9cepteurs<\/em> diff\u00e9rents pour notre sc\u00e9nario de tir.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"R\u00e9sultat ajout des trois items listener\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/06-jmeter-plan-de-test.png\" border=\"1\" alt=\"R\u00e9sultat ajout des trois items listener\" width=\"272\" height=\"267\" \/><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Premier test de tir de charge<\/strong><\/span><\/p>\n<p>Maintenant nous sommes pr\u00eats pour faire un premier test de tir, qui nous permettra de v\u00e9rifier la validit\u00e9 du tir. L&rsquo;\u00e9l\u00e9ment <strong>Groupe d&rsquo;unit\u00e9s<\/strong> indique les valeurs suivantes :<\/p>\n<ul>\n<li><strong><em>Nombre d&rsquo;unit\u00e9s (utilisateurs)<\/em><\/strong>, valeur : 1<br \/>\nIl s&rsquo;agit du nombre de thread <em>(au sens java)<\/em> que JMeter va lancer pour ex\u00e9cuter le sc\u00e9nario de tir. En d&rsquo;autres termes, il s&rsquo;agit du nombre d&rsquo;utilisateurs virtuels qui vont ex\u00e9cuter le sc\u00e9nario. Pour ce premier tir, on laisse la valeur 1 pour le nombre d&rsquo;unit\u00e9s, puisqu&rsquo;il s&rsquo;agit de v\u00e9rifier la validit\u00e9 du tir.<\/li>\n<li><em><strong>Dur\u00e9e de mont\u00e9e en charge (en secondes)<\/strong><\/em>, valeur : 1<br \/>\nIl s&rsquo;agit de la p\u00e9riode de mont\u00e9e en charge des utilisateurs virtuels, ici on est \u00e0 1 seconde. Imaginons avoir une p\u00e9riode de mont\u00e9e en charge de 20 secondes avec 10 utilisateurs virtuels, cela signifierait que un nouvel utilisateur commence son sc\u00e9nario de tir chaque deux secondes.<strong><em><br \/>\n<\/em><\/strong><\/li>\n<li><strong><em>Nombre d&rsquo;it\u00e9rations<\/em><\/strong>, valeur : 1<br \/>\nCe param\u00e8tre permet d&rsquo;indiquer le nombre de fois qu&rsquo;un utilisateur virtuel va ex\u00e9cuter le sc\u00e9nario de tir \u00e0 la suite.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Item Thread group avant le lancement du premier tir\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/07-jmeter-groupe-unites.png\" border=\"1\" alt=\"Item Thread group avant le lancement du premier tir\" width=\"629\" height=\"287\" \/><br \/>\n<\/span><\/p>\n<p>Pour lancer le tir, on peut utilise le raccourci clavier <strong>Ctrl + R<\/strong> ou bien le menu <strong>Lancer &gt; D\u00e9marrer<\/strong><span>. Une fois termin\u00e9, on se place sur le r\u00e9cepteur <\/span><strong>Rapport consolid\u00e9 <\/strong><span>pour consulter les r\u00e9sultats.<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"> <\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Nouveau r\u00e9sultat du deuxi\u00e8me tir de charges\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/10-jmeter-rapport-resultats.png\" border=\"1\" alt=\"Nouveau r\u00e9sultat du deuxi\u00e8me tir de charges\" width=\"824\" height=\"267\" \/><br \/>\n<\/span><\/p>\n<p>Ici tous les r\u00e9sultats sont Ok (pas d&rsquo;erreur dans la colonne <em>% Erreur<\/em>). <em>Cependant ce n&rsquo;est pas totalement vrai.<\/em> En effet, les tests d&rsquo;assertion effectu\u00e9s sur les tests sont vides. On ne v\u00e9rifie pas r\u00e9ellement la r\u00e9ponse re\u00e7ue. Il faut donc aller personnaliser les tests d&rsquo;assertion de chaque page demand\u00e9e pour pr\u00e9ciser le r\u00e9sultat attendu.<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Personnalisation du test d&rsquo;assertion TEST01<\/strong><\/span><\/p>\n<p>On commence en allant dans le r\u00e9cepteur <strong>Arbre de r\u00e9sultats<\/strong>, onglet <strong>Donn\u00e9es de r\u00e9ponse<\/strong>. Cet \u00e9cran nous donne le code HTML re\u00e7u en r\u00e9ponse de la requ\u00eate. Nous allons s\u00e9lectionner une partie de code HTML, cette partie doit \u00eatre repr\u00e9sentative d&rsquo;une bonne ex\u00e9cution de la page, c&rsquo;est-\u00e0-dire que si la page retourn\u00e9e n&rsquo;est pas celle attendue, la partie de code HTML n&rsquo;est pas pr\u00e9sente dans les donn\u00e9es de r\u00e9ponse d&rsquo;erreur.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Selection du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 01\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/11-jmeter-assert1.png\" border=\"1\" alt=\"Selection du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 01\" width=\"584\" height=\"446\" \/><\/p>\n<p>Ensuite on va dans l&rsquo;\u00e9l\u00e9ment <strong>Assertion R\u00e9ponse<\/strong> du test 01, et on modifie le champ <strong><em>Motifs \u00e0 tester<\/em><\/strong> en ajoutant le texte repr\u00e9sentatif d&rsquo;une bonne ex\u00e9cution.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Ajout du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 01 dans le test d'assertion\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/12-jmeter-assert2.png\" border=\"1\" alt=\"Ajout du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 01 dans le test d'assertion\" width=\"590\" height=\"469\" \/><br \/>\n<\/span><\/p>\n<p>On refait la m\u00eame op\u00e9ration pour le test 02<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Selection du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 02\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/12-jmeter-assert3.png\" border=\"1\" alt=\"Selection du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 02\" width=\"571\" height=\"356\" \/><br \/>\n<\/span><\/p>\n<p>On modifie le test d&rsquo;assertion pour le test 02.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Ajout du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 02 dans le test d'assertion\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/13-jmeter-assert4.png\" border=\"1\" alt=\"Ajout du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 02 dans le test d'assertion\" width=\"585\" height=\"444\" \/><br \/>\n<\/span><\/p>\n<p style=\"text-align: left;\">On continu avec le test 03 et le test 04.<span style=\"color: #000000;\"><br \/>\n<\/span><\/p>\n<p>On finit pas le test 05. La particularit\u00e9 de ce test est qu&rsquo;il s&rsquo;agit d&rsquo;un test de r\u00e9sultat de l&rsquo;ex\u00e9cution d&rsquo;un formulaire dynamique. Il faut donc choisi un texte repr\u00e9sentatif en relation avec le r\u00e9sultat attendu.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Selection du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 05\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/16-jmeter-assert7.png\" border=\"1\" alt=\"Selection du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 05\" width=\"563\" height=\"444\" \/><br \/>\n<\/span><\/p>\n<p>On modifie le test d&rsquo;assertion pour le test 05.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Ajout du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 05 dans le test d'assertion\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/17-jmeter-assert8.png\" border=\"1\" alt=\"Ajout du texte repr\u00e9sentatif d'une bonne ex\u00e9cution du Test 05 dans le test d'assertion\" width=\"606\" height=\"456\" \/><br \/>\n<\/span><\/p>\n<p>Il nous reste donc \u00e0 tester si tout se passe bien au niveau des tests d&rsquo;assertion lors d&rsquo;un nouveau tir de charge de v\u00e9rification. On fait donc un <strong>Ctrl + E<\/strong>, suivi d&rsquo;un <strong>Ctrl + R<\/strong>.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Resultats JMeter\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page3\/20-jmeter-final.png\" border=\"1\" alt=\"Resultats JMeter\" width=\"820\" height=\"258\" \/><br \/>\n<\/span><\/p>\n<p>Et voil\u00e0 le test du test de charge est concluant.<\/p>\n<p>Passons \u00e0 l&rsquo;\u00e9tape suivante : <a href=\"http:\/\/blog.milamberspace.net\/index.php\/jmeter-test-de-charges-dun-site-web-mode-demploi\/executer-son-scenario-de-tir-de-charges\">le test de charge<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Affinage du sc\u00e9nario de tests JMeter avec sa fonction de proxy nous a permis de faire automatiquement un gros travail d&rsquo;\u00e9criture du sc\u00e9nario de tir. Cependant il reste un travail de v\u00e9rification et d&rsquo;affinage \u00e0 faire. Ajout des identifiants des Requ\u00eates HTTP Afin de mieux retrouver les diff\u00e9rents \u00e9l\u00e9ments test\u00e9s dans les r\u00e9cepteurs de r\u00e9sultats, &hellip; <a href=\"https:\/\/blog.milamberspace.net\/index.php\/jmeter-pages\/jmeter-test-de-charges-dun-site-web-mode-demploi\/affinage-du-scenario-de-tests\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Affinage du sc\u00e9nario de tests<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":34,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-35","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/35","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=35"}],"version-history":[{"count":7,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/35\/revisions"}],"predecessor-version":[{"id":1220,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/35\/revisions\/1220"}],"up":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/34"}],"wp:attachment":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/media?parent=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}