Корреляция тела ответа JSON в JMeter

avatar
emeraldgold07
9 августа 2021 в 04:06
222
3
0

Я попытался разработать тестовый сценарий нагрузочного тестирования API в JMeter 5.0. Вот информация о моей группе тем:

enter image description here

Ниже приведены данные тела, я уже добавил к ним некоторые переменные и функции. Вы также можете просмотреть образец данных JSON Body по адресу здесь:

.
    {
    "app_name": "Telekom",
    "source": "MOENGAGE",
    "moe_request_id": "req_${__threadNum}",
    "events": [
        {
            "event_name": "Email Opened",
            "event_code": "MOE_EMAIL_OPEN",
            "event_uuid": "${__UUID}",
            "event_time": ${__jexl3(${__time(,)}/1000,)},
            "event_type": "CAMPAIGN_EVENT",
            "event_source": "MOENGAGE",
            "uid": "${__counter(,)}-${__RandomString(7,ABCDEFG123456)}${uid}",
            "email_id": "${email}",
            "event_attributes": {
                "campaign_id": "${__RandomString(24,abcdefghijklmn123456789)}",
                "campaign_name": "July2021_16072021_LigaSuper_English",
                "campaign_type": "GENERAL",
                "campaign_channel": "EMAIL",
                "moe_delivery_type": "One Time",
                "moe_campaign_tags": [
                    "engagement"
                ],
                "moe_campaign_channel": "Email",
                "u_em": "${email}"
            },
            "user_attributes": {
                "PRODUCT_TYPE": "Unifi",
                "moengage_user_id": "60dc48d4d722040a2e78b788",
                "SERVICE_NO": "${uid}",
                "id": "${email}"
            },
            "device_attributes": {}
        }
    ]
}

Я также включаю JSON Extractor для корреляции тела ответа:

enter image description here

Вот результаты в дереве результатов просмотра. Добавлен Debug Sampler, чтобы увидеть, работают ли мои параметризация и корреляция или нет. К счастью, работает только моя параметризация, а корреляция — нет.

enter image description here

Обновлено: Это пример тела ответа:

enter image description here

Я хочу сопоставить "rqUuid": "urn:uuid:1a5d8617-258c-49f7-b1a7-5b8ee71fb9fd" в теле ответа. Вопрос в том, правильный ли это способ корреляции тела JSON? Нужно ли сопоставлять тело ответа, хотя я уже определил функцию "event_uuid": "${__UUID}" в данных тела?

Спасибо. Благодарим вас за помощь.

Источник

Ответы (3)

avatar
Dmitri T
9 августа 2021 в 06:55
0

JSON Extractor позволяет выполнять запросы JsonPath и похоже, что вы пытаетесь использовать регулярное выражение, это приведет к синтаксической ошибке, вы можете видеть <837585968899 >файл jmeter.log для получения подробной информации:

enter image description here

Вы показываете нам данные запроса и спрашиваете об извлечении значений из ответа, чтобы иметь возможность помочь, нам нужно видеть хотя бы частичные (а лучше полные) данные ответа и какая их часть вам нужна.

Пока могу дать только один совет: переключитесь на Regular Expression Extractor и есть шанс, что он заработает без каких-либо изменений

emeraldgold07
9 августа 2021 в 07:14
0

Я уже отредактировал свой вопрос, пожалуйста, просмотрите его еще раз. Я включаю полные данные ответа, и здесь я хочу сопоставить "rqUuid": "urn:uuid:fbdfb47a-9e5d-4f87-8ccd-9875f10b84ea",

emeraldgold07
9 августа 2021 в 07:14
0

Пожалуйста, сообщите, как я могу применить экстрактор JSON здесь. Спасибо, сэр

Dmitri T
9 августа 2021 в 07:16
0

Вы не можете, если вам нужна только часть fbdfb47a-9e5d-4f87-8ccd-9875f10b84ea - используйте либо Regular Expression Extractor, либо Boundary Extractor, последний проще в использовании, он работает быстрее и потребляет меньше Ресурсы

emeraldgold07
9 августа 2021 в 07:20
0

Если нужно использовать экстрактор регулярных выражений, мне все равно нужно использовать функцию в этой строке "event_uuid": "${__UUID}", верно? Или мне нужно ввести UUID по умолчанию, как в образце, показанном в ссылке?

Dmitri T
9 августа 2021 в 07:37
0

Я не знаю, если вам нужно отправить случайную GUID-подобную структуру - используйте функцию __UUID, если вам нужно использовать значение из предыдущего ответа - извлеките его с помощью экстрактора регулярных выражений.

emeraldgold07
9 августа 2021 в 07:41
0

Если я хочу отправить случайный UUID, то нет необходимости использовать средство извлечения регулярных выражений? Извините, все еще не ясно об этом

Dmitri T
9 августа 2021 в 08:21
0

Если вы хотите отправить случайный UUID - ничего извлекать не нужно, просто используйте функцию __UUID() прямо там, где вы хотите это сделать - он будет оценен во время выполнения. Если вам нужно сохранить сгенерированное значение в переменной для последующего повторного использования, вы можете использовать функцию [__groovy()](${__groovy(vars.put('uuid'\, UUID.randomUUID() as String); return vars.get('uuid'),)}) ${__groovy(vars.put('uuid'\, UUID.randomUUID() as String); return vars.get('uuid'),)}. После этого вы сможете ссылаться на него как ${uuid}, где это необходимо.

avatar
Masud Jahan
9 августа 2021 в 05:44
0

Вы используете регулярное выражение для получения данных из ответа JSON с помощью экстрактора JSON. Вам нужно использовать выражения пути JSON вместо использования регулярных выражений.

Если вы хотите извлечь event_uuid из ответа, ваши выражения пути json будут events[*].event_uuid

Чтобы получить первый event_uuid ​​из объектов массива events, вы можете использовать events[0].event_uuid

emeraldgold07
9 августа 2021 в 07:28
0

Пожалуйста, обратитесь к обновленному вопросу, я также включаю скриншот тела ответа. Я просто хочу извлечь "rqUuid" в массив "responseHeader" (тело ответа). Пожалуйста, порекомендуйте. Все еще нужно использовать экстрактор JSON?

Masud Jahan
9 августа 2021 в 07:44
0

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

emeraldgold07
9 августа 2021 в 08:31
0

я пробовал это, но не работает. UUID не найден

Masud Jahan
9 августа 2021 в 12:18
0

используйте responseHeader.rqUuid

avatar
Janesh Kodikara
9 августа 2021 в 05:28
0

Вы можете использовать JSON Extractor или JSON JMESPath Extractor для извлечения значений из ответов JSON.

Ваше выражение пути JSON должно быть responseHeader.rqUuid

enter image description here

Вы можете оценить выражения пути JSON или выражение JMESPath через дерево результатов просмотра или с помощью онлайн-инструментов.

  1. Просмотр дерева результатов enter image description here

  2. Вы можете создавать выражения онлайн с помощью http://jsonselector.com/

  3. Оценщик путей JMSE https://jmespath.org

Образец JMX загружен на GitHub для ознакомления

>
emeraldgold07
9 августа 2021 в 07:27
0

Пожалуйста, обратитесь к обновленному вопросу, я также включаю скриншот тела ответа. Я просто хочу извлечь "rqUuid" в массив "responseHeader" (тело ответа). пожалуйста, порекомендуйте

Janesh Kodikara
9 августа 2021 в 10:12
0

Обновил ответ и загрузил образец JMX [ссылка] (github.com/pragmatictesters/Pragmatic-Learning-JMeter-Examples/…)