Пераменныя JMeter Pass паміж групамі патокаў

У гэтым уроку па JMeter мы разгледзім, як мы можам дзяліцца і перадаваць зменныя паміж групамі патокаў.

Пры распрацоўцы прасунутых сцэнарыяў JMeter, хутчэй за ўсё, у вас будзе некалькі груп патокаў. Кожная група патокаў будзе выконваць розныя запыты.

Добры прыклад таму, калі нам трэба праверыць сапраўднасць карыстальнікаў з дапамогай токенаў на прад'яўніка. Адна група патокаў праводзіць праверку сапраўднасці і захоўвае маркер. Іншая група патокаў павінна атрымаць доступ да гэтага маркера і выкарыстоўваць яго ў іншым запыце.


Такім чынам, нам патрэбны механізм перадачы зменных паміж групамі патокаў.



Перадайце зменныя паміж групамі патокаў у JMeter

У гэтым прыкладзе наш план тэставання будзе мець дзве групы нітак. Першая група патокаў робіць запыт GET да вэб-службы. Затым мы выкарыстоўваем Экстрактар ​​JSON убудова для аналізу адказу JSON.


Выкарыстоўваючы JSONPath, мы здабываем значэнне для пэўнага ключа і захоўваем яго як зменную JMeter.

Вось як выглядае наш запыт JMeter:

Вынік прыведзенага запыту дае наступны адказ у фармаце JSON:


і наш JSONPath для здабывання першай url выглядае так:

Значэнне запыту JSONPath захоўваецца як first_url. Гэтая зменная даступная толькі ў той жа групе патокаў, і мы можам атрымаць яе значэнне, выкарыстоўваючы ${first_url}. Цяпер, як мы зробім гэтую зменную даступнай праз іншыя групы патокаў?


Адказ заключаецца ў выкарыстанні BeanShell Assertion каб захаваць зменную як глабальную ўласцівасць. Такім чынам, мы можам перадаваць зменныя паміж групамі патокаў.

Каб дадаць сцвярджэнне BeanShell, пстрыкніце правай кнопкай мышы План тэсту> Дадаць> Сцвярджэнне> Сцвярджэнне BeanShell

У нашым зацвярджэнні BeanShell мы можам увесці наступны код

${__setProperty(first_url, ${first_url})};


Цяпер у групе патокаў 2 мы можам атрымаць доступ да гэтай зменнай непасрэдна, выкарыстоўваючы ${__property(first_url)} як паказана ніжэй:

Або мы можам выкарыстоўваць BeanShell PreProcessor для кіравання зменнай:


У PreProcessor BeanShell мы можам атрымаць доступ да зменнай, перададзенай з іншай групы Thread, з дапамогай props.get('name_of_variable'). Затым мы можам выканаць некаторыя маніпуляцыі з радком і захаваць вынік як новую зменную.

У прыведзеным вышэй прыкладзе мы выдаляем http:// ад зменнай, якая была перададзена з групы раздзелаў 1, і мы захоўваем вынік як зменную host.

Зменная host цяпер з'яўляецца лакальнай для Thread Group 2 і непасрэдна атрымліваць доступ да яе з дапамогай ${host} як паказана ніжэй: