<?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 - JMeter &#187; expression régulière</title>
	<atom:link href="http://blog.milamberspace.net/index.php/tag/expression-reguliere/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.milamberspace.net</link>
	<description>Apache JMeter (surtout) mais aussi GNU/Linux, OpenSource, l&#039;Informatique, etc.</description>
	<lastBuildDate>Sun, 05 Feb 2012 09:51:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Quelques cas d&#8217;utilisation de l&#8217;extracteur d&#8217;expression régulière dans JMeter</title>
		<link>http://blog.milamberspace.net/index.php/2009/12/31/quelques-cas-d-utilisation-de-l-extracteur-d-expression-reguliere-dans-jmeter-554.html</link>
		<comments>http://blog.milamberspace.net/index.php/2009/12/31/quelques-cas-d-utilisation-de-l-extracteur-d-expression-reguliere-dans-jmeter-554.html#comments</comments>
		<pubDate>Thu, 31 Dec 2009 07:48:15 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Test fonctionnel]]></category>
		<category><![CDATA[expression régulière]]></category>
		<category><![CDATA[regexp]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=554</guid>
		<description><![CDATA[Voici un billet pour parler de l&#8217;extracteur d&#8217;expressions régulières dans JMeter. Commençons par le plan de test : très simple, une requête avec en élément fils un extracteur d&#8217;expression régulière. La requête HTTP est simplement la page d&#8217;accueil de ce blog. On place un échantillon Débogage après la requête HTTP qui possède l&#8217;extracteur d&#8217;expression régulière, [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un billet pour parler de l&#8217;extracteur d&#8217;expressions régulières dans JMeter.</p>
<p>Commençons par le plan de test : très simple, une requête avec en élément fils un extracteur d&#8217;expression régulière.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Plan de test RegExp" src="/wp-content/images/jmeter26-regexp/01-jmeter-regexp.png" alt="" width="274" height="143" /></p>
<p style="text-align: left;">La requête HTTP est simplement la page d&#8217;accueil de ce blog.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="La requête HTTP modèle" src="/wp-content/images/jmeter26-regexp/02-jmeter-regexp.png" alt="" width="568" height="248" /></p>
<p>On place un échantillon Débogage après la requête HTTP qui possède l&#8217;extracteur d&#8217;expression régulière, il permet d&#8217;afficher différentes informations internes à JMeter. Ici, on s&#8217;intéresse aux valeurs des variables de JMeter.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Léchantillon Débogage" src="/wp-content/images/jmeter26-regexp/03-jmeter-regexp.png" alt="" width="236" height="151" /></p>
<p>Ensuite (enfin) vient l&#8217;extracteur d&#8217;expression régulière, on commence par un « simple ».</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Lextracteur dexpression régulière JMeter" src="/wp-content/images/jmeter26-regexp/04-jmeter-regexp.png" alt="" width="486" height="238" /></p>
<p>Quelques explications :<span id="more-554"></span></p>
<ul>
<li><strong>Champs réponse à cocher :</strong> Corps. La portée de l&#8217;extracteur regexp sera le corps de la réponse (le texte html en général)</li>
<li><strong>Nom de référence :</strong> le nom de la variable dans laquelle JMeter va déposer les données récupérée par l&#8217;expression régulière</li>
<li><strong>Expression régulière :</strong> ici « (milamber) », qui signifie : « je recherche le mot milamber, et je voudrais récupérer la valeur ». Il n&#8217;y a pas à proprement parler d&#8217;expression régulière ici, car aucun caractères de correspondance de caractères n&#8217;est utilisé (par exemple « * »).</li>
<li><strong>Canevas :</strong> $1$ correspondant au premier « couple » de parenthèses dans l&#8217;expression régulière. Donc ici « milamber »</li>
<li><strong>Correspond au num. :</strong> 0. Parmi « tous les milamber » qui vont être trouvés, JMeter en choisi un au hasard et le place dans la variable JMeter NOM_VARIABLE</li>
<li><strong>Valeur par défaut :</strong> correspond à la valeur que va prendre la variable NOM_VARIABLE si jamais l&#8217;expression régulière n&#8217;est pas trouvée (autrement si il n&#8217;y a pas de milamber dans le corps de la réponse)</li>
</ul>
<p>On exécute (on lance) le test JMeter. Avec le récepteur Arbre de résultats, on peut déjà voir les données de réponse de la page d&#8217;accueil de ce site. On voit qu&#8217;il y a plusieurs occurrences de « milamber ».</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Les données de réponses" src="/wp-content/images/jmeter26-regexp/05-jmeter-regexp.png" alt="" width="638" height="359" /></p>
<p>Dans l&#8217;échantillon Débogage, dans l&#8217;onglet Données de réponse, on retrouve la variable <em>NOM_VARIABLE</em>.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Variables JMeter" src="/wp-content/images/jmeter26-regexp/06-jmeter-regexp.png" alt="" width="627" height="206" /></p>
<p>Quelques explications sur les différents « NOM_VARIABLExxx » que l&#8217;on trouve.</p>
<ul>
<li><strong>NOM_VARIABLE=milamber</strong>, correspond bien entendu à la valeur recherchée (et donc trouvée par JMeter) à partir de l&#8217;expression régulière</li>
<li><strong>NOM_VARIABLE_g=1</strong>, c&#8217;est le nombre de variables $x$ trouvées</li>
<li><strong>NOM_VARIABLE_g0</strong>=milamber, c&#8217;est la chaine correspondant à l&#8217;expression régulière entière</li>
<li><strong>NOM_VARIABLE_g1</strong>=milamber, correspond à ce qu&#8217;a trouvée l&#8217;expression régulière dans la partie entre parenthèses</li>
</ul>
<p><em>Ici, la variable NOM_VARIABLE_g0 est la même que NOM_VARIABLE_g1 car l&#8217;expression régulière est (milamber), et est très simple. Dans le dernier exemple de ce billet, ce n&#8217;est pas le cas, voir plus bas.</em></p>
<p>Changeons l&#8217;expression régulière en mettant simplement un M majuscule à Milamber :</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Regexp" src="/wp-content/images/jmeter26-regexp/07-jmeter-regexp.png" alt="" width="456" height="106" /></p>
<p>Le résultat dans l&#8217;échantillon Débogage, c&#8217;est « Milamber » en majuscule. Donc l&#8217;extracteur d&#8217;expression régulière est sensible à la casse.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Résultat" src="/wp-content/images/jmeter26-regexp/08-jmeter-regexp.png" alt="" width="408" height="208" /></p>
<p>Changeons l&#8217;expression régulière par (Milember), donc volontairement avec une faute.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="RegExp" src="/wp-content/images/jmeter26-regexp/09-jmeter-regexp.png" alt="" width="476" height="108" /></p>
<p>Ici, comme il n&#8217;y a pas de mot <em>Milember</em> dans les données de réponse de la page HTML retournée, la valeur de NOM_VARIABLE est la valeur par défaut (ici le message d&#8217;erreur).</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Résultats" src="/wp-content/images/jmeter26-regexp/10-jmeter-regexp.png" alt="" width="410" height="156" /></p>
<p>Revenons à (milamber) comme expression régulière. Comme je sais qu&#8217;il y a plusieurs « milamber » dans la page HTML, et que j&#8217;aimerais bien <strong>tous</strong> les retrouver, on change la valeur du champ Correspond au num par « <strong>-1</strong> ». Cette valeur va indiquer à JMeter d&#8217;aller chercher toutes les occurrences de l&#8217;expression régulière.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="RegExp" src="/wp-content/images/jmeter26-regexp/11-jmeter-regexp.png" alt="" width="456" height="100" /></p>
<p>Dans la vue données de réponses de l&#8217;échantillon Débogage, on a maintenant une suite de<strong> NOM_VARIABLE_x</strong> où <strong>x</strong> correspond au numéro de « milamber » trouvé. La variable NOM_VARIABLE se retrouve avec la valeur par défaut.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Resultats" src="/wp-content/images/jmeter26-regexp/12-jmeter-regexp.png" alt="" width="646" height="478" /></p>
<p>Quand on regarde à la fin des variables affichées par l&#8217;echantillon Débogage, on trouve une variable spéciale <strong>NOM_VARIABLE_matchNr</strong> = 195. Ce dernier correspond au nombre de « milamber » trouvé.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Resultats" src="/wp-content/images/jmeter26-regexp/13-jmeter-regexp.png" alt="" width="459" height="438" /></p>
<p>On a vu que l&#8217;extracteur d&#8217;expression régulière était sensible à la casse. Pour le rendre « <em>insensible</em> », il suffit de faire précéder l&#8217;expression régulière par « (?i) ».</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="RegExp" src="/wp-content/images/jmeter26-regexp/14-jmeter-regexp.png" alt="" width="460" height="102" /></p>
<p>Dans la liste des variables trouvées, on a maintenant à la fois des « milamber » et des « Milamber ».</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Resultats" src="/wp-content/images/jmeter26-regexp/15-jmeter-regexp.png" alt="" width="397" height="430" /></p>
<p>La dernière expression régulière va indiquer que l&#8217;on recherche exclusivement les « milamber » suivi de quelque chose<strong> et </strong>suivi de « .net ». C&#8217;est à dire les milamber dans « milamberspace.net ».</p>
<p>Le « quelque chose » est symbolisé par «<strong> .+</strong> »</p>
<p>Le suivi de « .net » est symbolisé par « <strong>?\.net</strong> » où la barre oblique inversée (l&#8217;anti-slash) sert à désactiver la propriété particulière du point dans une expression régulière.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="RegExp" src="/wp-content/images/jmeter26-regexp/16-jmeter-regexp.png" alt="" width="484" height="103" /></p>
<p>Dans les résultats, on a donc que les « milamber » dans la chaîne « milamberspace.net ».</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="RegExp" src="/wp-content/images/jmeter26-regexp/17-jmeter-regexp.png" alt="" width="302" height="351" /></p>
<p>Voici pour ce billet montrant quelques cas d&#8217;utilisation de l&#8217;extracteur d&#8217;expression régulière. Bien entendu, ce dernier n&#8217;est pas limité à ces cas, il ne tient qu&#8217;à vous de faire de belles expressions régulières pour extraire des chaînes à partir des réponses à vos requêtes.</p>
<p>Bonnes regexps !</p>
<p>Deux liens :</p>
<ul>
<li><a href="http://jakarta.apache.org/jmeter/usermanual/component_reference.html#Regular_Expression_Extractor">La page du manuel JMeter sur l&#8217;extracteur d&#8217;expression régulière</a></li>
<li><a href="http://jakarta.apache.org/jmeter/usermanual/regular_expressions.html">La page du manuel JMeter sur les expressions régulières</a></li>
</ul>
<p>./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2009/12/31/quelques-cas-d-utilisation-de-l-extracteur-d-expression-reguliere-dans-jmeter-554.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

