Как разобрать ответ sample1 для создания нового образца в JMeter

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

step1: send file update request to server.
step2: server will return some files URL as html response
step3: client need to create new request with the URL returned in step2,thus need to parse 
the response of step2.

Я новичок в JMeter, и не знаю, как это реализовать. Я в основном узнал JMeter о препроцессоре и постпроцессоре, но все еще не знал, как это сделать.

2 ответа

Решение

Хорошо, давайте начнем до первого шага:

Right click -> Add -> Threads (Users) -> Thread Group

  • Теперь актуальный первый шаг (если вы используете REST):

Add -> Sampler -> Http Request

У вас есть в нижней части Send Files With the Request, Вы можете добавить вложение, если это то, что вы просили.

  • Извлечение ответа с сервера:

Давайте предположим, что ваш ответ таков:

<Response>
  <name>Stackru.com</name>
  <url>http://stackru.com/questions/11186423/how-to-parse-response-of-sample1-to-create-new-sample-in-jmeter</url>
</Response>

Вот что ты делаешь:

Right click on The http request you previously added (in step 1) -> Post Processors -> Xpath Extractor

Reference Name Имя переменной, в которой вы хотите сохранить значение. Давайте назовем это url, А также Xpath query является Response/url или же //Response/url если вы получите больше тегов ответа. Если вы хотите первый //Response[1]/url и так далее..

  • Повторите шаг 1 (скопируйте / вставьте пробоотборник и удалите Xpath Extractor вам это больше не нужно), и измените Server Name or IP в ${url} который является значением, ранее возвращенным.

И вот, вуаля. Дайте мне знать, если у вас есть более конкретные вопросы. Jmeter это весело.

Комментарий Грейс:

Хочет извлечь https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;

Вне данных ответа:

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

Это должно быть довольно просто. Add a post processor -> Regular Expression Extractor и поставить следующее:

Reference Name : url 
Regular Expression : (http[\S]+)
Template : $1$
Match No. (0 for Random): 1

Итак, теперь у вас есть url переменная, которую вы можете использовать в дальнейшем в качестве теста ${url}, Дайте мне знать, если это работает для вас. Я тестировал с фиктивным пробоотборником, и он работает для меня.

Вот как я извлекаю некоторое значение из URL и передаю его далее как переменную, чтобы следующие запросы содержали его.

Вот несколько хороших скриншотов и более подробное описание создания теста в JMeter http://jmeter.apache.org/usermanual/build-web-test-plan.html

Добавить Thread Group а также HTTP Requests

Когда это HTTP Requests ответ с некоторыми данными (в этом примере в URL) вы хотите извлечь его и использовать его после

Итак, начнем:

  1. Перейдите к вашему первому HTTP-запросу, после которого вы получите ответ с переменной:

    Добавить -> Постпроцессор -> Экстрактор регулярных выражений

    В этом окне установлено:

    Поле ответа для проверки: URL

    Имя ссылки: MY-CUSTOM-VARIABLE-NAME

    определите имя переменной как хотите

    Регулярное выражение: constant.part.of.url.com/([a-zA-Z0-9]*)

    поэтому выражение ([a-zA-Z0-9] *) отвечает за получение всех вхождений буквенных и цифровых символов после встречи с постоянным URL при запуске

    Шаблон: $ 1 $

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

    Матч № (0 для случайного): 1

    в этом случае есть только одно совпадение, но если произойдет больше, вы можете выбрать, какое использовать

  2. Теперь поместите извлеченное значение в следующий путь HTTP-запроса : some.other.url.com/ ${MY-CUSTOM-VARIABLE-NAME}

    помните, что вы читаете переменные JMeter с этим шаблоном ${}, поэтому используйте ${MY-CUSTOM-VARIABLE-NAME} всякий раз, когда вам нужно это значение

Запустите тест и проверьте, что вы получили в URL вашего запроса с MY-CUSTOM-VARIABLE-NAME Поэкспериментируйте с регулярным выражением, чтобы получить желаемый результат.

Вот пост блога об этом материале: http://kenning.co.nz/development/extracting-variables-using-regular-expressions-in-jmeter/

И всегда полезная документация по JMeter: http://jmeter.apache.org/usermanual/component_reference.html

Другие вопросы по тегам