Correlatie in LoadRunner met web_reg_save_param Voorbeeld

โšก Slimme samenvatting

De correlatiefunctie in LoadRunner legt een dynamische serverwaarde vast, zoals een sessie-ID, en gebruikt deze terug in latere verzoeken, zodat een opgenomen VuGen-script succesvol opnieuw kan worden afgespeeld in plaats van te falen vanwege verouderde gegevens.

  • ๐Ÿ”˜ Definitie: Correlatie koppelt een serverreactie aan elk volgend verzoek dat ervan afhankelijk is.
  • โ˜‘๏ธ Symptoom: Het opnieuw afspelen mislukt wanneer een script een opgenomen sessie-ID retourneert die de server niet langer herkent.
  • โœ… Automatisch: De regels van VuGen en de automatische detectie vergelijken twee herhalingen, maar dekken slechts een klein deel van de gevallen.
  • ๐Ÿงช Handmatig: web_reg_save_param slaat de waarde op die zich tussen een linker- en een rechtergrens bevindt.
  • ๏ธ Plaatsing: Registratiefuncties moeten boven de stap staan โ€‹โ€‹waarvan het antwoord de waarde bevat.
  • ๐Ÿ“Š Afbetalen: Gecorreleerde scripts worden opnieuw afgespeeld met nieuwe gegevens en blijven merkbaar kleiner.

Correlatie in LoadRunner met web_reg_save_param

Wat is correlatie?

Correlatie is, zoals de naam al suggereert, een mechanisme om een โ€‹โ€‹verband tussen twee variabelen of entiteiten te definiรซren. Een woordenboek definieert het als "een statistisch verband tussen twee of meer variabelen, waarbij systematische veranderingen in de ene variabele gepaard gaan met systematische veranderingen in de waarde van de ene variabele".

Merknotitie: dit gereedschap werd uitgebracht als HP en vervolgens Micro Focus LoadRunneren is nu OpenText Professionele prestatietechniekAlle onderstaande correlatiefuncties blijven ongewijzigd en de leverancier schrijft de scriptgenerator voor. VuGen.

Waarom hebben we correlatie nodig?

Laten we de correlatie begrijpen aan de hand van het volgende scenario.

Stel je voor dat je een script opneemt met behulp van LoadRunner.

Client-servercommunicatie tijdens opnames verloopt als volgt, en het diagram vat dit samen:

  1. Tijdens het opnemen stuurt de client een verzoek naar de server om een โ€‹โ€‹sessie te starten.
  2. Een server ontvangt het verzoek en wijst een nieuwe sessie-ID ABC toe
  3. Klant slaat sessie-id ABC op in het script.
  4. De client start de sessie met ID ABC en stuurt een verzoek naar een server om opnames te mogen maken.
  5. De server herkent de ID ABC en stelt de klant in staat het script op te nemen

Uitwisseling van sessie-ID tussen client en server tijdens het opnemen van een LoadRunner-script.

Laten we nu de client-servercommunicatie tijdens het afspelen bestuderen, zoals na deze stappen wordt getoond:

  1. Tijdens Replay stuurt een client een verzoek naar de server om een โ€‹โ€‹sessie te starten
  2. Een server ontvangt het verzoek en wijst een nieuwe sessie-ID XYZ toe
  3. Een client start de sessie met de eerder vastgelegde sessie-ID ABC en stuurt een verzoek naar de server om deze toe te staan โ€‹โ€‹de sessie op te nemen.
  4. Een server kan ID ABC niet identificeren omdat hij ID XYZ verwachtte die hij had toegewezen en de sessie mislukt.

Sessie-ID komt niet overeen tijdens herhaling wanneer correlatie ontbreekt

We hebben een oplossing nodig die de dynamische waarde die tijdens de uitvoering wordt verzonden, kan vastleggen en parseren, en deze waarde vervolgens terugstuurt naar de server. Hieronder ziet u hoe de client-servercommunicatie er met deze oplossing uit zal zien:

  1. Tijdens Replay stuurt een client een verzoek naar de server om een โ€‹โ€‹sessie te starten
  2. Een server ontvangt het verzoek en wijst een nieuwe sessie-ID ZZZ toe
  3. Een klant parseert deze nieuwe sessie-ID ZZZ uit het verzoek.
  4. Een Klant stuurt een verzoek om een โ€‹โ€‹sessie te starten met id ZZZ
  5. Een server herkent de ID ZZZ en stelt de klant in staat het script opnieuw af te spelen

Correlatie die de nieuwe sessie-ID vastlegt en terugstuurt naar de server.

Dit is niets anders dan correlatie.

Het korte filmpje hieronder laat hetzelfde probleem met opnemen en afspelen zien.

Klik hier als de video niet toegankelijk is

Bij VuGen is correlatie een bindende relatie tussen een reactie en een voorafgaand verzoek.

Er zijn verschillende situaties waarin een verzoek is gebaseerd op een eerder ontvangen antwoord van de server, zoals een sessie-ID of een datum en tijd die van de server worden opgehaald. Deze waarden verschillen elke keer dat u een applicatie uitvoert of een script opneemt. Als de uitvoering van het script afhankelijk is van een waarde die door de server wordt geretourneerd, betekent dit dat u een mechanisme moet vinden om het serverantwoord te "vangen" en te koppelen aan de verzoeken die de server verwacht. Dit wordt in LoadRunner doorgaans correlatie genoemd.

In eenvoudige bewoordingen is de oplossing met behulp van correlatie:

  1. Leg de uitvoerwaarde van een stap vast
  2. Gebruik de hierboven vastgelegde waarde als invoer voor alle volgende stappen

Correlatie wordt in VuGen/LoadRunner in 2 categorieรซn ingedeeld:

  • Automatische correlatie
  • Handmatige correlatie

Automatische correlatie

LoadRunner biedt een mechanisme om eenvoudig automatisch correlatie uit te voeren.

VuGen vereist dat u een opgenomen script minstens twee keer uitvoert, zodat het intern de verschillende waarden in het serverantwoord kan vergelijken.

Automatische correlatie kan in 3 categorieรซn worden ingedeeld:

  • Correlatie automatisch detecteren
  • Op regels gebaseerde correlatie
  • Alle uitspraken met elkaar in verband brengen
Regelnaam Wanneer te gebruiken
Correlatie automatisch detecteren Dynamische gegevens detecteren en correleren voor applicatieservers die door LoadRunner worden ondersteund.
Op regels gebaseerd Wordt gebruikt bij het werken met een niet-ondersteunde applicatieserver waarvan de context bekend is.
Correleer alles Helpt alle dynamische gegevens blind te correleren.

Hoewel automatische correlatie eenvoudiger lijkt, kan het foutgevoelig zijn en werkt het in niet meer dan 5% van de gevallen. Het is altijd raadzaam om handmatige correlatie te gebruiken.

Om automatische correlatie op het moment van opname te configureren, voert u onderstaande configuratie uit in Opnametijdinstelling nadat een script is opgenomen.

Klik op Opnemen => Opnameopties (of druk op Ctrl + F7), zoals weergegeven in het onderstaande menu.

Het VuGen-opnamemenu met de optie 'Opnameopties' geselecteerd.

Onderstaand venster wordt geopend:

Het venster 'VuGen Recording Options' toont de configuratieknooppunten voor de opname.

Klik op Correlatie =>Configuratie โ€“ onderstaand venster wordt geopend.

Het configuratievenster voor correlatie toont toepassingsregelsets zoals ASPNET.

Hier moet u alle toepassingen (ASPNET) enz. markeren die in uw onderwerptoepassing worden gebruikt. Aan de rechterkant ziet u de regels die mogelijke kandidaten voor correlatie detecteren, bijvoorbeeld _VIEWSTATE. U kunt ook meer toepassingen of aangepaste regels toevoegen door op de knop Nieuwe regel te klikken.

Je kunt ook op REGELS klikken, dan zie je het onderstaande:

Het paneel Correlatieregels met de beschikbare optie Regels scannen.

Om automatische correlatie te laten werken, moet u ervoor zorgen dat 'Regels scannen' is aangevinkt. Als u op 'Waarden automatisch correleren' klikt, zal VuGen u niet om een โ€‹โ€‹keuze vragen zodra een correlatiekandidaat is gevonden, maar de waarden direct correleren.

We zullen later de API begrijpen die voor correlatie wordt gebruikt. Het is echter raadzaam om HTML-vergelijking te gebruiken in plaats van tekstvergelijking.

Zodra u een regel hebt geselecteerd, klikt u op de knop OK om het venster te sluiten.

Klik op de knop in de werkbalk die hier wordt weergegeven. De VuGen-werkbalkknop wordt gebruikt om het opgenomen script opnieuw te genereren. Selecteer dit in het menu en VuGen genereert het script opnieuw (zonder dat u het hoeft op te nemen) met de nieuwe configuraties. VuGen voegt automatisch de benodigde code toe om de correlatie af te handelen. We zullen het voorbeeld in detail bekijken in het hoofdstuk 'Handmatige correlatie'.

Houd er rekening mee dat als u de correlatie handmatig uitvoert of automatische correlatie gebruikt, het stukje code exact dezelfde syntaxis en functie zal bevatten.

Stappen om een โ€‹โ€‹script automatisch te correleren:

  1. Neem een โ€‹โ€‹script op
  2. Script opnieuw afspelen
  3. Identificeer de waarden die moeten worden gecorreleerd
  4. Selecteer de waarden en klik op de knop voor automatisch correleren
  5. Controleer het script door het opnieuw uit te voeren. Een succesvolle run betekent een succesvolle correlatie.

Tip:

  • Correlatie helpt bij het uitvoeren van uw script met verschillende waarden
  • Correlatie verkleint ook de grootte van uw script

Handmatige correlatie

Handmatige correlatie gaat over het rechtstreeks in uw script schrijven van code om rekening te houden met steeds veranderende waarden. We kunnen het opsplitsen in de onderstaande stappen:

  1. Bepaal de waarde die moet worden vastgelegd
  2. Zoek de rechter- en linkertekstgrenzen van de waarde die moet worden vastgelegd (WEB)
  3. Zoek welk exemplaar van de tekstgrenzen moet worden gebruikt
  4. Voeg een web_reg_save_param-functie toe aan het script, boven het stukje code dat de pagina opvraagt โ€‹โ€‹met de waarde die moet worden vastgelegd
  5. Voeg een parameternaam, linkergrens, rechtergrens en voorkomen toe aan de functie
  6. Parameteriseer de dynamische waarde in het script telkens wanneer deze voorkomt
  7. Controleer de juiste uitvoering
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 Opmerkingen: Beide fragmenten verschijnen exact zoals ze gepubliceerd zijn. Let op de rangtelwoorden: Ord=l en RelFrameId=l Als je een kleine letter l gebruikt, verwacht VuGen het cijfer 1.

Handmatige correlatie kan worden uitgevoerd via VUser Comparison. De stappen in de VUser-vergelijkingsmethode voor correlatie kunnen als volgt worden opgesplitst:

  1. Identificeer dynamische waarden die moeten worden gecorreleerd
  2. Zoek het serverantwoord dat de dynamische waarde bevat.
  3. Leg de dynamische waarde vast in een parameter
  4. Vervang elk exemplaar van de dynamische waarde door de parameter
  5. Wijzigingen verifiรซren

Inzicht in de functie web_reg_save_param

VuGen biedt meerdere functies of API's om kandidaten te correleren, waaronder:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Versie-opmerking: huidige VuGen-releases behandelen web_reg_save_param_ex als opvolger van de oorspronkelijke functie, en web_reg_save_param_regexp als de keuze wanneer de grenzen zelf veranderen. Het oorspronkelijke voorbeeld blijft van kracht.

Hoewel hier een korte introductie wordt gegeven, kunt u voor een gedetailleerd begrip van functies en hun parameters VuGen openen, een functie schrijven (of de Steps Toolbox gebruiken), de cursor op de functie plaatsen en op F1 klikken โ€“ maak uzelf dan vertrouwd met... VuGen-hulp En maak er een gewoonte van. Je zult er veel mee te maken krijgen als je in deze branche werkt.

Hier zijn de functiedetails:

web_reg_save_param(Parameternaam, linkergrens, rechtergrens)

Lijst met attributen

De onderstaande tabel bevat alle attributen die de functie accepteert, of ze verplicht zijn en wat ze aansturen.

Kenmerk Verplicht? Wat het doet
Converteren optioneel HTML_NAAR_URL converteert HTML-gecodeerde gegevens naar een URL-gecodeerd gegevensformaat. HTML_TO_TEXT converteert HTML-gecodeerde gegevens naar platte tekst.
Negeer omleidingen Optioneel, standaard "Omleidingen negeren=Nee" Als deze optie op 'Ja' is ingesteld en het serverantwoord omleidingsinformatie bevat (HTTP-statuscode 300-303, 307), wordt dat antwoord niet doorzocht. Het GET-verzoek gaat naar de omgeleide locatie en de zoekopdracht wordt uitgevoerd op het antwoord vanaf die locatie.
LB Nodig De linkergrens van de parameter of de dynamische gegevens. Als u geen LB-waarde opgeeft, worden alle tekens vanaf het begin van de gegevens als grens gebruikt. Grensparameters zijn hoofdlettergevoelig. Om de zoektekst verder aan te passen, kunt u een of meer tekstvlaggen gebruiken.
NIET GEVONDEN Optioneel, standaardwaarde "fout" Afhandeling wanneer een grens niet wordt gevonden en een lege tekenreeks wordt gegenereerd. "Niet gevonden=fout" genereert een foutmelding. "Niet gevonden=waarschuwing" ("Niet gevonden=leeg" in eerdere versies) stelt in plaats daarvan de parameterteller op 0 en gaat verder, wat ideaal is als u wilt controleren of de tekenreeks is gevonden zonder dat het script vastloopt. Met "Doorgaan bij fout" ingeschakeld, gaat het script door, zelfs bij een "fout", maar dit wordt wel vastgelegd in het uitgebreide logboek.
ORD Optioneel, standaardwaarde 1 Geeft de rangpositie of het instantienummer van de overeenkomst aan. Als u 'Alles' opgeeft, worden de parameterwaarden in een array opgeslagen. Het gebruik van 'Instance' in plaats van 'ORD' wordt ondersteund voor achterwaartse compatibiliteit, maar is verouderd.
RB Nodig De rechtergrens van de parameter of de dynamische gegevens. Als u geen RB-waarde opgeeft, worden alle tekens tot het einde van de gegevens als grens gebruikt. Grensparameters zijn hoofdlettergevoelig. Om de zoektekst verder aan te passen, kunt u een of meer tekstvlaggen gebruiken.
RelFrameID optioneel Het hiรซrarchieniveau van de HTML-pagina ten opzichte van het aangevraagde element. URLDe mogelijke waarden zijn ALL of een getal. RelFrameID wordt niet ondersteund in GUI-scripts.
BewaarLen Optioneel, standaard -1 De lengte van een subtekenreeks van de gevonden waarde, vanaf de opgegeven offset, die in de parameter moet worden opgeslagen. Standaard wordt deze aan het einde van de tekenreeks opgeslagen.
Offset opslaan Optioneel, standaardwaarde 0 De offset van een subtekenreeks van de gevonden waarde, die moet worden opgeslagen in de parameter. De offsetwaarde moet niet-negatief zijn.
Zoeken Optioneel, standaard ALLES Het zoekbereik โ€” waar te zoeken naar de afgebakende gegevens. De mogelijke waarden zijn Headers (alleen zoeken in de headers), Body (alleen zoeken in de body, niet in de headers), No resource (alleen zoeken in de HTML-body, exclusief headers en resources) of ALL (zoeken in body, headers en resources).

Zodra het script probleemloos wordt afgespeeld, voeg je het volgende toe: parameterisering, transacties en runtime-instellingen, voer het uit vanaf de Controlleren lees het resultaat in Analyse als onderdeel van een breder Performance Testing en load Testen.

Veelgestelde vragen

Speel het twee keer opnieuw af met de uitgebreide inloggegevens en vergelijk de reacties. Elke waarde die de server bij elke uitvoering opnieuw genereert โ€” sessie-ID's, tokens, tijdstempels โ€” is een mogelijke kandidaat.

web_reg_save_param komt overeen tussen vaste linker- en rechtergrenzen. web_reg_save_param_regexp Het komt overeen met een reguliere expressie, dus het kan ermee omgaan wanneer de grenzen zelf veranderen.

Ja. Machine learning kan twee herhaalde reacties vergelijken en de velden die veranderen rangschikken, veel sneller dan een handmatige scan. Beschouw de rangschikking als een shortlist die nog steeds door een mens wordt bevestigd.

GitHub-copiloot Het programma genereert de functieaanroep en de bijbehorende argumenten op basis van een commentaar. Omdat het de serverrespons niet kan zien, moet elke voorgestelde grens worden gecontroleerd aan de hand van het daadwerkelijke netwerkverkeer.

Het is een registratiefunctie: het registreert een zoekopdracht voor het volgende antwoord dat VuGen ontvangt. Doordat de functie na het verzoek wordt geplaatst, hoeft er niets meer te worden gescand en blijft de parameter leeg.

De grenzen kwamen niet overeen. Gebruikelijke oorzaken zijn een verschil in hoofdlettergebruik, een grens die alleen op een andere pagina voorkomt, of zoeken in de body terwijl de waarde zich in de kopteksten bevindt.

Nee. Parameterisatie voert je eigen invoergegevens vanuit een gegevensbestand in een script in. Correlatie legt een waarde vast die de server tijdens de uitvoering genereert en geeft deze terug. De meeste scripts hebben beide nodig.

Ja, vaak zelfs meer. Bearer-tokens, CSRF-velden en JSON-identifiers veranderen bij elke sessie, dus REST- en single-page-verkeer zit vol met potentiรซle kandidaten, zelfs zonder HTML-formulier.

Vat dit bericht samen met: