Korelace v LoadRunneru s příkladem web_reg_save_param

⚡ Chytré shrnutí

Korelace v LoadRunneru zachycuje dynamickou hodnotu serveru, například ID relace, a vrací ji zpět do pozdějších požadavků, takže zaznamenaný skript VuGen se úspěšně přehraje, místo aby selhal na zastaralých datech.

  • 🔘 Definice: Korelace váže odpověď serveru na každý následující požadavek, který na ní závisí.
  • ☑️ Příznak: Přehrání selže, když skript vrátí zaznamenané ID relace, které server již nerozpoznává.
  • (Tj. Automatic: Pravidla VuGen a automatická detekce porovnávají dva záznamy, ale pokrývají pouze malý podíl případů.
  • 🧪 Manuální: Funkce web_reg_save_param ukládá hodnotu mezi levou a pravou hranicí.
  • 🛠️ Umístění: Registrační funkce musí být umístěny nad krokem, jehož odpověď nese hodnotu.
  • 📊 Výplata: Korelované skripty se přehrávají s novými daty a zůstávají znatelně menší.

Korelace v LoadRunneru s web_reg_save_param

Co je korelace?

Korelace, jak název napovídá, je mechanismus definování vztahu mezi dvěma proměnnými nebo entitami. Slovník ji definuje jako „statistický vztah mezi dvěma nebo více proměnnými takový, že systematické změny v druhé proměnné doprovázejí systematické změny hodnoty jedné proměnné“.

Poznámka ke značce: tento nástroj byl dodáván jako HP a poté Micro Focus LoadRunner, a je nyní OpenText Profesionální výkonnostní inženýrstvíKaždá níže uvedená korelační funkce zůstává nezměněna a dodavatel hláskuje generátor skriptů. VuGen.

Proč potřebujeme korelaci?

Pojďme si vysvětlit souvislost s následujícím scénářem.

Představte si, že nahráváte skript pomocí LoadRunner.

Komunikace klient-server během nahrávání probíhá následovně a diagram ji shrnuje:

  1. Během záznamu klient odešle serveru požadavek na zahájení relace.
  2. Server přijme požadavek a přidělí nové ID relace ABC
  3. Klient ukládá ID relace ABC do skriptu.
  4. Klient zahájí relaci s ID ABC a odešle serveru požadavek na povolení nahrávání.
  5. Server rozpozná ID ABC a umožní klientovi zaznamenat skript

Výměna ID relace klient-server při nahrávání skriptu LoadRunner

Nyní se podívejme na komunikaci klient-server během přehrávání, jak je znázorněno po těchto krocích:

  1. Během přehrávání odešle klient serveru požadavek na zahájení relace
  2. Server přijme požadavek a přidělí nové ID relace XYZ
  3. Klient zahájí relaci s dříve zaznamenaným ID relace ABC a odešle serveru požadavek na povolení záznamu.
  4. Server není schopen identifikovat ID ABC, protože očekával ID XYZ, které přidělil, a relace se nezdařila.

Neshoda ID relace během přehrávání, pokud chybí korelace

Potřebujeme řešení, které dokáže zachytit a analyzovat dynamickou hodnotu odeslanou za běhu a vrátit tuto hodnotu zpět na server. Komunikace klient-server s tímto řešením bude vypadat takto, jak ukazuje níže uvedený diagram:

  1. Během přehrávání odešle klient serveru požadavek na zahájení relace
  2. Server přijme požadavek a přidělí nové ID relace ZZZ
  3. Klient analyzuje toto nové ID relace ZZZ z požadavku.
  4. Klient odešle požadavek na zahájení relace s id ZZZ
  5. Server rozpozná ID ZZZ a umožní klientovi přehrát skript

Korelace zachycující nové ID relace a vracející ho na server

Tohle není nic jiného než korelace.

Krátké video níže popisuje stejný problém s nahráváním a přehráváním.

klikněte zde pokud video není přístupné

V případě VuGenu je korelace vazebný vztah mezi odpovědí a jakýmkoli předchozím požadavkem.

Existují různé situace, kdy je požadavek založen na dříve přijaté odpovědi ze serveru, jako je ID relace nebo datum a čas serveru, které jsou ze serveru načteny. Tyto hodnoty se liší pokaždé, když spustíte aplikaci nebo nahráte skript. Je zřejmé, že pokud spuštění skriptu závisí na hodnotě vrácené serverem, znamená to, že musíte najít mechanismus, kterým můžete „zachytit“ odpověď serveru a připojit ji k těm požadavkům, které server očekává. Tomu se v LoadRunneru obvykle říká korelace.

Jednoduše řečeno, řešení pomocí korelace je:

  1. Zachycení výstupní hodnoty z kroku
  2. Použijte výše zachycenou hodnotu, která bude sloužit jako vstup pro všechny následující kroky

Korelace je ve VuGenu/LoadRunneru rozdělena do 2 kategorií:

  • Automatická korelace
  • Manuální korelace

Automatická korelace

LoadRunner poskytuje mechanismus pro snadné provádění korelace automatickým způsobem.

VuGen bude vyžadovat spuštění nahraného skriptu alespoň dvakrát, aby mohl interně porovnat různé hodnoty v odpovědi serveru.

Automatickou korelaci lze rozdělit do 3 kategorií:

  • Auto-Detect Correlation
  • Korelace na základě pravidel
  • Korelace všech prohlášení
Název pravidla Kdy použít
Automatická detekce korelace Detekce a korelace dynamických dat pro aplikační servery podporované LoadRunnerem
Na základě pravidel Používá se při práci s nepodporovaným aplikačním serverem, pro který je znám kontext.
Korelovat vše Pomáhá slepým způsobem korelovat všechna dynamická data.

Ačkoli se automatická korelace zdá jednodušší, může být náchylná k chybám a funguje maximálně v 5 % případů. Vždy je vhodné použít manuální korelaci.

Chcete-li nakonfigurovat automatickou korelaci v době nahrávání, proveďte po nahrání skriptu níže uvedenou konfiguraci v Nastavení doby nahrávání.

Klikněte na Nahrávat => Možnosti nahrávání (nebo klikněte na Ctrl + F7), zobrazené v nabídce níže,

Nabídka VuGen Record s vybranou položkou Možnosti nahrávání

Otevře se okno níže:

Okno Možnosti nahrávání VuGen se seznamem uzlů konfigurace nahrávání

Klikněte na Correlation =>Configuration – otevře se okno níže.

Podokno Konfigurace korelace se seznamem sad pravidel aplikací, jako je ASPNET

Zde je potřeba označit jako zaškrtnuté vůči všem aplikacím (ASPNET) atd., které jsou použity ve vaší předmětové aplikaci. Na pravé straně můžete vidět pravidla, která budou detekovat možné kandidáty na korelaci, např. _VIEWSTATE. Můžete také přidat další aplikace nebo vlastní pravidla kliknutím na tlačítko Nové pravidlo.

Můžete také kliknout na PRAVIDLA, uvidíte níže:

Panel Pravidla korelace s dostupnou možností Prohledávání pravidel

Aby fungovala automatická korelace, je nutné zajistit, aby byla zaškrtnuta možnost Prohledávání pravidel. Pokud kliknete na možnost automaticky korelovat nalezené hodnoty, VuGen vás po nalezení kandidáta na korelaci nevyzve k výběru, místo toho je pouze koreluje.

API použitému pro korelaci pochopíme později. Místo porovnávání textu je však vhodné použít porovnání HTML.

Jakmile vyberete jakákoli pravidla, kliknutím na tlačítko OK zavřete okna.

Klikněte na tlačítko na panelu nástrojů zobrazené zde Tlačítko panelu nástrojů VuGen používané k regeneraci nahraného skriptu z nabídky a VuGen regeneruje skript (bez nutnosti záznamu) s novými konfiguracemi. VuGen automaticky přidá požadovaný kus kódu pro zpracování korelace. Na ukázku se podíváme podrobněji v části Ruční korelace.

Upozorňujeme, že pokud provedete korelaci ručně nebo použijete automatickou korelaci, bude část kódu obsahovat přesně stejnou syntaxi a funkci.

Kroky pro automatickou korelaci skriptu:

  1. Nahrajte scénář
  2. Přehrát skript
  3. Určete hodnoty, které mají být korelovány
  4. Vyberte hodnoty a klikněte na tlačítko automatické korelace
  5. Ověřte skript opětovným spuštěním. Úspěšný běh znamená úspěšnou korelaci.

Tip:

  • Korelace pomáhá spouštět skript s různými hodnotami
  • Korelace také snižuje velikost vašeho skriptu

Manuální korelace

Manuální korelace spočívá v zápisu kódu přímo do vašeho skriptu tak, aby vyhovoval neustále se měnícím hodnotám. Můžeme to rozdělit do následujících kroků:

  1. Určete hodnotu, kterou chcete zachytit
  2. Najít pravou a levou hranici textu hodnoty k zachycení (WEB)
  3. Zjistěte, který výskyt hranic textu by měl být použit
  4. Přidejte do skriptu funkci web_reg_save_param nad část kódu, která požaduje, aby byla stránka s hodnotou zachycena
  5. Přidejte do funkce název parametru, levou hranici, pravou hranici a výskyt
  6. Parametrizujte dynamickou hodnotu ve skriptu pokaždé, když k ní dojde
  7. Ověřte správné provedení
web_reg_save_param (" OracleAppJSESSIONID3",
	"LB/IC=JSESSIONID=",
	"RB/IC=;",
	"Ord=l",
	"Search=headers",
	"RelFrameId=l",
	LAST);

web_reg_save_param("Siebel_Analytic_ViewState2",
	"LB/IC=ViewState\" value=\"",
	"RB/IC=\"",
	"Ord=1",
	"Search=Body",
	"RelFrameId=l",
	LAST);

Code poznámky: Oba úryvky vypadají přesně tak, jak byly publikovány. Sledujte ordinální čísla: Ord=l a RelFrameId=l použijte malé písmeno L a VuGen očekává číslici 1.

Manuální korelaci lze provést pomocí VUser Comparison. Kroky korelační metody VUser Comparison lze rozdělit následovně:

  1. Identifikujte dynamické hodnoty, které je třeba korelovat
  2. Najděte odpověď serveru obsahující hodnotu Dynamic
  3. Zachyťte dynamickou hodnotu do parametru
  4. Nahraďte každý výskyt dynamické hodnoty parametrem
  5. Ověřte změny

Principy funkce web_reg_save_param

VuGen poskytuje několik funkcí nebo API pro korelaci kandidátů, včetně:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Poznámka k verzi: aktuální vydání VuGenu potěší web_reg_save_param_ex jako nástupce původní funkce a web_reg_save_param_regexp jako volba při změně samotných hranic. Původní příklad stále běží.

I když je zde uveden stručný úvod, pro detailní pochopení funkcí a jejich parametrů otevřete VuGen, napište funkci (nebo použijte Steps Toolbox), přesuňte kurzor na funkci a stiskněte F1 – seznamte se s… Nápověda VuGenu a vytvořte si zvyk. S tím se budete muset při práci v oboru hodně vypořádat.

Zde jsou podrobnosti o funkci:

web_reg_save_param(název parametru, levá hranice, pravá hranice)

Seznam atributů

Níže uvedená tabulka shromažďuje všechny atributy, které funkce přijímá, zda jsou povinné a co řídí.

Atribut Povinný? Co to dělá
Konvertovat volitelný HTML_TO_URL převádí data kódovaná ve formátu HTML do formátu URL-kódovaný formát dat. HTML_TO_TEXT převádí data kódovaná ve formátu HTML do formátu prostého textu.
Ignorovat přesměrování Volitelné, výchozí nastavení „Ignorovat přesměrování = Ne“ Pokud je nastaveno na Ano a odpověď serveru obsahuje informace o přesměrování (stavový kód HTTP 300-303, 307), tato odpověď se neprohledává. Požadavek GET směřuje do přesměrovaného umístění a vyhledávání se spustí odtud.
LB Požadovaný Levá hranice parametru nebo dynamických dat. Pokud nezadáte hodnotu LB, jako hranice se použijí všechny znaky ze začátku dat. Parametry hranic rozlišují velká a malá písmena. Chcete-li dále přizpůsobit hledaný text, použijte jeden nebo více textových příznaků.
NENALEZENO Volitelné, výchozí „chyba“ Zpracování situace, kdy není nalezena hranice a je vygenerován prázdný řetězec. „Not found=error“ vyvolá chybu. „Not found=warning“ („Not found=empty“ v dřívějších verzích) místo toho nastaví parametr count na 0 a pokračuje, což je ideální, když chcete zjistit, zda byl řetězec nalezen, aniž by došlo k selhání skriptu. Pokud je povolena možnost Pokračovat při chybě, skript pokračuje i při „chybě“, ale rozšířený protokol ji zaznamená.
ORD Volitelné, výchozí 1 Označuje ordinální pozici nebo instanci shody. Pokud zadáte „Vše“, hodnoty parametrů se uloží do pole. Použití Instance místo ORD je podporováno z důvodu zpětné kompatibility, ale je zastaralé.
RB Požadovaný Pravá hranice parametru nebo dynamických dat. Pokud nezadáte hodnotu RB, použijí se jako hranice všechny znaky až do konce dat. Parametry hranic rozlišují velká a malá písmena. Chcete-li dále přizpůsobit hledaný text, použijte jeden nebo více textových příznaků.
RelFrameID volitelný Úroveň hierarchie HTML stránky vzhledem k požadovanému URLMožné hodnoty jsou ALL nebo číslo. RelFrameID není podporováno ve skriptech na úrovni grafického rozhraní.
SaveLen Volitelné, výchozí -1 Délka podřetězce nalezené hodnoty od zadaného posunu, která se má uložit do parametru. Výchozí nastavení ukládá na konec řetězce.
UložitOffset Volitelné, výchozí 0 Offset podřetězce nalezené hodnoty, který se má uložit do parametru. Hodnota offsetu musí být nezáporná.
Hledat Volitelné, výchozí VŠECHNY Rozsah vyhledávání – kde hledat data s oddělovači. Možné hodnoty jsou Záhlaví (hledat pouze v záhlavích), Tělo (hledat pouze v datech těla, nikoli v záhlavích), Žádný zdroj (hledat pouze v těle HTML, bez všech záhlaví a zdrojů) nebo VŠE (hledat v těle, záhlavích a zdrojích).

Jakmile se skript čistě přehraje, přidejte parametrizace, transakce a nastavení za běhu, spusťte to z kontrolora přečtěte si výsledek v Analýza jako součást širšího Testování výkonu a Testování zatížení.

Nejčastější dotazy

Přehrajte to dvakrát s rozšířeným přihlášením a porovnejte odpovědi. Kandidátem je jakákoli hodnota, kterou server vydává při každém spuštění – ID relací, tokeny, časová razítka.

web_reg_save_param porovnává pevně dané levé a pravé hranice. web_reg_save_param_regexp odpovídá regulárnímu výrazu, takže si poradí i se změnou samotných hranic.

Ano. Strojové učení dokáže rozlišit dvě odpovědi na přehrání a seřadit pole, která se mění, mnohem rychleji než ruční skenování. Seřazení považujte za užší seznam, který stále potvrzuje člověk.

GitHub Copilot Navrhuje volání funkce a její argumenty z komentáře. Nevidí odpověď serveru, takže každá navrhovaná hranice musí být porovnána se skutečným provozem.

Jedná se o registrační funkci: registruje vyhledávání proti další odpovědi, kterou VuGen obdrží. Pokud je umístěna za požadavek, nezbývá nic ke skenování a parametr zůstává prázdný.

Hranice se neshodovaly. Obvyklými příčinami jsou neshoda velkých a malých písmen, hranice, která se objevuje pouze na jiné stránce, nebo vyhledávání v textu, když se hodnota nachází v záhlaví.

Ne. Parametrizace vkládá do skriptu vaše vlastní vstupní data z datového souboru. Korelace zachycuje hodnotu, kterou server generuje za běhu, a předává ji zpět. Většina skriptů potřebuje obojí.

Ano, často více. Nosné tokeny, pole CSRF a identifikátory JSON se mění při každé relaci, takže REST a single-page provoz je plný kandidátů i bez HTML formuláře.

Shrňte tento příspěvek takto: