У гэтым уроку па 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}
як паказана ніжэй: