V tomto výukovém programu JMeter se podíváme na to, jak můžeme sdílet a předávat proměnné mezi skupinami vláken.
Při vývoji pokročilých skriptů JMeter budete pravděpodobně mít více skupin vláken. Každá skupina vláken bude provádět různé požadavky.
Dobrým příkladem toho je, když potřebujeme ověřovat uživatele pomocí nosných tokenů. Jedna skupina vláken provede ověření a uloží token. Jiná skupina vláken potřebuje přístup k tomuto tokenu a použití v jiném požadavku.
Proto potřebujeme mechanismus pro předávání proměnných mezi skupinami vláken.
V tomto příkladu bude mít náš testovací plán dvě skupiny vláken. První skupina vláken odešle požadavek GET na webovou službu. Poté použijeme JSON Extractor plugin pro analýzu odpovědi JSON.
Pomocí JSONPath extrahujeme hodnotu pro konkrétní klíč a uložíme ji jako proměnnou JMeter.
Takto vypadá náš požadavek JMeter:
Výsledek výše uvedeného požadavku vytvoří následující odpověď ve formátu JSON:
a naše JSONPath k extrakci první adresy URL vypadá takto:
Hodnota dotazu JSONPath se uloží jako first_url
. Tato proměnná je přístupná pouze ve stejné skupině vláken a její hodnotu můžeme získat pomocí ${first_url}
. Jak nyní zpřístupníme tuto proměnnou prostřednictvím jiných skupin vláken?
Odpověď je použít BeanShell Assertion
uložit proměnnou jako globální vlastnost. Tímto způsobem můžeme předávat proměnné mezi skupinami vláken.
Chcete-li přidat BeanShell Assertion, klikněte pravým tlačítkem na Testovací plán> Přidat> Assertion> BeanShell Assertion
V našem BeanShell Assertion můžeme zadat následující kód
${__setProperty(first_url, ${first_url})};
Nyní ve skupině vláken 2 můžeme k této proměnné přistupovat přímo pomocí ${__property(first_url)}
Jak je ukázáno níže:
Nebo můžeme použít BeanShell PreProcessor
manipulovat s proměnnou:
V BeanShell PreProcessor můžeme přistupovat k proměnné předané z jiné skupiny vláken pomocí props.get('name_of_variable')
. Poté můžeme provést nějakou manipulaci s řetězci a uložit výsledek jako novou proměnnou.
Ve výše uvedeném příkladu odstraníme http://
z proměnné, která byla předána ze skupiny vláken 1, a výsledek uložíme jako proměnnou host
.
Proměnná host
je nyní místní ve skupině vláken 2 a má k ní přímý přístup pomocí ${host}
Jak je ukázáno níže: