<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MilamberSpace &#187; tests</title>
	<atom:link href="http://blog.milamberspace.net/index.php/tag/tests/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.milamberspace.net</link>
	<description>JMeter (surtout) mais aussi l&#039;Informatique, Internet, etc.</description>
	<lastBuildDate>Wed, 14 Jul 2010 06:34:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JMeter : utilisation de l&#8217;élément JDBC comme source de données pour un test de charge (partie 2)</title>
		<link>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</link>
		<comments>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#comments</comments>
		<pubDate>Sat, 13 Jun 2009 08:30:54 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=317</guid>
		<description><![CDATA[Nous revoilà dans la deuxième partie de ce tutoriel. Pour rappel, nous étions dans la mise en œuvre d&#8217;un test de charges, dont les données injectées proviennent directement d&#8217;une base de données et ont été récupérées par JMeter, le tout expliqué dans cette partie.
Le schéma ci-dessous montre les deux parties. Dans les lignes suivantes, on [...]]]></description>
			<content:encoded><![CDATA[<p >Nous revoilà dans la deuxième partie de ce tutoriel. Pour rappel, nous étions dans la mise en œuvre d&#8217;un test de charges, dont les données injectées proviennent directement d&#8217;une base de données et ont été récupérées par JMeter, le tout expliqué 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>.<span id="more-317"></span></p>
<p >Le schéma ci-dessous montre les deux parties. Dans les lignes suivantes, on s&#8217;occupera donc de la deuxième partie.</p>
<p style="margin-bottom: 0cm; text-align: center;"><img 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>
<p >Tout d&#8217;abord, la deuxième partie débute par un <strong>Contrôleur Simple</strong>, puis on attache directement un élément de configuration <strong>Paramètres HTTP par défaut</strong> dans lequel on configure l&#8217;adresse du serveur à tester. Pour moi, cela sera un simple serveur Tomcat avec ses applications d&#8217;exemples. <a href="http://blog.milamberspace.net/index.php/jmeter-variabilisation-de-donnees">Ce tutoriel </a>détaille le scénario fonctionnel.</p>
<p >Ensuite vient un élément de configuration <strong>Compteur</strong><span style="font-weight: normal;">, que l&#8217;on initialise (Lancer) à 1 avec un incrément de 1. Son nom de référence sera CPT.</span></p>
<p style="margin-bottom: 0cm; text-align: center;"><img class="alignnone" title="Compteur JMeter" src="/wp-content/images/jmeter19-img/part2/02-CS-jmeter-jdbc.png" alt="" width="312" height="224" /></p>
<p >La <strong>requête HTTP</strong> arrive ensuite. Il y a bien entendu l&#8217;URL à appeler, mais également les paramètres à envoyer dans ce formulaire pour avoir le Prénom et Nom en résultat.</p>
<p style="margin-bottom: 0cm; text-align: center;"><img class="alignnone" title="Requête HTTM JMeter" src="/wp-content/images/jmeter19-img/part2/03-CS-jmeter-jdbc.png" alt="" width="765" height="342" /></p>
<p >C&#8217;est ici, que nous allons utiliser les variables récupérées <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écédent</a>. Pour cela nous allons utiliser une fonction JMeter bien pratique puisqu&#8217;elle va évaluer une chaîne de caractères générée en tant que nom de variable. La fonction est <a href="http://jakarta.apache.org/jmeter/usermanual/functions.html#__V">__V()</a> (deux soulignés et V)</p>
<p >Nous avons ainsi :</p>
<p ><strong>${__V(VAR_PRENOM_${CPT})}</strong></p>
<p >qui va faire pour un CPT à 1, le nom de variable VAR_PRENOM_1 (et compris comme ${VAR_PRENOM_1})</p>
<p >Et comme le compteur va s&#8217;incrémenter de 1 à chaque itération, nous allons avoir ${VAR_PRENOM_1}, ${VAR_PRENOM_2}, ${VAR_PRENOM_3}, etc.</p>
<p style="margin-bottom: 0cm; text-align: center;"><img class="alignnone" title="Assertion Réponse JMeter" src="/wp-content/images/jmeter19-img/part2/04-CS-jmeter-jdbc.png" alt="" width="364" height="328" /></p>
<p >En élément fils que la requête HTTP, on peut placer de manière optionnelle, une <strong>Assertion Réponse</strong> qui vient vérifier que l&#8217;envoi du formulaire a bien fonctionné (car l&#8217;application affiche le nom et prénom qui ont été envoyés).</p>
<p >Il ne reste plus qu&#8217;a faire une exécution (en gardant le paramétrage en 1-1-10 du groupe d&#8217;unités)</p>
<p style="margin-bottom: 0cm; text-align: center;"><img class="alignnone" title="Groupes dunités 1-1-10" src="/wp-content/images/jmeter19-img/part2/08-CS-jmeter-jdbc.png" alt="" width="407" height="280" /></p>
<p style="margin-bottom: 0cm; text-align: left;">Voici les résultats dans l&#8217;élément <strong>Arbre de résultats</strong> :</p>
<p style="margin-bottom: 0cm; text-align: center;"><img class="alignnone" title="Execution" src="/wp-content/images/jmeter19-img/part2/06-CS-jmeter-jdbc.png" alt="" width="575" height="261" /></p>
<p >Génial, cela marche ! <em>(vous en doutiez ? <img src='http://blog.milamberspace.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )</em></p>
<p >Ah mais que ce passe-t-il à partir de la septième itération ?</p>
<p style="margin-bottom: 0cm; text-align: center;"><img class="alignnone" title="Septieme exécution" src="/wp-content/images/jmeter19-img/part2/07-CS-jmeter-jdbc.png" alt="" width="570" height="281" /></p>
<p >L&#8217;explication est simple, ma requête SQL ne renvoie que 6 éléments, donc JMeter ne trouvant plus d&#8217;éléments, envoi le nom de la variable&#8230; Allez, c&#8217;est facile à régler, 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&#8217;éléments retournés pour le champ VAR_ID. Donc ici pour nous c&#8217;est 6.</p>
<p >Ainsi lors de l&#8217;exécution, le compteur va re-boucler de 1 à 6 (min à max) indéfiniment.</p>
<p ><em>Et voilà</em>, vous avez donc maintenant un script JMeter qui attaque une table dans une base de données pour ensuite faire un test de charges avec ces données.</p>
<p ><span style="text-decoration: underline;">Une petite remarque pour la fin :</span></p>
<p >Si jamais vous voulez utiliser un plan de test similaire à celui du tutoriel pour un test de charge avec 1 million de lignes remontées par la requête SQL, il y a de forte chance pour qu&#8217;il y ait des problèmes de mémoire dans votre JMeter, car cela va faire 1 million de variables en mémoire (ouille!)</p>
<p >./</p>
<p >
]]></content:encoded>
			<wfw:commentRss>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/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JMeter : utilisation de l&#8217;élément JDBC comme source de données pour un test de charge (partie 1)</title>
		<link>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</link>
		<comments>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#comments</comments>
		<pubDate>Fri, 12 Jun 2009 22:44:11 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=311</guid>
		<description><![CDATA[Avec la version 2.3.3, JMeter nous propose une amélioration de l&#8217;échantillon JDBC, qui permet de récupérer les valeurs de champs d&#8217;une requête SQL de type SELECT et de les placer dans des variables JMeter.
D&#8217;où l&#8217;idée suivante : Pourquoi ne pas utiliser une base de données comme source de données pour un test de charge ?
Tout [...]]]></description>
			<content:encoded><![CDATA[<p >Avec la version 2.3.3, JMeter nous propose une amélioration de l&#8217;échantillon JDBC, qui permet de récupérer les valeurs de champs d&#8217;une requête SQL de type SELECT et de les placer dans des variables JMeter.</p>
<p ><em>D&#8217;où l&#8217;idée suivante :</em> Pourquoi ne pas utiliser une base de données comme source de données pour un test de charge ?</p>
<p >Tout d&#8217;abord les pré-requis :</p>
<ul>
<li> Une base de données bien entendu, avec le pilote JDBC approprié, à placer dans Jmeter_Home/lib</li>
<li>Dans la base de données, une table avec une liste d&#8217;éléments (ici j&#8217;ai repris <a href="http://blog.milamberspace.net/index.php/jmeter-variabilisation-de-donnees">mon fichier BOXERS</a> que j&#8217;ai inséré en base)</li>
</ul>
<p >Bon voyons un peu comment faire. Ci-dessous le plan de test à mettre en œuvre :</p>
<p style=" text-align: center;"><img class="alignnone" title="Plan de test Jmeter" src="/wp-content/images/jmeter19-img/part1/01-jmeter-jdbc.png" alt="" width="291" height="273" /></p>
<p >Il y a deux parties :</p>
<ul>
<li>Partie 1 : qui est chargée de récupérer les données de la base de données (objet de ce billet)</li>
<li>Partie 2 : qui est le test de charge à proprement parlé, et qui est donc chargé de consommer les données (objet du billet suivant)<span id="more-311"></span></li>
</ul>
<p >Dans la partie 1, tout d&#8217;abord, on place un <strong>Contrôleur Exécution unique</strong>, il va permettre d&#8217;exécuter une unique fois la requête SQL de sélection de la liste de données qui va servir au test. Les itérations suivantes ne ré-exécuteront pas la requête.</p>
<p >Juste dessous, en tant que fils, on trouve l&#8217;élément<strong> Configuration de connexion JDBC</strong>, c&#8217;est avec lui que nous allons pouvoir définir le pool de connexions vers la base de données.</p>
<p >Ci-dessous, sa configuration :</p>
<p style=" text-align: center;"><img class="alignnone" title="Configuration JDBC JMeter" src="/wp-content/images/jmeter19-img/part1/02-jmeter-jdbc.png" alt="" width="558" height="428" /></p>
<p >Ici, on définit un pool avec un nom de liaison <strong>jdbc/pool</strong> qui sera utilisé plus tard. C&#8217;est une base de données MySQL, comme vous le constatez dans la partie configuration de connexion à la base de données.</p>
<p ><em>Je ne détaille pas, je suppose que vous avez déjà configuré un pool sur un serveur de type Tomcat ou autre (voir google sinon)</em></p>
<p >On notera que la requête de validation permet de vérifier la connexion avant que le pool ne donne la connexion à la requête (<strong>échantillon JDBC</strong>). Ici dans ma base « milambertestdb » il y a une table vide « POOL_HEARTBEAT ».</p>
<p >Une fois que le pool est défini, on peut passer à la <strong>requête JDBC</strong>. Ci-dessous sa configuration :</p>
<p style=" text-align: center;"><img class="alignnone" title="Requête JDBC JMeter" src="/wp-content/images/jmeter19-img/part1/03-jmeter-jdbc.png" alt="" width="531" height="314" /></p>
<ul>
<li><span style="text-decoration: underline;">Le nom de liaison :</span> jdbc/pool en référence bien sur à l&#8217;élément de configuration JDBC</li>
<li><span style="text-decoration: underline;">Le type de requête </span>est placé à « Select Statement » afin de permettre d&#8217;effectuer une requête SQL de type SELECT</li>
<li><span style="text-decoration: underline;">La requête (SQL)</span> suivante est indiquée :
<ul>
<li>select ID, NOM, PRENOM from BOXERS where UTILISABLE = 1 AND PRENOM LIKE &#8216;Ar%&#8217;</li>
<li>On sélectionne dans la table BOXERS, trois champs (ID, NOM, PRENOM) à condition que le champ UTILISABLE soit égale à 1 et que le prénom commence par « Ar ».</li>
</ul>
</li>
<li>Les champs <span style="text-decoration: underline;">Valeurs des paramètres</span> et <span style="text-decoration: underline;">Types des paramètres </span>ne sont pas utilisés car nous n&#8217;avons pas d&#8217;éléments variables à insérer dans la requête SQL pour son exécution.</li>
<li>Le dernier <span style="text-decoration: underline;">champ Noms des variables</span> est, par contre, utilisé pour définir les préfixes de variables JMeter qui seront utilisées pour stocker les valeurs résultants de la requête SQL.</li>
</ul>
<p >Ensuite, juste après la requête JDBC, on place un <strong>échantillon Débogage</strong> à des fins de&#8230; débogage <img src='http://blog.milamberspace.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> , ainsi on pourra voir si tout se passe bien du coté des Variables JMeter durant le tir.</p>
<p style=" text-align: center;"><img class="alignnone" title="Echantillon Débogage JMeter" src="/wp-content/images/jmeter19-img/part1/04-jmeter-jdbc.png" alt="" width="387" height="156" /></p>
<p >Ensuite on place en fils du contrôleur <strong>Exécution unique</strong>, un récepteur <strong>Arbre de résultats,</strong> et on lance un itération de test (le <strong>Groupe d&#8217;unités</strong> est configuré à 1-1-10).</p>
<p >Voici le résultat d&#8217;exécution :</p>
<p style=" text-align: center;"><img class="alignnone" title="Résultat dexécution avec Résultat dAssertion JMeter" src="/wp-content/images/jmeter19-img/part1/05-jmeter-jdbc.png" alt="" width="572" height="268" /></p>
<p >Dans la requête SQL, au niveau de l&#8217;onglet Données de réponse, on trouve un tableau contenant la liste (ici de six éléments) de réponse.</p>
<p >Au niveau de<strong> l&#8217;échantillon Débogag</strong>e, on trouve trois ensemble de variables correspondant aux données de la liste.</p>
<p style=" text-align: center;"><img class="alignnone" title="Résultat Echantillon Débogage JMeter" src="/wp-content/images/jmeter19-img/part1/06-jmeter-jdbc.png" alt="" width="585" height="434" /></p>
<p >Chaque ensemble est définit par :</p>
<ul>
<li>une variable « <strong>Nom_De_Champ + _#</strong> » pour donner le nombre d&#8217;éléments retournés</li>
<li>N variables « <strong>Nom_De_Champ + N</strong> » pour chaque valeur retournée</li>
</ul>
<p >Dans la partie suivante, nous allons voir comment utiliser ces données pour faire son test.</p>
<p ><em>Mine de rien, vous venez de faire un script qui attaque une base de données, et cela peut vous servir dans d&#8217;autres cas, notamment tester les performances d&#8217;une base de données.</em></p>
<p >./</p>
<p >
]]></content:encoded>
			<wfw:commentRss>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/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Petit tutorial sur la jmeterisation d&#8217;une requête de tir de charges d&#8217;un WebService via SOAP avec JMeter</title>
		<link>http://blog.milamberspace.net/index.php/2008/05/18/petit-tutorial-sur-la-jmeterisation-dune-requete-de-tir-de-charges-dun-webservice-via-soap-avec-jmeter-76.html</link>
		<comments>http://blog.milamberspace.net/index.php/2008/05/18/petit-tutorial-sur-la-jmeterisation-dune-requete-de-tir-de-charges-dun-webservice-via-soap-avec-jmeter-76.html#comments</comments>
		<pubDate>Sun, 18 May 2008 17:48:37 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[webservice]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/index.php/2008/05/18/petit-tutorial-sur-la-jmeterisation-dune-requete-de-tir-de-charges-dun-webservice-via-soap-avec-jmeter-76.html</guid>
		<description><![CDATA[Tout est dans le titre !
Par curiosité j&#8217;ai testé la fonctionnalité de requêtage de JMeter sur les WebServices avec SOAP. Voici un petit tutorial du résultat.
./
]]></description>
			<content:encoded><![CDATA[<p>Tout est dans le titre !</p>
<p>Par curiosité j&#8217;ai testé la fonctionnalité de requêtage de JMeter sur les WebServices avec SOAP. Voici un<a href="http://blog.milamberspace.net/index.php/jmeter-%E2%80%93-test-de-charges-sur-un-webservice-soap"> petit tutorial du résultat</a>.</p>
<p>./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2008/05/18/petit-tutorial-sur-la-jmeterisation-dune-requete-de-tir-de-charges-dun-webservice-via-soap-avec-jmeter-76.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
