{"id":311,"date":"2009-06-12T22:44:11","date_gmt":"2009-06-12T22:44:11","guid":{"rendered":"http:\/\/blog.milamberspace.net\/?p=311"},"modified":"2010-09-10T15:59:02","modified_gmt":"2010-09-10T15:59:02","slug":"jmeter-utilisation-de-lelement-jdbc-comme-source-de-donnees-pour-un-test-de-charge-partie-1","status":"publish","type":"post","link":"https:\/\/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","title":{"rendered":"JMeter : utilisation de l&rsquo;\u00e9l\u00e9ment JDBC comme source de donn\u00e9es pour un test de charge (partie 1)"},"content":{"rendered":"<p>Avec la version 2.3.3, JMeter nous propose une am\u00e9lioration de l&rsquo;\u00e9chantillon JDBC, qui permet de r\u00e9cup\u00e9rer les valeurs de champs d&rsquo;une requ\u00eate SQL de type SELECT et de les placer dans des variables JMeter.<\/p>\n<p><em>D&rsquo;o\u00f9 l&rsquo;id\u00e9e suivante :<\/em> Pourquoi ne pas utiliser une base de donn\u00e9es comme source de donn\u00e9es pour un test de charge ?<\/p>\n<p>Tout d&rsquo;abord les pr\u00e9-requis :<\/p>\n<ul>\n<li> Une base de donn\u00e9es bien entendu, avec le pilote JDBC appropri\u00e9, \u00e0 placer dans Jmeter_Home\/lib<\/li>\n<li>Dans la base de donn\u00e9es, une table avec une liste d&rsquo;\u00e9l\u00e9ments (ici j&rsquo;ai repris <a href=\"http:\/\/blog.milamberspace.net\/index.php\/jmeter-variabilisation-de-donnees\">mon fichier BOXERS<\/a> que j&rsquo;ai ins\u00e9r\u00e9 en base)<\/li>\n<\/ul>\n<p>Bon voyons un peu comment faire. Ci-dessous le plan de test \u00e0 mettre en \u0153uvre :<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Plan de test Jmeter\" src=\"\/wp-content\/images\/jmeter19-img\/part1\/01-jmeter-jdbc.png\" alt=\"\" width=\"291\" height=\"273\" \/><\/p>\n<p>Il y a deux parties :<\/p>\n<ul>\n<li>Partie 1 : qui est charg\u00e9e de r\u00e9cup\u00e9rer les donn\u00e9es de la base de donn\u00e9es (objet de ce billet)<\/li>\n<li>Partie 2 : qui est le test de charge \u00e0 proprement parl\u00e9, et qui est donc charg\u00e9 de consommer les donn\u00e9es (objet du billet suivant)<!--more--><\/li>\n<\/ul>\n<p>Dans la partie 1, tout d&rsquo;abord, on place un <strong>Contr\u00f4leur Ex\u00e9cution unique<\/strong>, il va permettre d&rsquo;ex\u00e9cuter une unique fois la requ\u00eate SQL de s\u00e9lection de la liste de donn\u00e9es qui va servir au test. Les it\u00e9rations suivantes ne r\u00e9-ex\u00e9cuteront pas la requ\u00eate.<\/p>\n<p>Juste dessous, en tant que fils, on trouve l&rsquo;\u00e9l\u00e9ment<strong> Configuration de connexion JDBC<\/strong>, c&rsquo;est avec lui que nous allons pouvoir d\u00e9finir le pool de connexions vers la base de donn\u00e9es.<\/p>\n<p>Ci-dessous, sa configuration :<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Configuration JDBC JMeter\" src=\"\/wp-content\/images\/jmeter19-img\/part1\/02-jmeter-jdbc.png\" alt=\"\" width=\"558\" height=\"428\" \/><\/p>\n<p>Ici, on d\u00e9finit un pool avec un nom de liaison <strong>jdbc\/pool<\/strong> qui sera utilis\u00e9 plus tard. C&rsquo;est une base de donn\u00e9es MySQL, comme vous le constatez dans la partie configuration de connexion \u00e0 la base de donn\u00e9es.<\/p>\n<p><em>Je ne d\u00e9taille pas, je suppose que vous avez d\u00e9j\u00e0 configur\u00e9 un pool sur un serveur de type Tomcat ou autre (voir google sinon)<\/em><\/p>\n<p>On notera que la requ\u00eate de validation permet de v\u00e9rifier la connexion avant que le pool ne donne la connexion \u00e0 la requ\u00eate (<strong>\u00e9chantillon JDBC<\/strong>). Ici dans ma base \u00ab milambertestdb \u00bb il y a une table vide \u00ab POOL_HEARTBEAT \u00bb.<\/p>\n<p>Une fois que le pool est d\u00e9fini, on peut passer \u00e0 la <strong>requ\u00eate JDBC<\/strong>. Ci-dessous sa configuration :<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Requ\u00eate JDBC JMeter\" src=\"\/wp-content\/images\/jmeter19-img\/part1\/03-jmeter-jdbc.png\" alt=\"\" width=\"531\" height=\"314\" \/><\/p>\n<ul>\n<li><span style=\"text-decoration: underline;\">Le nom de liaison :<\/span> jdbc\/pool en r\u00e9f\u00e9rence bien sur \u00e0 l&rsquo;\u00e9l\u00e9ment de configuration JDBC<\/li>\n<li><span style=\"text-decoration: underline;\">Le type de requ\u00eate <\/span>est plac\u00e9 \u00e0 \u00ab Select Statement \u00bb afin de permettre d&rsquo;effectuer une requ\u00eate SQL de type SELECT<\/li>\n<li><span style=\"text-decoration: underline;\">La requ\u00eate (SQL)<\/span> suivante est indiqu\u00e9e :\n<ul>\n<li>select ID, NOM, PRENOM from BOXERS where UTILISABLE = 1 AND PRENOM LIKE &lsquo;Ar%&rsquo;<\/li>\n<li>On s\u00e9lectionne dans la table BOXERS, trois champs (ID, NOM, PRENOM) \u00e0 condition que le champ UTILISABLE soit \u00e9gale \u00e0 1 et que le pr\u00e9nom commence par \u00ab Ar \u00bb.<\/li>\n<\/ul>\n<\/li>\n<li>Les champs <span style=\"text-decoration: underline;\">Valeurs des param\u00e8tres<\/span> et <span style=\"text-decoration: underline;\">Types des param\u00e8tres <\/span>ne sont pas utilis\u00e9s car nous n&rsquo;avons pas d&rsquo;\u00e9l\u00e9ments variables \u00e0 ins\u00e9rer dans la requ\u00eate SQL pour son ex\u00e9cution.<\/li>\n<li>Le dernier <span style=\"text-decoration: underline;\">champ Noms des variables<\/span> est, par contre, utilis\u00e9 pour d\u00e9finir les pr\u00e9fixes de variables JMeter qui seront utilis\u00e9es pour stocker les valeurs r\u00e9sultants de la requ\u00eate SQL.<\/li>\n<\/ul>\n<p>Ensuite, juste apr\u00e8s la requ\u00eate JDBC, on place un <strong>\u00e9chantillon D\u00e9bogage<\/strong> \u00e0 des fins de&#8230; d\u00e9bogage ;-), ainsi on pourra voir si tout se passe bien du cot\u00e9 des Variables JMeter durant le tir.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Echantillon D\u00e9bogage JMeter\" src=\"\/wp-content\/images\/jmeter19-img\/part1\/04-jmeter-jdbc.png\" alt=\"\" width=\"387\" height=\"156\" \/><\/p>\n<p>Ensuite on place en fils du contr\u00f4leur <strong>Ex\u00e9cution unique<\/strong>, un r\u00e9cepteur <strong>Arbre de r\u00e9sultats,<\/strong> et on lance un it\u00e9ration de test (le <strong>Groupe d&rsquo;unit\u00e9s<\/strong> est configur\u00e9 \u00e0 1-1-10).<\/p>\n<p>Voici le r\u00e9sultat d&rsquo;ex\u00e9cution :<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"R\u00e9sultat dex\u00e9cution avec R\u00e9sultat dAssertion JMeter\" src=\"\/wp-content\/images\/jmeter19-img\/part1\/05-jmeter-jdbc.png\" alt=\"\" width=\"572\" height=\"268\" \/><\/p>\n<p>Dans la requ\u00eate SQL, au niveau de l&rsquo;onglet Donn\u00e9es de r\u00e9ponse, on trouve un tableau contenant la liste (ici de six \u00e9l\u00e9ments) de r\u00e9ponse.<\/p>\n<p>Au niveau de<strong> l&rsquo;\u00e9chantillon D\u00e9bogag<\/strong>e, on trouve trois ensemble de variables correspondant aux donn\u00e9es de la liste.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"R\u00e9sultat Echantillon D\u00e9bogage JMeter\" src=\"\/wp-content\/images\/jmeter19-img\/part1\/06-jmeter-jdbc.png\" alt=\"\" width=\"585\" height=\"434\" \/><\/p>\n<p>Chaque ensemble est d\u00e9finit par :<\/p>\n<ul>\n<li>une variable \u00ab <strong>Nom_De_Champ + _#<\/strong> \u00bb pour donner le nombre d&rsquo;\u00e9l\u00e9ments retourn\u00e9s<\/li>\n<li>N variables \u00ab <strong>Nom_De_Champ + N<\/strong> \u00bb pour chaque valeur retourn\u00e9e<\/li>\n<\/ul>\n<p>Dans <a href=\"http:\/\/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\">la partie suivante<\/a>, nous allons voir comment utiliser ces donn\u00e9es pour faire son test.<\/p>\n<p><em>Mine de rien, vous venez de faire un script qui attaque une base de donn\u00e9es, et cela peut vous servir dans d&rsquo;autres cas, notamment tester les performances d&rsquo;une base de donn\u00e9es.<\/em><\/p>\n<p>.\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Avec la version 2.3.3, JMeter nous propose une am\u00e9lioration de l&rsquo;\u00e9chantillon JDBC, qui permet de r\u00e9cup\u00e9rer les valeurs de champs d&rsquo;une requ\u00eate SQL de type SELECT et de les placer dans des variables JMeter. D&rsquo;o\u00f9 l&rsquo;id\u00e9e suivante : Pourquoi ne pas utiliser une base de donn\u00e9es comme source de donn\u00e9es pour un test de charge &hellip; <a href=\"https:\/\/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\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">JMeter : utilisation de l&rsquo;\u00e9l\u00e9ment JDBC comme source de donn\u00e9es pour un test de charge (partie 1)<\/span><\/a><\/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,179,94],"class_list":["post-311","post","type-post","status-publish","format-standard","hentry","category-apache","category-jmeter","category-tests-de-charges","tag-jdbc","tag-jmeter","tag-mysql","tag-tests"],"_links":{"self":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/311","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=311"}],"version-history":[{"count":7,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/311\/revisions"}],"predecessor-version":[{"id":316,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/311\/revisions\/316"}],"wp:attachment":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/media?parent=311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/categories?post=311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/tags?post=311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}