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

Как разобрать ответ образца1 для создания нового образца в 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 о препроцессоре и постпроцессоре, но до сих пор не знаю, как это сделать.

4b9b3361

Ответ 1

Ok пусть начнется до первого шага:

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

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

Add -> Sampler -> Http Request

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

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

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

<Response>
  <name>StackOverflow.com</name>
  <url>http://stackoverflow.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 - это весело.

Комментарий от пользователя Grace:

Хочет извлечь 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}. Дайте мне знать, если это сработает для вас. Я тестировал с помощью фиктивного сэмплера, и он работает для меня.

Ответ 2

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

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

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

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

Итак, отпустите:

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

    Добавить Post Processor Регулятор экстренного выражения

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

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

    Справочное имя: MY-CUSTOM-VARIABLE-NAME

    определить имя переменной, что угодно

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

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

    Шаблон: $1 $

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

    Номер совпадения (0 для случайного): 1

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

  • Теперь добавьте извлеченное значение в следующий 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#Regular_Expression_Extractor