Подтвердить что ты не робот

Как разобрать ответ Jmeter и сделать новый запрос

Я использую jMeter для тестирования приложения Tomcat. Мне нужно разобрать ответ jMeter и сделать второй запрос. Первый ответ выглядит следующим образом:

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

Мне нужно извлечь переменные "FILELIST" и "URL" и ввести их в новый URL-адрес:

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

Я знаю, что для этого есть постпроцессор, но не знаю, как это сделать. BTW, второй запрос загрузит некоторый файл из сервлета Tomcat, есть ли способ позволить jMeter просто загружать поток, но без записи в физический файл? Чтобы я мог выполнить тест производительности нагрузки на мой сервлет.

4b9b3361

Ответ 1

Итак, вы уже знаете, как извлечь URL из вашего ответа, я описал, как в моем предыдущем ответе:

fooobar.com/questions/216881/...

Но здесь я просто расскажу об этом. Итак, у вас есть свой сэмплер, и у вас уже есть $ {url}. Теперь вам нужно FILELIST и собрать новый url.

Предполагая, что у вас уже есть запрос и убиратель URL. Добавьте новый 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

Итак, теперь у вас есть 1 запрос сэмплера и 2 экстрактора регулярных выражений. Вам нужно добавить дополнительный почтовый процессор, чтобы иметь возможность собирать новый URL-адрес.

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

Выберите beanshell из словаря droplist под Script language и в большом поле Script: вставьте это:

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

И теперь у вас есть ${NEW_URL} для дальнейшего использования в тестах.

Существует всегда более одного способа решения проблем, этот один вкладыш выглядит действительно уродливым, но он служит цели.

В моем тесте результат по вашему запросу (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:

Думаю, я не понимаю, как вы называете переменные. Но конечный результат - тот, который вы описали в своем вопросе. См. Тест .jmx с рабочим примером:

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

Это файл jmeter.jmx, работающий с версией jmeter версии 2.6+

Ответ 2

Чтобы захватить часть ответа, используйте Регулятор регулярных выражений.

Вы можете проверить выражение регулярных выражений на данные ответа с помощью прослушивателя ViewResultsTree. Просто выберите Regexp tester в раскрывающемся списке внизу левой панели в вашем слушателе ViewResultsTree.