Primjer korelacije u LoadRunneru s web_reg_save_param

⚡ Pametni sažetak

Korelacija u LoadRunneru bilježi dinamičku vrijednost poslužitelja, kao što je ID sesije, i vraća je u kasnije zahtjeve tako da se snimljena VuGen skripta uspješno ponovno reproducira umjesto da ne uspije na zastarjelim podacima.

  • 🔘 Definicija: Korelacija veže odgovor poslužitelja na svaki sljedeći zahtjev koji ovisi o njemu.
  • ☑️ Simptom: Ponovna reprodukcija ne uspijeva kada skripta vrati snimljeni ID sesije koji poslužitelj više ne prepoznaje.
  • Automatski: VuGen pravila i automatsko otkrivanje uspoređuju dvije snimke, ali pokrivaju samo mali udio slučajeva.
  • 🧪 Priručnik: web_reg_save_param sprema vrijednost koja se nalazi između lijeve i desne granice.
  • 🛠️ Plasman: Funkcije registracije moraju se nalaziti iznad koraka čiji odgovor nosi vrijednost.
  • 📊 Isplata: Korelirani skripti se ponavljaju sa svježim podacima i ostaju primjetno manji.

Korelacija u LoadRunneru s web_reg_save_param

Što je korelacija?

Korelacija, kao što i samo ime govori, mehanizam je definiranja odnosa između dvije varijable ili entiteta. Rječnik je definira kao „statistički odnos između dvije ili više varijabli takav da sustavne promjene u drugoj prate sustavne promjene u vrijednosti jedne varijable“.

Napomena o robnoj marki: ovaj alat isporučen kao HP, a zatim Micro Focus LoadRunner, i sada je OpenText Profesionalno inženjerstvo performansiSvaka korelacijska funkcija u nastavku ostaje nepromijenjena, a dobavljač speluje generator skripti VuGen.

Zašto nam je potrebna korelacija?

Razumijemo korelaciju sa sljedećim scenarijem.

Zamislite da snimate skriptu koristeći LoadRunner.

Komunikacija klijent-poslužitelj tijekom snimanja odvija se na sljedeći način, a dijagram je sažima:

  1. Tijekom snimanja, klijent šalje zahtjev poslužitelju za pokretanje sesije
  2. Poslužitelj prima zahtjev i dodjeljuje novi ID sesije ABC
  3. Klijent pohranjuje ID sesije ABC u skriptu.
  4. Klijent započinje sesiju s ID-om ABC i šalje zahtjev poslužitelju da mu dopusti snimanje.
  5. Poslužitelj prepoznaje ID ABC i dopušta klijentu snimanje skripte

Razmjena ID-a sesije klijent-poslužitelj tijekom snimanja LoadRunner skripte

Sada, proučimo komunikaciju klijent-poslužitelj tijekom reprodukcije, prikazanu nakon ovih koraka:

  1. Tijekom ponavljanja, klijent šalje zahtjev poslužitelju za pokretanje sesije
  2. Poslužitelj prima zahtjev i dodjeljuje novi ID sesije XYZ
  3. Klijent započinje sesiju s prethodno snimljenim ID-om sesije ABC i šalje zahtjev poslužitelju da mu dopusti snimanje.
  4. Poslužitelj ne može identificirati ID ABC jer je očekivao ID XYZ koji je dodijelio i sesija nije uspjela.

Neusklađenost ID-a sesije tijekom reprodukcije kada nedostaje korelacija

Potrebno nam je rješenje koje može uhvatiti i analizirati dinamičku vrijednost poslanu za vrijeme izvođenja i vratiti tu vrijednost natrag poslužitelju. Evo kako će izgledati komunikacija klijent-poslužitelj s ovim rješenjem, kao što je prikazano na donjem dijagramu:

  1. Tijekom ponavljanja, klijent šalje zahtjev poslužitelju za pokretanje sesije
  2. Poslužitelj prima zahtjev i dodjeljuje novi ID sesije ZZZ
  3. Klijent analizira ovaj novi ID sesije ZZZ iz zahtjeva.
  4. Klijent šalje zahtjev za pokretanje sesije s ID-om ZZZ
  5. Poslužitelj prepoznaje ID ZZZ i omogućuje klijentu ponovno reproduciranje skripte

Korelacija koja bilježi novi ID sesije i vraća ga poslužitelju

Ovo nije ništa drugo nego korelacija.

Kratki video ispod prikazuje isti problem snimanja i reprodukcije.

Kliknite ovdje ako video nije dostupan

U slučaju VuGena, korelacija je vezivni odnos između odgovora i bilo kojeg prethodnog zahtjeva.

Postoje različite situacije kada se zahtjev temelji na prethodno primljenom odgovoru s poslužitelja, kao što je ID sesije ili datum i vrijeme poslužitelja koji se dohvaćaju s poslužitelja. Ove vrijednosti su različite svaki put kada pokrenete aplikaciju ili snimite skriptu. Očito je da ako izvršavanje skripte ovisi o vrijednosti koju vraća poslužitelj, to znači da morate pronaći mehanizam gdje možete "uhvatiti" odgovor poslužitelja i priložiti ga onim zahtjevima koje poslužitelj očekuje. To se u LoadRunneru obično naziva korelacija.

Jednostavnim riječima, rješenje korištenjem korelacije je:

  1. Hvatanje izlazne vrijednosti iz koraka
  2. Koristite gornju snimljenu vrijednost da posluži kao ulaz za sve sljedeće korake

Korelacija se u VuGenu/LoadRunneru klasificira u 2 kategorije:

  • Automatska korelacija
  • Ručna korelacija

Automatska korelacija

LoadRunner pruža mehanizam za jednostavno izvođenje korelacije na automatski način.

VuGen će zahtijevati da snimku skripte pokrenete barem dva puta kako bi interno usporedio različite vrijednosti u odgovoru poslužitelja.

Automatska korelacija može se klasificirati u 3 kategorije:

  • Automatsko otkrivanje korelacije
  • Korelacija temeljena na pravilima
  • Povezivanje svih izjava
Naziv pravila Kada koristiti
Automatsko otkrivanje korelacije Otkrivanje i korelacija dinamičkih podataka za aplikacijske poslužitelje koje podržava LoadRunner
Na temelju pravila Koristi se pri radu s nepodržanim aplikacijskim poslužiteljem za koji je poznat kontekst.
Poveži sve Pomaže u korelaciji svih dinamičkih podataka na slijepi način.

Iako se automatska korelacija čini jednostavnijom, može biti sklona pogreškama i radi u ne više od 5% slučajeva. Uvijek je preporučljivo koristiti ručnu korelaciju.

Da biste konfigurirali automatsku korelaciju u vrijeme snimanja, izvršite donju konfiguraciju u postavkama vremena snimanja nakon što je skripta snimljena.

Kliknite na Snimanje => Mogućnosti snimanja (ili kliknite Ctrl + F7), prikazano u izborniku ispod,

Izbornik VuGen Record s odabranim unosom Opcije snimanja

Otvorit će se prozor ispod:

Prozor s opcijama snimanja VuGena s popisom čvorova konfiguracije snimanja

Kliknite na Korelacija =>Konfiguracija – otvorit će se donji prozor.

Okno za konfiguraciju korelacije koje navodi skupove pravila aplikacije kao što je ASPNET

Ovdje morate označiti kao provjereno sve aplikacije (ASPNET) itd., koje se koriste u vašoj predmetnoj aplikaciji. Na desnoj strani možete vidjeti pravila koja će otkriti moguće kandidate za korelaciju, npr. _VIEWSTATE. Također možete dodati više aplikacija ili prilagođenih pravila klikom na gumb Novo pravilo.

Također možete kliknuti na PRAVILA, vidjet ćete sljedeće:

Okno Pravila korelacije s dostupnom opcijom Skeniranje pravila

Da bi automatska korelacija radila, morate osigurati da je označeno Skeniranje pravila. Ako kliknete na automatski povezi pronađene vrijednosti, VuGen vas neće pitati za izbor nakon što pronađe kandidata za korelaciju, već će ih jednostavno povezati.

Kasnije ćemo razumjeti API koji se koristi za korelaciju. Međutim, preporučljivo je koristiti HTML usporedbu umjesto usporedbe teksta.

Nakon što ste odabrali bilo koje pravilo, kliknite gumb U redu za zatvaranje prozora.

Kliknite na gumb alatne trake prikazan ovdje Gumb alatne trake VuGen koji se koristi za regeneriranje snimljenog skripta iz izbornika i VuGen će regenerirati skriptu (bez potrebe za snimanjem) s novim konfiguracijama. VuGen će automatski dodati potreban dio koda za rukovanje korelacijom. Primjer ćemo detaljnije pogledati u Ručnoj korelaciji.

Imajte na umu da ako korelaciju izvodite ručno ili koristite automatsku korelaciju, dio koda će sadržavati točno istu sintaksu i funkciju.

Koraci za automatsku korelaciju skripte:

  1. Snimite scenarij
  2. Replay skripta
  3. Odredite vrijednosti koje treba povezati
  4. Odaberite vrijednosti i kliknite gumb za automatsko povezivanje
  5. Provjerite skriptu ponovnim pokretanjem. Uspješan rad znači uspješnu korelaciju.

Savjet:

  • Korelacija pomaže u pokretanju vaše skripte s različitim vrijednostima
  • Korelacija također smanjuje veličinu vaše skripte

Ručna korelacija

Ručna korelacija je pisanje koda izravno u vašu skriptu kako bi se zadovoljile vrijednosti koje se stalno mijenjaju. Možemo ga podijeliti u sljedeće korake:

  1. Odredite vrijednost za snimanje
  2. Pronađite desnu i lijevu granicu teksta vrijednosti za snimanje (WEB)
  3. Pronađite koje bi se pojavljivanje granica teksta trebalo koristiti
  4. Dodajte funkciju web_reg_save_param u skriptu, iznad dijela koda koji zahtijeva stranicu s vrijednošću za snimanje
  5. Funkciji dodajte naziv parametra, lijevu granicu, desnu granicu i pojavljivanje
  6. Parametrirajte dinamičku vrijednost u skripti svaki put kada se pojavi
  7. Provjerite ispravnost izvedbe
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 note: Oba isječka izgledaju točno onako kako su objavljena. Pogledajte ordinale: Ord=l i RelFrameId=l koristite malo slovo L, a VuGen očekuje znamenku 1.

Ručna korelacija može se izvršiti pomoću VUser Comparison. Koraci u VUser metodi usporedbe korelacije mogu se podijeliti kako slijedi:

  1. Identificirajte dinamičke vrijednosti koje je potrebno povezati
  2. Pronađite odgovor poslužitelja koji sadrži dinamičku vrijednost
  3. Hvatanje dinamičke vrijednosti u parametru
  4. Zamijenite svako pojavljivanje dinamičke vrijednosti parametrom
  5. Potvrdi promjene

Razumijevanje funkcije web_reg_save_param

VuGen pruža više funkcija ili API-ja za povezivanje kandidata, uključujući:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Napomena o verziji: trenutna VuGen izdanja su poslastica web_reg_save_param_ex kao nasljednik izvorne funkcije i web_reg_save_param_regexp kao izbor kada se same granice promijene. Izvorni primjer i dalje funkcionira.

Iako se ovdje daje kratki uvod, za detaljno razumijevanje funkcija i njihovih parametara, otvorite VuGen, napišite funkciju (ili koristite Steps Toolbox), pomaknite kursor na funkciju i kliknite F1 – upoznajte se s Pomoć za VuGen i stvorite naviku. Morat ćete se s tim puno nositi kada radite u industriji.

Idemo s detaljima funkcije:

web_reg_save_param(Naziv parametra, Lijeva granica, Desna granica)

Popis atributa

Donja tablica prikuplja sve atribute koje funkcija prihvaća, bez obzira jesu li obvezni i što kontroliraju.

Atribut Potreban? Ono što se također
pretvoriti Izborni HTML_TO_URL pretvara HTML-kodirane podatke u URL-kodirani format podataka. HTML_TO_TEXT pretvara HTML-kodirane podatke u format običnog teksta.
Ignoriraj preusmjeravanja Neobavezno, zadano "Zanemari preusmjeravanja=Ne" Kada je postavljeno na Da i odgovor poslužitelja su informacije o preusmjeravanju (HTTP statusni kod 300-303, 307), taj se odgovor ne pretražuje. GET zahtjev ide na preusmjerenu lokaciju i pretraživanje se pokreće na odgovoru od tamo.
LB potreban Lijeva granica parametra ili dinamičkih podataka. Ako ne navedete LB vrijednost, kao granica se koriste svi znakovi s početka podataka. Parametri granice razlikuju velika i mala slova. Za dodatnu prilagodbu teksta pretraživanja upotrijebite jednu ili više tekstualnih zastavica.
NIJE PRONAĐENO Neobavezno, zadana "greška" Obrada kada granica nije pronađena i generira se prazan niz. "Nije pronađeno=greška" izaziva grešku. "Nije pronađeno=upozorenje" ("Nije pronađeno=prazno" u ranijim verzijama) umjesto toga postavlja parametar count na 0 i nastavlja, što je idealno kada želite vidjeti je li niz pronađen bez neuspjeha skripte. S omogućenim Nastavi pri pogrešci, skripta nastavlja čak i pod "greškom", ali prošireni zapisnik to bilježi.
ORD Neobavezno, zadano 1 Označava ordinalni položaj ili instancu podudaranja. Ako navedete "Sve", vrijednosti parametara spremaju se u niz. Korištenje Instance umjesto ORD podržano je radi unatrag kompatibilnosti, ali je zastarjelo.
RB potreban Desna granica parametra ili dinamičkih podataka. Ako ne navedete RB vrijednost, kao granica se koriste svi znakovi do kraja podataka. Parametri granica razlikuju velika i mala slova. Za dodatnu prilagodbu teksta pretraživanja upotrijebite jednu ili više tekstualnih zastavica.
RelFrameID Izborni Hijerarhijska razina HTML stranice u odnosu na traženu URLMoguće vrijednosti su SVE ili broj. RelFrameID nije podržan u skriptama na razini grafičkog korisničkog sučelja.
SaveLen Neobavezno, zadano -1 Duljina podniza pronađene vrijednosti, od navedenog pomaka, za spremanje u parametar. Zadana vrijednost sprema se na kraj niza.
SpremiOffset Neobavezno, zadano 0 Pomak podniza pronađene vrijednosti koji treba spremiti u parametar. Vrijednost pomaka mora biti nenegativna.
Traži Neobavezno, zadano SVE Opseg pretraživanja — gdje pretraživati ​​razgraničene podatke. Moguće vrijednosti su Zaglavlja (pretraži samo zaglavlja), Tijelo (pretraži samo podatke tijela, ne zaglavlja), Bez resursa (pretraži samo HTML tijelo, isključujući sva zaglavlja i resurse) ili SVE (pretraži tijelo, zaglavlja i resurse).

Nakon što se skripta čisto ponovi, dodajte parametrizacija, transakcije i postavke za vrijeme izvođenja, pokrenite ga iz kontrolori pročitajte rezultat u Analiza kao dio šireg Ispitivanje performansi i Testiranje opterećenja.

Pitanja i odgovori

Ponovite dva puta s proširenom prijavom i usporedite odgovore. Bilo koja vrijednost koju poslužitelj izdaje iznova pri svakom pokretanju - ID-ovi sesija, tokeni, vremenske oznake - je kandidat.

web_reg_save_param podudaranja između fiksnih lijeve i desne granice. web_reg_save_param_regexp odgovara regularnom izrazu, pa se nosi s promjenom samih granica.

Da. Strojno učenje može razlikovati dva odgovora s ponovljenim reprodukcijama i rangirati polja koja se mijenjaju, puno brže od ručnog skeniranja. Rangiranje tretirajte kao uži izbor koji čovjek i dalje potvrđuje.

GitHub kopilot izrađuje poziv funkcije i njezine argumente iz komentara. Ne može vidjeti odgovor poslužitelja, pa se svaka granica koju predloži mora provjeriti u odnosu na stvarni promet.

To je registracijska funkcija: registrira pretragu u odnosu na sljedeći odgovor koji VuGen primi. Postavljen nakon zahtjeva, ne preostaje ništa za skeniranje i parametar ostaje prazan.

Granice se nisu podudarale. Uobičajeni uzroci su neusklađenost velikih i malih slova, granica koja se pojavljuje samo na drugoj stranici ili pretraživanje tijela stranice kada se vrijednost nalazi u zaglavljima.

Ne. Parametrizacija unosi vlastite ulazne podatke u skriptu iz podatkovne datoteke. Korelacija bilježi vrijednost koju poslužitelj generira za vrijeme izvođenja i vraća je natrag. Većini skripti potrebno je oboje.

Da, često i više toga. Nosivi tokeni, CSRF polja i JSON identifikatori mijenjaju se svake sesije, pa je REST i promet na jednoj stranici pun kandidata čak i bez HTML obrasca.

Sažmite ovu objavu uz: