web-dev-qa-db-fra.com

Comment analyser la réponse Jmeter et faire une nouvelle demande

J'utilise jMeter pour tester une application Tomcat. J'ai besoin d'analyser la réponse jMeter et de faire une deuxième demande. La première réponse ressemble à ceci:

<responseData class="Java.lang.String">&lt;html&gt;&#xd;
&lt;body&gt;&#xd;
ERROR=0&#xd;
MSG=N/A&#xd;
FILELIST=1555;1340778737370;1526545487;&#xd;
VERSION=1.002&#xd;
URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;
INTERVAL=0&#xd;
&lt;/body&gt;&#xd;
&lt;/html&gt;&#xd;
</responseData>

J'ai besoin d'extraire les variables "FILELIST" et "URL" et de les injecter dans une nouvelle URL:

https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd;

Je sais qu'il y a un post-processeur pour le faire, mais je ne sais pas comment le faire. BTW, la deuxième requête va télécharger un fichier à partir du servlet Tomcat, est-il possible de laisser jMeter simplement télécharger le flux mais sans écrire dans un fichier physique? Pour que je puisse faire un test de performance de charge contre ma servlet.

25
Simon Wang

Ok donc vous savez déjà comment extraire l'url de votre réponse, j'ai décrit comment dans ma réponse précédente:

https://stackoverflow.com/a/11188349/169277

Mais ici, je vais juste développer cela. Vous avez donc votre échantillonneur et vous avez déjà reçu $ {url}. Vous avez maintenant besoin de FILELIST et assemblez une nouvelle URL.

En supposant que vous avez déjà un extracteur de requêtes et d'url en place. Ajoutez un nouveau Regular expression extractor.

Right click on request sampler -> Post Processors -> Regular Expression Extractor

Reference Name : FILELIST
Regular Expression : FILELIST=(\S+)
Template : $1$
Match No. (0 for Random): 1

Vous avez donc maintenant 1 échantillonneur de requêtes et 2 extracteurs d'expressions régulières. Vous devez ajouter un post-processeur supplémentaire pour pouvoir assembler la nouvelle URL.

Right click on request sampler -> Post Processors -> BSF PostProcessor

Choisissez le beanshell dans la liste déroulante des langues sous le Script language et dans le grand domaine Script: collez ceci:

vars.put("NEW_URL", "${__javaScript('${url}'.replace('&#xd;'\,'${FILELIST}'))}");

Et maintenant, vous avez ${NEW_URL} à utiliser plus avant dans vos tests.

Il y a toujours plus d'une façon de résoudre les problèmes, cette doublure a l'air vraiment moche mais elle sert le but.

Dans mon test, le résultat est celui que vous avez demandé (Debug Sampler):

url=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;
FILELIST=1555;1340778737370;1526545487;&#xd;
NEW_URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd;

MODIFIER:

Je pense que je ne comprends pas comment vous nommez vos variables. Mais le résultat final est celui que vous avez décrit dans votre question. Veuillez consulter le test .jmx joint à l'exemple de travail:

http://www.filefactory.com/file/1q7nfitmh4qd/n/so_11309469_jmx

C'est un fichier jmeter .jmx fonctionnant avec la version 2.6+ de jmeter

21
ant

Pour capture une partie de la réponse, utilisez Extracteur d'expressions régulières .

Vous pouvez tester votre expression régulière sur les données de réponse à l'aide de l'écouteur ViewResultsTree. Sélectionnez simplement Regexp tester dans la liste déroulante en bas du panneau de gauche dans votre écouteur ViewResultsTree.

7
Marko Bonaci