Как разобрать ответ 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&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}
, Дайте мне знать, если это работает для вас. Я тестировал с фиктивным пробоотборником, и он работает для меня.
Вот как я извлекаю некоторое значение из URL и передаю его далее как переменную, чтобы следующие запросы содержали его.
Вот несколько хороших скриншотов и более подробное описание создания теста в JMeter http://jmeter.apache.org/usermanual/build-web-test-plan.html
Добавить Thread Group
а также HTTP Requests
Когда это HTTP Requests
ответ с некоторыми данными (в этом примере в URL) вы хотите извлечь его и использовать его после
Итак, начнем:
Перейдите к вашему первому HTTP-запросу, после которого вы получите ответ с переменной:
Добавить -> Постпроцессор -> Экстрактор регулярных выражений
В этом окне установлено:
Поле ответа для проверки: URL
Имя ссылки:
MY-CUSTOM-VARIABLE-NAME
определите имя переменной как хотите
Регулярное выражение: constant.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