|
|
<table>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th width="200px"><h6>[:rewind: Exo Précédent](/Exo03-JUnit-Services/1%5D-Presentation)</h6></th>
|
|
|
<th colspan="4" width="600px"><h1 align="center">04 - Tests - JMeter</h1></th>
|
|
|
<th width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-Gatling/1%5D-Presentation)</h6></th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
|
|
|
<tbody>
|
|
|
<tr>
|
|
|
<td> </td>
|
|
|
<td align="center">[:one:](/Exo04-JMeter/1%5D-Installation)<br/>Installation</td>
|
|
|
<td align="center">[:two:](/Exo04-JMeter/2%5D-Presentation)<br/>Présentation</td>
|
|
|
<td align="center">:white_check_mark:<br/>Tester les contrôleurs</td>
|
|
|
<td align="center">[:four:](/Exo04-JMeter/4%5D-Lancer-une-charge)<br/>Lancer une charge</td>
|
|
|
<td> </td>
|
|
|
</tr>
|
|
|
</tbody>
|
|
|
|
|
|
<tfoot>
|
|
|
<tr align="right">
|
|
|
<td colspan="6">
|
|
|
<h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6>
|
|
|
</td>
|
|
|
</tr>
|
|
|
</tfoot>
|
|
|
</table>
|
|
|
|
|
|
***
|
|
|
|
|
|
# Installation de JMeter
|
|
|
|
|
|
Récupérez la version de JMeter sur [Apache JMeter](http://jmeter.apache.org/download_jmeter.cgi).
|
|
|
|
|
|
Prenez la version associée à votre JDK, nous sommes en Java 8+, vous pouvez prendre la version 5+ de JMeter.
|
|
|
|
|
|
Dé zippez l'archive où vous voulez (installez et utilisez [7-Zip](https://www.7-zip.org/) si besoin).
|
|
|
|
|
|
Vérifiez que vous avez bien une variable système **JAVA_HOME** qui pointe vers votre JDK. (ex: *JAVA_HOME=C:\Program Files\Java\jdk1.8.0_202*).
|
|
|
|
|
|

|
|
|
|
|
|
Allez dans le dossier d'installation de JMeter, puis *bin* et double cliquez sur *jmeter.bat* (ou .sh sous Unix).
|
|
|
|
|
|
# Paramétrage de JMeter
|
|
|
|
|
|
JMeter va nous permettre de rejouer un scénario sur notre site web.
|
|
|
|
|
|
Par exemple :
|
|
|
* J'arrive sur la première page du site
|
|
|
* Je m'authentifie (df/df)
|
|
|
* Je regarder la liste de mes comptes
|
|
|
* Je regarde le détail des opérations du comptes n°12
|
|
|
* Je reviens sur le menu
|
|
|
* Je vais sur la page des virements
|
|
|
* Je réalise un virement
|
|
|
* Je reviens sur la page menu
|
|
|
* Je me déconnecte
|
|
|
|
|
|
JMeter sait enregistrer les requête HTTP (et UNIQUEMENT les requêtes HTTP).
|
|
|
|
|
|
Pour ce faire il devra se comporter comme un [proxy](https://fr.wikipedia.org/wiki/Proxy).
|
|
|
|
|
|
Suivez les informations de votre support pour mettre en place un proxy avec JMeter. A noter qu'il est préférable d'utiliser [Firefox](https://www.mozilla.org/fr/firefox/new/) qui a, contrairement à *Chrome*, une configuration indépendante de *Internet Explorer*.
|
|
|
|
|
|
|
|
|
# Tester les contrôleurs
|
|
|
|
|
|
Démarrez
|
|
|
* votre proxy JMeter
|
|
|
* démarrez dans votre Eclipse votre serveur JEE
|
|
|
* prenez FireFox et allez sur la page login :http://localhost:8080/en04.jmeter.banque.mysql/
|
|
|
|
|
|
Jouez votre scénario, restez simple.
|
|
|
|
|
|
A la fin de votre scénario :
|
|
|
* fermez votre navigateur
|
|
|
* arrêtez le proxy JMeter
|
|
|
* n'arrêtez PAS votre serveur JEE.
|
|
|
|
|
|
Regardez dans JMeter, vous allez retrouver toutes les requêtes HTTP.
|
|
|
|
|
|
Dans votre Plan de Test, créez un *Thread Group* (ou *Groupe d'unités*). Vous pouvez changer son nom en **scenarion01** par exemple.
|
|
|
|
|
|
Supprimez les requêtes qui ne servent pas, **déplacez** les autres dans votre *Thread Group* (faites un glisser / déposer).
|
|
|
|
|
|
On ne garde que les appels aux contrôleurs ainsi que le premier appel à la page login.
|
|
|
|
|
|
Dans le cas de doublons, vérifiez que les requête HTTP est bien la même.
|
|
|
|
|
|
## Mise en commun du paramétrage
|
|
|
Ajoutez à votre *Thread Group* un *HTTP Header Manager* (ou *Gestionnaire d'entêtes HTTP*).
|
|
|
|
|
|
Prenez un de ceux de vos requêtes HTTP.
|
|
|
|
|
|
Ajoutez à votre *Thread Group* un *HTTP Request defaults* (ou *Paramètres HTTP par défaut*) qui portera le nom du serveur (localhost), le numéro de port (8080), le protocol (http). Retirez de toutes vos requêtes HTTP ses informations.
|
|
|
|
|
|
Ajoutez à votre Groupe d'unités un *HTTP Cookie Manager* (ou *Gestionnaire de cookies HTTP*) qui portera l'HttpSession du JEE.
|
|
|
|
|
|
A ce stade vous pouvez rejouer votre scenario en cliquant sur la flèche verte. Vous pouvez en modifiant le paramétrage de votre *Thread Group* lui demander de jouer 50x (information *Number of Threads*) le scénario en même temps.
|
|
|
|
|
|
## Voir un résultat
|
|
|
|
|
|
Mais on ne voit rien dans JMeter, seul votre console Eclipse vous dira ce qui se passe, c'est pour cela qu'il ne fallait pas arrêter son serveur JEE.
|
|
|
|
|
|
Ajoutez deux *Listener* comme *View Results Tree* et *Aggregate Report* à votre *Thread Group*. Relancez votre scénario.
|
|
|
|
|
|
Regardez vos *listener*, ils sont les informations remontées par JMeter.
|
|
|
|
|
|
Vous pouvez les remettre à zéro en cliquant sur le ballai.
|
|
|
|
|
|
## Les Assert
|
|
|
|
|
|
Les *listener* vous donnent des indications, mais à ce stade on ne sait pas si : quand on demande à aller sur la page qui liste nos comptes on y arrive bien.
|
|
|
|
|
|
Pour valider que les enchaînements entre requêtes se passent correctement nous allons ajouter des *Assert* à nos requêtes HTTP.
|
|
|
|
|
|
DANS la requête HTTP (votre *pipette*) ajoutez une *Response Assertion*
|
|
|
|
|
|
Indiquez ce que vous attendez comme résultat lors de l'appel à votre requête HTTP.
|
|
|
|
|
|

|
|
|
|
|
|
Dans cet exemple : on précise que le *Text Response* aura comme *Pattern* *Substring* de
|
|
|
|
|
|
```html
|
|
|
<!-- jmeter:login -->
|
|
|
```
|
|
|
|
|
|
**Remarque** : pour que cela fonctionne il faut ajouter dans les JSPs le commentaire qui se trouve dans vos assertions. Vos JSPs devraient déjà avoir ce type de commentaire juste après le tag body.
|
|
|
|
|
|
Faites, au moins, une *Response Assertion* par requête HTTP et relancez vos tests. Cette fois vous savez que si c'est *OK* c'est que la requête a correctement fonctionné.
|
|
|
|
|
|
*Rappel* : Vous pouvez effacer le contenu des *listener* en cliquant sur les balais.
|
|
|
|
|
|
Nous pourrions ajouter d'autre assertions, par exemple sur HTTP status.
|
|
|
|
|
|
Notez que vous pouvez aussi faire usage des assertions [XPath](http://jean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/04-xpath.html), qui ressemblent beaucoup à des règles de sélecteurs HTML/CSS.
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
<table>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th width="200px"><h6>[:rewind: Exo Précédent](/Exo03-JUnit-Services/1%5D-Presentation)</h6></th>
|
|
|
<th colspan="4" width="600px"><h1 align="center">04 - Tests - JMeter</h1></th>
|
|
|
<th width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-Gatling/1%5D-Presentation)</h6></th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
|
|
|
<tbody>
|
|
|
<tr>
|
|
|
<td> </td>
|
|
|
<td align="center">[:one:](/Exo04-JMeter/1%5D-Installation)<br/>Installation</td>
|
|
|
<td align="center">[:two:](/Exo04-JMeter/2%5D-Presentation)<br/>Présentation</td>
|
|
|
<td align="center">:white_check_mark:<br/>Tester les contrôleurs</td>
|
|
|
<td align="center">[:four:](/Exo04-JMeter/4%5D-Lancer-une-charge)<br/>Lancer une charge</td>
|
|
|
<td> </td>
|
|
|
</tr>
|
|
|
</tbody>
|
|
|
|
|
|
<tfoot>
|
|
|
<tr align="right">
|
|
|
<td colspan="6">
|
|
|
<h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6>
|
|
|
</td>
|
|
|
</tr>
|
|
|
</tfoot>
|
|
|
</table> |
|
|
\ No newline at end of file |