2012-07-03 5 views
24

Ich verwende jMeter, um eine Tomcat-Anwendung zu testen. Ich muss die jMeter-Antwort analysieren und eine zweite Anfrage stellen. Die erste Reaktion sieht wie folgt aus:So analysieren Sie die Jmeter-Antwort und erstellen eine neue Anfrage

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

Ich brauche das „Filelist“ und „URL“ Variablen zu extrahieren und sie in eine neue URL zu injizieren:

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

ich weiß, gibt es einige Postprozessor um das zu tun, aber keine Ahnung, wie es geht. BTW, die zweite Anfrage wird eine Datei vom Tomcat-Servlet herunterladen, gibt es eine Möglichkeit, jMeter einfach den Stream herunterzuladen, aber ohne in eine physische Datei zu schreiben? Damit konnte ich einen Belastungstest gegen mein Servlet machen.

Antwort

20

Ok, so dass Sie bereits wissen, wie URL aus Ihrer Antwort zu extrahieren, die ich beschrieben, wie in meiner früheren Antwort:

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

Aber hier werde ich nur auf, dass erweitern. Sie haben also Ihren Sampler und schon haben Sie $ {url}. Jetzt brauchen Sie FILELIST und assemblieren Sie eine neue URL.

Angenommen, Sie haben bereits Anfrage und URL-Extraktor an Ort und Stelle. Fügen Sie eine neue Regular expression extractor hinzu.

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 

jetzt So haben Sie 1 Anfrage Sampler und 2 regulären Ausdruck Extraktoren. Sie müssen einen zusätzlichen Postprozessor hinzufügen, um die neue URL zusammenstellen zu können.

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

Wählen Sie die beanshell aus der Sprache Droplist unter den Script language und in dem großen Feld Script: diese Paste:

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

Und Sie haben jetzt ${NEW_URL} weitere Tests in Ihren zu verwenden.

Es gibt immer mehr als eine Möglichkeit, Probleme zu lösen, dieser eine Liner sieht wirklich hässlich aus, aber er erfüllt den Zweck.

In meinem Test ist das Ergebnis, wie Sie (Debug Sampler) angefordert:

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:

ich glaube ich nicht verstehen, wie Sie Ihre Variablen nennen. Aber das Endergebnis ist das, das Sie in Ihrer Frage beschrieben haben. Bitte sehen Sie sich ... an .JMX-Test mit Arbeitsbeispiel angebracht:

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

Es ist eine jmeter .jmx Datei mit 2.6+ Version von jmeter

+0

@ Ameise, nach Ihrer Hilfe arbeiten, zur Zeit habe ich Sample1 (die 3-Postprozessor haben : URL/Token-Extrator/BSF-Postprozessor) und sample2 zum Senden einer neuen Anfrage. Aber immer noch ein Fehler, dass die sample2 nicht die richtige URL erhalten, bitte helfen, meinen Debug Sampler zu finden: [link] http://pastebin.com/rXB00uTL –

+0

@Grace Bitte werfen Sie einen Blick auf die aktualisierte Antwort – ant

+0

@ ant, ich Es tut mir leid, dass ich einen schrecklichen Fehler gemacht habe. Es hat jetzt auf meiner Seite funktioniert, ich kann dir für deine großartige Hilfe nicht mehr danken. –

7

Um capture Teil der Antwort verwenden Regular Expression Extractor.

Sie können Ihren Regex-Ausdruck in Antwortdaten mit dem ViewResultsTree-Listener testen. Wählen Sie einfach Regexp-Tester in der Dropdown-Liste am unteren Rand des linken Bedienfelds in Ihrem ViewResultsTree-Listener aus.