2012-07-03 7 views
24

Sto utilizzando jMeter per testare un'applicazione Tomcat. Devo analizzare la risposta di jMeter e fare una seconda richiesta. La prima risposta è simile al seguente:Come analizzare la risposta di Jmeter ed effettuare una nuova richiesta

<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> 

ho bisogno di estrarre il "FILELIST" e variabili "URL" e li iniettare in un nuovo URL:

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

So che c'è un po 'di post-processor per farlo, ma nessun indizio su come farlo. A proposito, la seconda richiesta scaricherà alcuni file dal servlet Tomcat, c'è un modo per consentire a jMeter di scaricare il flusso ma senza scrivere in un file fisico? In modo che potessi fare un test delle prestazioni di carico contro il mio servlet.

risposta

20

Ok, quindi già sapete come estrarre URL del vostro risposta, ho descritto come nella mia risposta precedente:

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

Ma qui mi limiterò a espandere su questo. Quindi hai il tuo campionatore e hai già $ {url}. Ora hai bisogno di FILELIST e assemblare il nuovo URL.

Supponendo che sia già presente un estrattore di richieste e url. Aggiungi un nuovo 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 

Così ora avete 1 richiesta campionatore e 2 estrattori espressioni regolari. È necessario aggiungere un post processore aggiuntivo per poter assemblare il nuovo URL.

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

Scegliere il beanshell dal droplist lingua sotto il Script language e nel grande campo Script: incollare questo:

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

e ora avete ${NEW_URL} utilizzare ulteriormente i test.

C'è sempre più di un modo per risolvere i problemi, questo rivestimento sembra davvero brutto ma serve allo scopo.

Nella mia prova il risultato è come da voi richiesto (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; 

EDIT:

penso che non capisco come è il nome le variabili. Ma il risultato finale è quello che hai descritto nella tua domanda. Si prega di consultare il.Test JMX attaccato con esempio funzionante:

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

E 'una jmeter .jmx file di lavoro con 2.6+ versione di jmeter

+0

@ formica, secondo il vostro aiuto, Attualmente ho Sample1 (che ha 3 post processore : url/token extrator/bsf post-processor) e sample2 per inviare una nuova richiesta. Ma ancora qualche errore che sample2 non ottiene l'URL corretto, per favore aiutatemi a trovare il mio debug Sampler: [link] http://pastebin.com/rXB00uTL –

+0

@Grace date un'occhiata alla risposta aggiornata – ant

+0

@ ant, i Mi dispiace di aver fatto un terribile errore. Ha funzionato al mio fianco ora, non posso apprezzare di più per il tuo grande aiuto. –

7

A capture parte della risposta utilizzare Regular Expression Extractor.

È possibile testare l'espressione regolare sui dati di risposta utilizzando il listener ViewResultsTree. Basta selezionare il tester Regexp nella casella a discesa nella parte inferiore del pannello a sinistra nel listener ViewResultsTree.

Problemi correlati