{"id":317,"date":"2009-06-13T08:30:54","date_gmt":"2009-06-13T08:30:54","guid":{"rendered":"http:\/\/blog.milamberspace.net\/?p=317"},"modified":"2009-07-11T21:50:34","modified_gmt":"2009-07-11T20:50:34","slug":"jmeter-utilisation-de-lelement-jdbc-comme-source-de-donnees-pour-un-test-de-charge-partie-2","status":"publish","type":"post","link":"https:\/\/blog.milamberspace.net\/index.php\/2009\/06\/13\/jmeter-utilisation-de-lelement-jdbc-comme-source-de-donnees-pour-un-test-de-charge-partie-2-317.html","title":{"rendered":"JMeter : utilisation de l&rsquo;\u00e9l\u00e9ment JDBC comme source de donn\u00e9es pour un test de charge (partie 2)"},"content":{"rendered":"<p >Nous revoil\u00e0 dans la deuxi\u00e8me partie de ce tutoriel. Pour rappel, nous \u00e9tions dans la mise en \u0153uvre d&rsquo;un test de charges, dont les donn\u00e9es inject\u00e9es proviennent directement d&rsquo;une base de donn\u00e9es et ont \u00e9t\u00e9 r\u00e9cup\u00e9r\u00e9es par JMeter, le tout expliqu\u00e9 dans <a href=\"http:\/\/blog.milamberspace.net\/index.php\/2009\/06\/12\/jmeter-utilisation-de-lelement-jdbc-comme-source-de-donnees-pour-un-test-de-charge-partie-1-311.html\">cette partie<\/a>.<!--more--><\/p>\n<p >Le sch\u00e9ma ci-dessous montre les deux parties. Dans les lignes suivantes, on s&rsquo;occupera donc de la deuxi\u00e8me partie.<\/p>\n<p style=\"margin-bottom: 0cm; text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Plan de test JMeter JDBC\" src=\"\/wp-content\/images\/jmeter19-img\/part1\/01-jmeter-jdbc.png\" alt=\"\" width=\"291\" height=\"273\" \/><\/p>\n<p >Tout d&rsquo;abord, la deuxi\u00e8me partie d\u00e9bute par un <strong>Contr\u00f4leur Simple<\/strong>, puis on attache directement un \u00e9l\u00e9ment de configuration <strong>Param\u00e8tres HTTP par d\u00e9faut<\/strong> dans lequel on configure l&rsquo;adresse du serveur \u00e0 tester. Pour moi, cela sera un simple serveur Tomcat avec ses applications d&rsquo;exemples. <a href=\"http:\/\/blog.milamberspace.net\/index.php\/jmeter-variabilisation-de-donnees\">Ce tutoriel <\/a>d\u00e9taille le sc\u00e9nario fonctionnel.<\/p>\n<p >Ensuite vient un \u00e9l\u00e9ment de configuration <strong>Compteur<\/strong><span style=\"font-weight: normal;\">, que l&rsquo;on initialise (Lancer) \u00e0 1 avec un incr\u00e9ment de 1. Son nom de r\u00e9f\u00e9rence sera CPT.<\/span><\/p>\n<p style=\"margin-bottom: 0cm; text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Compteur JMeter\" src=\"\/wp-content\/images\/jmeter19-img\/part2\/02-CS-jmeter-jdbc.png\" alt=\"\" width=\"312\" height=\"224\" \/><\/p>\n<p >La <strong>requ\u00eate HTTP<\/strong> arrive ensuite. Il y a bien entendu l&rsquo;URL \u00e0 appeler, mais \u00e9galement les param\u00e8tres \u00e0 envoyer dans ce formulaire pour avoir le Pr\u00e9nom et Nom en r\u00e9sultat.<\/p>\n<p style=\"margin-bottom: 0cm; text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Requ\u00eate HTTM JMeter\" src=\"\/wp-content\/images\/jmeter19-img\/part2\/03-CS-jmeter-jdbc.png\" alt=\"\" width=\"765\" height=\"342\" \/><\/p>\n<p >C&rsquo;est ici, que nous allons utiliser les variables r\u00e9cup\u00e9r\u00e9es <a href=\"http:\/\/blog.milamberspace.net\/index.php\/2009\/06\/12\/jmeter-utilisation-de-lelement-jdbc-comme-source-de-donnees-pour-un-test-de-charge-partie-1-311.html\">du billet pr\u00e9c\u00e9dent<\/a>. Pour cela nous allons utiliser une fonction JMeter bien pratique puisqu&rsquo;elle va \u00e9valuer une cha\u00eene de caract\u00e8res g\u00e9n\u00e9r\u00e9e en tant que nom de variable. La fonction est <a href=\"http:\/\/jakarta.apache.org\/jmeter\/usermanual\/functions.html#__V\">__V()<\/a> (deux soulign\u00e9s et V)<\/p>\n<p >Nous avons ainsi :<\/p>\n<p ><strong>${__V(VAR_PRENOM_${CPT})}<\/strong><\/p>\n<p >qui va faire pour un CPT \u00e0 1, le nom de variable VAR_PRENOM_1 (et compris comme ${VAR_PRENOM_1})<\/p>\n<p >Et comme le compteur va s&rsquo;incr\u00e9menter de 1 \u00e0 chaque it\u00e9ration, nous allons avoir ${VAR_PRENOM_1}, ${VAR_PRENOM_2}, ${VAR_PRENOM_3}, etc.<\/p>\n<p style=\"margin-bottom: 0cm; text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Assertion R\u00e9ponse JMeter\" src=\"\/wp-content\/images\/jmeter19-img\/part2\/04-CS-jmeter-jdbc.png\" alt=\"\" width=\"364\" height=\"328\" \/><\/p>\n<p >En \u00e9l\u00e9ment fils que la requ\u00eate HTTP, on peut placer de mani\u00e8re optionnelle, une <strong>Assertion R\u00e9ponse<\/strong> qui vient v\u00e9rifier que l&rsquo;envoi du formulaire a bien fonctionn\u00e9 (car l&rsquo;application affiche le nom et pr\u00e9nom qui ont \u00e9t\u00e9 envoy\u00e9s).<\/p>\n<p >Il ne reste plus qu&rsquo;a faire une ex\u00e9cution (en gardant le param\u00e9trage en 1-1-10 du groupe d&rsquo;unit\u00e9s)<\/p>\n<p style=\"margin-bottom: 0cm; text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Groupes dunit\u00e9s 1-1-10\" src=\"\/wp-content\/images\/jmeter19-img\/part2\/08-CS-jmeter-jdbc.png\" alt=\"\" width=\"407\" height=\"280\" \/><\/p>\n<p style=\"margin-bottom: 0cm; text-align: left;\">Voici les r\u00e9sultats dans l&rsquo;\u00e9l\u00e9ment <strong>Arbre de r\u00e9sultats<\/strong> :<\/p>\n<p style=\"margin-bottom: 0cm; text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Execution\" src=\"\/wp-content\/images\/jmeter19-img\/part2\/06-CS-jmeter-jdbc.png\" alt=\"\" width=\"575\" height=\"261\" \/><\/p>\n<p >G\u00e9nial, cela marche ! <em>(vous en doutiez ? ;-))<\/em><\/p>\n<p >Ah mais que ce passe-t-il \u00e0 partir de la septi\u00e8me it\u00e9ration ?<\/p>\n<p style=\"margin-bottom: 0cm; text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Septieme ex\u00e9cution\" src=\"\/wp-content\/images\/jmeter19-img\/part2\/07-CS-jmeter-jdbc.png\" alt=\"\" width=\"570\" height=\"281\" \/><\/p>\n<p >L&rsquo;explication est simple, ma requ\u00eate SQL ne renvoie que 6 \u00e9l\u00e9ments, donc JMeter ne trouvant plus d&rsquo;\u00e9l\u00e9ments, envoi le nom de la variable&#8230; Allez, c&rsquo;est facile \u00e0 r\u00e9gler, il suffit de mettre dans le champ Maximum du <strong>Compteur CPT<\/strong>, la variable suivante : <strong>${VAR_ID_#}<\/strong> qui, je vous le rappelle, correspond au nombre d&rsquo;\u00e9l\u00e9ments retourn\u00e9s pour le champ VAR_ID. Donc ici pour nous c&rsquo;est 6.<\/p>\n<p >Ainsi lors de l&rsquo;ex\u00e9cution, le compteur va re-boucler de 1 \u00e0 6 (min \u00e0 max) ind\u00e9finiment.<\/p>\n<p ><em>Et voil\u00e0<\/em>, vous avez donc maintenant un script JMeter qui attaque une table dans une base de donn\u00e9es pour ensuite faire un test de charges avec ces donn\u00e9es.<\/p>\n<p ><span style=\"text-decoration: underline;\">Une petite remarque pour la fin :<\/span><\/p>\n<p >Si jamais vous voulez utiliser un plan de test similaire \u00e0 celui du tutoriel pour un test de charge avec 1 million de lignes remont\u00e9es par la requ\u00eate SQL, il y a de forte chance pour qu&rsquo;il y ait des probl\u00e8mes de m\u00e9moire dans votre JMeter, car cela va faire 1 million de variables en m\u00e9moire (ouille!)<\/p>\n<p >.\/<\/p>\n<p >\n","protected":false},"excerpt":{"rendered":"<p>Nous revoil\u00e0 dans la deuxi\u00e8me partie de ce tutoriel. Pour rappel, nous \u00e9tions dans la mise en \u0153uvre d&rsquo;un test de charges, dont les donn\u00e9es inject\u00e9es proviennent directement d&rsquo;une base de donn\u00e9es et ont \u00e9t\u00e9 r\u00e9cup\u00e9r\u00e9es par JMeter, le tout expliqu\u00e9 dans cette partie.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32,33,34],"tags":[178,330,94,331],"class_list":["post-317","post","type-post","status-publish","format-standard","hentry","category-apache","category-jmeter","category-tests-de-charges","tag-jdbc","tag-jmeter","tag-tests","tag-tests-de-charges"],"_links":{"self":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"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=317"}],"version-history":[{"count":7,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/317\/revisions"}],"predecessor-version":[{"id":380,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/317\/revisions\/380"}],"wp:attachment":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/media?parent=317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/categories?post=317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/tags?post=317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}