Как разобрать ответ образца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 о препроцессоре и постпроцессоре, но до сих пор не знаю, как это сделать.
Ответы
Ответ 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&token=
Из данных ответа:
<responseData class="java.lang.String"><html>
<body>
ERROR=0
MSG=N/A
FILELIST=1555;1340778737370;1526545487;
VERSION=1.002
URL=https://192.168.100.46/updserver/download?action=signature_download&token=
INTERVAL=0
</body>
</html>
</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