Korrelation i LoadRunner med web_reg_save_param Eksempel

⚡ Smart opsummering

Korrelation i LoadRunner registrerer en dynamisk serverværdi, såsom et sessions-ID, og ​​bruger den til senere anmodninger, så et optaget VuGen-script afspilles korrekt i stedet for at fejle på forældede data.

  • 🔘 Definition: Korrelation binder et serversvar til enhver efterfølgende anmodning, der er afhængig af det.
  • ☑️ Symptom: Genafspilning mislykkes, når et script returnerer et optaget sessions-ID, som serveren ikke længere genkender.
  • ✅ Automatisk: VuGen-regler og automatisk detektion sammenligner to gentagelser, men dækker kun en lille del af sagerne.
  • 🧪 Manual: web_reg_save_param gemmer værdien, der ligger mellem en venstre og en højre grænse.
  • 🛠️ Placering: Registreringsfunktioner skal placeres over det trin, hvis svar bærer værdien.
  • 📊 Udbetaling: Korrelerede scripts afspilles med friske data og forbliver mærkbart mindre.

Korrelation i LoadRunner med web_reg_save_param

Hvad er korrelation?

Korrelation er, som navnet antyder, en mekanisme til at definere en sammenhæng mellem to variabler eller enheder. En ordbog definerer det som "en statistisk sammenhæng mellem to eller flere variabler, således at systematiske ændringer i den anden ledsager systematiske ændringer i værdien af ​​den ene variabel".

Mærkebemærkning: dette værktøj blev leveret som HP og derefter Micro Focus LoadRunnerog er nu OpenText Professionel præstationsteknikAlle korrelationsfunktioner nedenfor er uændrede, og leverandøren staver scriptgeneratoren VuGen.

Hvorfor har vi brug for korrelation?

Lad os forstå sammenhængen med følgende scenarie.

Forestil dig, at du indspiller et manuskript ved hjælp af LoadRunner.

Klient-server-kommunikationen under optagelsen kører som følger, og diagrammet opsummerer det:

  1. Under optagelsen sender klienten en anmodning til serveren om at starte en session
  2. En server modtager anmodningen og tildeler et nyt sessions-id ABC
  3. Klienten gemmer sessions-id'et ABC i scriptet.
  4. Klienten starter sessionen med ID ABC og sender en anmodning til en server om at tillade den at optage
  5. Serveren genkender ID'et ABC og tillader klienten at optage scriptet

Udveksling af klient-server-sessions-ID under optagelse af et LoadRunner-script

Lad os nu studere klient-server-kommunikationen under afspilning, vist efter disse trin:

  1. Under Replay sender en klient en anmodning til serveren om at starte en session
  2. En server modtager anmodningen og tildeler et nyt sessions-id XYZ
  3. En klient starter sessionen med det tidligere registrerede sessions-ID ABC og sender en anmodning til serveren om at tillade optagelse.
  4. En server er ikke i stand til at identificere ID'et ABC, da den forventede ID XYZ, som den har tildelt, og sessionen mislykkes.

Sessions-ID-uoverensstemmelse under afspilning, når korrelation mangler

Vi har brug for en løsning, der kan registrere og analysere den dynamiske værdi, der sendes under kørsel, og returnere denne værdi tilbage til serveren. Sådan vil klient-server-kommunikationen se ud med denne løsning, som diagrammet nedenfor viser:

  1. Under Replay sender en klient en anmodning til serveren om at starte en session
  2. En server modtager anmodningen og tildeler et nyt sessions-id ZZZ
  3. En klient analyserer dette nye sessions-id ZZZ fra anmodningen.
  4. En klient sender en anmodning om at starte session med id ZZZ
  5. En server genkender ID'et ZZZ og tillader klienten at afspille scriptet igen

Korrelation, der registrerer det nye sessions-ID og returnerer det til serveren

Dette er intet andet end korrelation.

Den korte video nedenfor gennemgår det samme optagelses- og afspilningsproblem.

Klik link. hvis videoen ikke er tilgængelig

I tilfælde af VuGen er korrelation en bindende relation mellem et svar og enhver foregående anmodning.

Der er forskellige situationer, hvor en anmodning er baseret på et tidligere modtaget svar fra serveren, såsom et sessions-ID eller en serverdato og -tidspunkt, der hentes fra serveren. Disse værdier er forskellige, hver gang du kører et program eller optager et script. Hvis udførelsen af ​​scriptet afhænger af en værdi, der returneres af serveren, betyder det naturligvis, at du skal finde en mekanisme, hvor du kan "fange" serversvaret og knytte det til de anmodninger, som serveren forventer. Dette kaldes typisk korrelation i LoadRunner.

Med enkle ord er løsningen ved at bruge korrelation:

  1. Fang outputværdi fra et trin
  2. Brug ovenstående registrerede værdi til at tjene som input til alle efterfølgende trin

Korrelation er klassificeret i 2 kategorier i VuGen/LoadRunner:

  • Automatisk korrelation
  • Manuel korrelation

Automatisk korrelation

LoadRunner giver en mekanisme til nemt at udføre korrelation på automatisk måde.

VuGen kræver, at du kører et optaget script mindst to gange, så det internt kan sammenligne de varierende værdier i serversvaret.

Automatisk korrelation kan klassificeres i 3 kategorier:

  • Auto-detekter korrelation
  • Regelbaseret korrelation
  • Korrelerer alle udsagn
Regel Name Hvornår skal den bruges ?
Auto-detekter korrelation Detekter og korreler dynamiske data for applikationsservere understøttet af LoadRunner
Regelbaseret Bruges ved arbejde med en ikke-understøttet applikationsserver, som konteksten er kendt for.
Korreler alle Hjælper med at korrelere alle dynamiske data på en blind måde.

Selvom automatisk korrelation virker enklere, kan den være fejltilbøjelig og fungerer i ikke mere end 5 % af tilfældene. Det er altid tilrådeligt at bruge manuel korrelation.

For at konfigurere automatisk korrelation på optagelsestidspunktet skal du udføre nedenstående konfiguration i Record Time Setting, efter at et script er blevet optaget.

Klik på Optag => Optageindstillinger (eller klik på Ctrl + F7), som vist i menuen nedenfor,

VuGen-optagelsesmenu med optagelsesindstillinger valgt

Nedenstående vindue åbnes:

Vinduet VuGen-optagelsesindstillinger viser noder til optagelseskonfiguration

Klik på Korrelation => Konfiguration – vinduet nedenfor åbnes.

Ruden Korrelationskonfiguration viser programregelsæt såsom ASPNET

Her skal du markere som afkrydset mod alle ansøgninger (ASPNET) mv., som bruges i din fagansøgning. På højre side kan du se reglerne, som vil opdage mulige kandidater til korrelation, f.eks. _VIEWSTATE. Du kan også tilføje flere applikationer eller brugerdefinerede regler ved at klikke på knappen Ny regel.

Du kan også klikke på REGLER, du vil se som nedenfor:

Ruden Korrelationsregler med den tilgængelige regelscanningsfunktion

For at automatisk korrelation kan fungere, skal du sørge for, at Regelscanning er markeret som afkrydset. Hvis du klikker på korreler automatisk fundne værdier, vil VuGen ikke bede dig om valget, når en korrelationskandidat er fundet, i stedet vil den blot korrelere dem.

Vi vil forstå API brugt til korrelation senere. Det er dog tilrådeligt at bruge HTML-sammenligning i stedet for tekstsammenligning.

Når du har valgt nogen regler, skal du klikke på knappen OK for at lukke vinduerne.

Klik på værktøjslinjeknappen vist her VuGen-værktøjslinjeknap, der bruges til at regenerere det optagede script fra menuen, og VuGen vil regenerere scriptet (uden at skulle optage) med nye konfigurationer. VuGen vil automatisk tilføje et nødvendigt stykke kode til at håndtere korrelation. Vi vil se nærmere på eksemplet i Manuel korrelation.

Bemærk venligst, at hvis du udfører korrelation manuelt eller bruger automatisk korrelation, vil kodestykket indeholde nøjagtig samme syntaks og funktion.

Trin til autokorrelation af et script:

  1. Optag et manuskript
  2. Gentag script
  3. Identificer de værdier, der skal korreleres
  4. Vælg værdierne, og klik på knappen Autokorreler
  5. Bekræft scriptet ved at køre igen. Et vellykket løb betyder vellykket korrelation.

Tip:

  • Korrelation hjælper med at køre dit script med forskellige værdier
  • Korrelation reducerer også størrelsen af ​​dit script

Manuel korrelation

Manuel korrelation handler om at skrive kode direkte ind i dit script for at tage højde for stadigt skiftende værdier. Vi kan opdele det i nedenstående trin:

  1. Bestem den værdi, der skal fanges
  2. Find de højre og venstre tekstgrænser for den værdi, der skal fanges (WEB)
  3. Find hvilken forekomst af tekstgrænserne der skal bruges
  4. Tilføj en web_reg_save_param-funktion til scriptet over det kodestykke, der anmoder siden med værdien om at fange
  5. Tilføj et parameternavn, venstre grænse, højre grænse og forekomst til funktionen
  6. Parametrér den dynamiske værdi i scriptet, hver gang det opstår
  7. Bekræft korrekt udførelse
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 noter: Begge uddrag fremstår præcis som de er blevet offentliggjort. Se ordenstallene: Ord=l og RelFrameId=l brug et lille L, og VuGen forventer cifferet 1.

Manuel korrelation kan udføres af VUser Comparison. Trin i VUser-sammenligningsmetoden til korrelation kan opdeles som nedenfor:

  1. Identificer dynamiske værdier, der skal korreleres
  2. Find serversvaret, der indeholder den dynamiske værdi
  3. Indfang den dynamiske værdi i en parameter
  4. Erstat hver forekomst af den dynamiske værdi med parameteren
  5. Bekræft ændringer

Forståelse af web_reg_save_param-funktionen

VuGen tilbyder flere funktioner eller API'er til at korrelere kandidater, herunder:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Versionsnotat: nuværende VuGen-udgivelser godbid web_reg_save_param_ex som efterfølger til den oprindelige funktion, og web_reg_save_param_regexp som valget, når selve grænserne ændres. Det oprindelige eksempel gælder stadig.

Selvom der her gives en kort introduktion, kan du for en detaljeret forståelse af funktioner og deres parametre åbne VuGen, skrive en funktion (eller bruge Steps Toolbox), flytte en markør over funktionen og klikke på F1 – bliv bekendt med VuGen-hjælp og gør det til en vane. Du bliver nødt til at håndtere det meget, når du arbejder i branchen.

Her går vi med funktionsdetaljerne:

web_reg_save_param(Parameternavn , Venstre grænse , Højre grænse )

Liste over attributter

Tabellen nedenfor samler alle attributter, som funktionen accepterer, om de er obligatoriske, og hvad den styrer.

Attribut Nødvendig? Hvad gør den
Konverter Valgfri HTML_TO_URL konverterer HTML-kodede data til en URL-kodet dataformat. HTML_TO_TEXT konverterer HTML-kodede data til almindeligt tekstformat.
Ignorer omdirigeringer Valgfri, standardindstilling "Ignorer omdirigeringer = Nej" Når den er indstillet til Ja, og serversvaret er omdirigeringsoplysninger (HTTP-statuskode 300-303, 307), søges der ikke efter det svar. GET-anmodningen går til den omdirigerede placering, og søgningen kører på svaret derfra.
LB påkrævet Venstre grænse for parameteren eller de dynamiske data. Hvis du ikke angiver en LB-værdi, bruges alle tegnene fra begyndelsen af ​​dataene som en grænse. Grænseparametre skelner mellem store og små bogstaver. For yderligere at tilpasse søgeteksten skal du bruge et eller flere tekstflag.
IKKE FUNDET Valgfri, standard "fejl" Håndtering når en grænse ikke findes, og en tom streng genereres. "Not found=error" genererer en fejl. "Not found=advarsel" ("Not found=tom" i tidligere versioner) sætter i stedet parameterantallet til 0 og fortsætter, hvilket er ideelt, når du vil se, om strengen blev fundet uden at fejle scriptet. Med Fortsæt ved fejl aktiveret fortsætter scriptet selv under "fejl", men den udvidede log registrerer det.
DSB Valgfri, standard 1 Angiver den ordinære position eller instans af matchen. Hvis du angiver "Alle", gemmes parameterværdierne i et array. Brugen af ​​Instance i stedet for ORD understøttes af hensyn til bagudkompatibilitet, men er udfaset.
RB påkrævet Den højre grænse for parameteren eller de dynamiske data. Hvis du ikke angiver en RB-værdi, bruges alle tegn indtil slutningen af ​​dataene som en grænse. Grænseparametre skelner mellem store og små bogstaver. For yderligere at tilpasse søgeteksten skal du bruge et eller flere tekstflag.
RelFrameID Valgfri HTML-sidens hierarkiniveau i forhold til den anmodede URLDe mulige værdier er ALL eller et tal. RelFrameID understøttes ikke i scripts på GUI-niveau.
GemLen Valgfri, standard -1 Længden af ​​en understreng af den fundne værdi, fra den angivne offset, som gemmes i parameteren. Standardværdien gemmes i slutningen af ​​strengen.
GemOffset Valgfri, standard 0 Offsetværdien for en understreng af den fundne værdi, som skal gemmes i parameteren. Offsetværdien må ikke være negativ.
Søg Valgfrit, standard ALLE Søgningens omfang — hvor der skal søges efter de afgrænsede data. De mulige værdier er Overskrifter (søg kun i overskrifterne), Brødtekst (søg kun i brødtekstdata, ikke overskrifter), Ingen ressource (søg kun i HTML-brødteksten, eksklusive alle overskrifter og ressourcer) eller ALLE (søg i brødtekst, overskrifter og ressourcer).

Når scriptet afspilles rent, tilføj parametrisering, transaktioner og runtime-indstillinger, kør den fra controllerog læs resultatet i Analyse som en del af en bredere Test af ydeevne og Load Testing.

Ofte Stillede Spørgsmål

Afspil det to gange med den udvidede login-funktion, og sammenlign svarene. Enhver værdi, som serveren udsteder fornyet ved hver kørsel – sessions-ID'er, tokens, tidsstempler – er en kandidat.

web_reg_save_param matcher mellem faste venstre og højre grænser. web_reg_save_param_regexp matcher et regulært udtryk, så det klarer sig, når selve grænserne ændres.

Ja. Maskinlæring kan skelne mellem to gentagelsessvar og rangere de felter, der ændrer sig, langt hurtigere end en manuel scanning. Betragt rangeringen som en liste, som et menneske stadig bekræfter.

GitHub Copilot laver et udkast til funktionskaldet og dets argumenter fra en kommentar. Den kan ikke se serversvaret, så hver foreslået grænse skal kontrolleres mod den reelle trafik.

Det er en registreringsfunktion: den registrerer en søgning i forhold til det næste svar, VuGen modtager. Placeret efter anmodningen er der intet tilbage at scanne, og parameteren forbliver tom.

Grænserne stemte ikke overens. Almindelige årsager er uoverensstemmelse mellem store og små bogstaver, en grænse der kun vises på en anden side, eller søgning efter brødtekst, når værdien er placeret i overskrifterne.

Nej. Parameterisering indfører dine egne inputdata i et script fra en datafil. Korrelation registrerer en værdi, som serveren genererer under kørsel, og sender den tilbage. De fleste scripts har brug for begge dele.

Ja, ofte mere af det. Bearer-tokens, CSRF-felter og JSON-identifikatorer ændres hver session, så REST- og enkeltsidestrafik er fuld af kandidater, selv uden en HTML-formular.

Opsummer dette indlæg med: