Jmeter: Можно ли использовать дату ответа одного запроса в другом запросе?

Наше приложение (iOS) отправит сведения об изображении на сервер, сервер сгенерирует идентификатор изображения и отправит его обратно в приложение в качестве данных ответа, затем приложение загрузит миниатюру изображения и фактическое изображение на сервер, используя этот идентификатор изображения. Итак, здесь я должен использовать данные ответа (Image_ID) первого запроса на загрузку изображения. Подскажите, пожалуйста, как смоделировать этот сценарий с помощью Jmeter.

Заранее спасибо.


person Tester77    schedule 18.09.2014    source источник
comment
используйте экстрактор регулярных выражений для извлечения данных из ответа на предыдущий запрос, а затем используйте его в следующем запросе.   -  person Nachiket Kate    schedule 18.09.2014
comment
читайте о корреляции в примерах jmeter.   -  person Nachiket Kate    schedule 18.09.2014
comment
Для этого я использовал «Извлечение регулярных выражений», но у меня возникла проблема в следующем сценарии: Например: План тестирования: 1. Первый запрос (/v1/images/postimage). 2. Средство извлечения регулярных выражений (исходное имя: image_id, регулярное выражение: {image_id”:(.+?)}) 3. Запрос на загрузку эскиза (/v1/images/${image_id}/uploadthumb). 4. Запрос на загрузку изображения (/v1/images/${image_id}/uploadimage). Здесь он примет правильное значение для 3-го запроса (запрос на загрузку эскиза), но примет значение по умолчанию для 4-го запроса (запрос на загрузку изображения).   -  person Tester77    schedule 19.09.2014
comment
все запросы находятся в одном и том же контроллере треагруппы/транзакций? возможно, вы стали жертвой области видимости переменных. попробуйте поместить весь запрос в один контроллер транзакций или одну группу потоков без каких-либо транзакций. контроллер. Если вам нужны подробности, я напишу это как ответ.   -  person Nachiket Kate    schedule 19.09.2014
comment
Все запросы находятся в одной группе потоков.   -  person Tester77    schedule 19.09.2014
comment
Понял, мне пришлось поместить экстрактор регулярных выражений в первый запрос. (В противном случае я думаю, что он будет работать для всех запросов). Спасибо, Начикет.   -  person Tester77    schedule 19.09.2014


Ответы (1)


Чтобы сохранить все данные ответа в переменной JMeter:

  1. Добавьте Beanshell PostProcessor в качестве дочернего элемента запроса, который генерирует желаемые данные ответа (в идентификатор изображения вашего дела)
  2. Добавьте следующий код в область сценариев Beanshell PostProcessor:

    vars.put("imageID", new String(data));
    

    где imageID может быть любым осмысленным именем переменной по вашему выбору, а data является сокращением для данных ответа родительского сэмплера, представленных в виде массива двоичных байтов.

  3. Укажите значение переменной как ${imageID} или ${__V(imageID)}, где это необходимо в текущей группе потоков.

Если вам нужны не все данные ответа, а меньшая часть, вы можете получить требуемое значение с помощью Regular Экстрактор выражений Постпроцессор.

Рекомендации:

person Dmitri T    schedule 18.09.2014
comment
Для этого я использовал «Извлечение регулярных выражений», но у меня возникла проблема в следующем сценарии: Например: План тестирования: 1. Первый запрос (/v1/images/postimage). 2. Средство извлечения регулярных выражений (исходное имя: image_id, регулярное выражение: {image_id”:(.+?)}) 3. Запрос на загрузку эскиза (/v1/images/${image_id}/uploadthumb). 4. Запрос на загрузку изображения (/v1/images/${image_id}/uploadimage). Здесь он примет правильное значение для 3-го запроса (запрос на загрузку эскиза), но примет значение по умолчанию для 4-го запроса (запрос на загрузку изображения). - person Tester77; 19.09.2014
comment
Понял, мне пришлось поместить экстрактор регулярных выражений в первый запрос. (В противном случае я думаю, что он будет работать для всех запросов). Спасибо Дмитрий Т. - person Tester77; 19.09.2014