Correlatie in LoadRunner met voorbeeld Web_Reg_Save_Param

Wat is correlatie?

Correlatie is, zoals de naam al doet vermoeden, een mechanisme voor het definiëren van een relatie tussen twee variabelen of entiteiten. A Dictionary definieert het als “een statistische relatie tussen twee of meer variabelen, zodat systematische veranderingen in de andere gepaard gaan met systematische veranderingen in de waarde van één variabele”.

Waarom hebben we correlatie nodig?

Laten we de correlatie met het volgende scenario eens bekijken.

Stel dat u een script opneemt met LoadRunner.

Client-servercommunicatie

  1. Tijdens Record 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. Client start de sessie met ID ABC en stuurt een verzoek naar een server om opname mogelijk te maken
  5. De server herkent de ID ABC en stelt de klant in staat het script op te nemen

Correlatie tijdens opname

  1. Laten we nu de client-server-communicatie tijdens het afspelen bestuderen
  2. Tijdens Replay stuurt een client een verzoek naar de server om een ​​sessie te starten
  3. Een server ontvangt het verzoek en wijst een nieuwe sessie-ID XYZ toe
  4. Een cliënt start de sessie met eerder opgenomen sessie-ID ABC en stuurt een verzoek naar de server om opname toe te staan
  5. Een server kan ID ABC niet identificeren omdat hij ID XYZ verwachtte die hij had toegewezen en de sessie mislukt.

Correlatie tijdens opnieuw afspelen

We hebben een oplossing nodig die de dynamische waarde die tijdens runtime wordt verzonden, kan parseren en deze waarde terug kan sturen naar de server. Hier ziet u hoe de client-server-communicatie 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

We hebben correlatie nodig

Dit is niets anders dan correlatie.

Klik hier als de video niet toegankelijk is

Bij VUGen is correlatie een bindende relatie tussen een antwoord en een eventueel voorafgaand verzoek.

Er zijn verschillende situaties waarin een verzoek is gebaseerd op een eerder ontvangen antwoord van de server, zoals een sessie-ID, serverdatum/-tijd die van de server wordt opgehaald. Deze waarden zijn elke keer anders als u een toepassing uitvoert of een script opneemt. Als de uitvoering van het script afhangt van een waarde die door de server wordt geretourneerd, betekent dit uiteraard dat je een mechanisme moet vinden waarmee je de reactie van de server kunt 'vangen' en kunt 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 minimaal twee keer uitvoert, zodat het intern de variërende waarden in de serverreactie 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 Detecteer en correleer dynamische gegevens voor applicatieservers die worden ondersteund door HP LoadRunner
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 klik op Ctrl +F7),

Automatische correlatie

Onderstaand venster wordt geopend:

Automatische correlatie

Klik op Correlatie =>Configuratie – onderstaand venster wordt geopend.

Automatische correlatie

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:

Automatische correlatie

Om automatische correlatie te laten werken, moet u ervoor zorgen dat Regelscan als aangevinkt is gemarkeerd. Als u klikt op gevonden waarden automatisch correleren, zal VUGen u niet om de keuze vragen zodra een correlatiekandidaat is gevonden, maar deze alleen 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 Automatische correlatieuit menu en VUGen zal het script opnieuw genereren (zonder te hoeven opnemen) met nieuwe configuraties. VUGen voegt automatisch een benodigd stukje code toe om de correlatie af te handelen. We zullen het voorbeeld in meer detail bekijken in 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);

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 antwoord van Servers met de dynamische waarde
  3. Leg de dynamische waarde vast in een parameter
  4. Vervang elk exemplaar van de dynamische waarde door de parameter
  5. Wijzigingen verifiëren

De Web_reg_save_param-functie begrijpen

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

Hoewel hier een korte introductie wordt gegeven, voor een gedetailleerd begrip van functies en hun parameters, open VUGen, schrijf functie (of gebruik Steps Toolbox), beweeg een cursor op de functie en klik op F1 – maak uzelf vertrouwd met VUGen-hulp en maak er een gewoonte van. U zult er veel mee te maken krijgen als u in de industrie werkt.

Hier zijn de functiedetails:

web_reg_save_param(Parameternaam, linkergrens, rechtergrens)

Lijst met attributen

Zetten: De mogelijke waarden zijn:

HTML_TO_URL: converteer HTML-gecodeerde gegevens naar een URL-gecodeerd gegevensformaat

HTML_TO_TEXT: converteer HTML-gecodeerde gegevens naar platte tekst; dit attribuut is optioneel.

Negeer omleidingen: Als “Omleidingen negeren=Ja” is opgegeven en het serverantwoord bestaat uit omleidingsinformatie (HTTP-statuscode 300-303, 307), wordt er niet naar het antwoord gezocht. In plaats daarvan wordt het GET-verzoek na ontvangst van een omleidingsantwoord naar de omgeleide locatie verzonden en wordt er gezocht naar het antwoord van die locatie.

Dit attribuut is optioneel. De standaardinstelling is “Negeer omleidingen=Nee”.

LB: 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, gebruikt u een of meer tekstvlaggen. Dit attribuut is vereist. Zie het gedeelte Grensargumenten.

NIET GEVONDEN: De afhandelingsoptie wanneer er geen grens wordt gevonden en er een lege string wordt gegenereerd.

“Niet gevonden=fout”, de standaardwaarde, zorgt ervoor dat er een fout optreedt wanneer er geen grens wordt gevonden.

“Niet gevonden=waarschuwing” (“Niet gevonden=leeg” in eerdere versies) geeft geen foutmelding. Als de grens niet wordt gevonden, wordt het aantal parameters ingesteld op 0 en wordt het script voortgezet. De optie ‘waarschuwing’ is ideaal als je wilt zien of de string is gevonden, maar je wilt niet dat het script mislukt.

Note: Als Doorgaan bij fout is ingeschakeld voor het script, gaat het script door, zelfs als NOTFOUND is ingesteld op "fout", wanneer de grens niet wordt gevonden, maar wordt er een foutmelding naar het uitgebreide logbestand geschreven.

Dit kenmerk is ook optioneel.

ORD: Geeft de ordinale positie of instantie van de wedstrijd aan. De standaardinstantie is 1. Als u 'All' opgeeft, worden de parameterwaarden in een array opgeslagen. Dit attribuut is optioneel.

Opmerking: het gebruik van Instance in plaats van ORD wordt ondersteund voor achterwaartse compatibiliteit, maar is verouderd.

RB: 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, gebruikt u een of meer tekstvlaggen. Dit attribuut is vereist. Zie het gedeelte Grensargumenten.

RelFrameID: Het hiërarchieniveau van de HTML-pagina ten opzichte van de gevraagde URL. De mogelijke waarden zijn ALL of een getal. Klik op het RelFrameID-kenmerk voor een gedetailleerde beschrijving. Dit attribuut is optioneel.

Opmerking: RelFrameID wordt niet ondersteund in scripts op GUI-niveau.

BewaarLen: De lengte van een subtekenreeks van de gevonden waarde, vanaf de opgegeven offset, die in de parameter moet worden opgeslagen. Dit attribuut is optioneel. De standaardwaarde is -1, wat aangeeft dat er tot het einde van de tekenreeks moet worden opgeslagen.

Offset opslaan: De offset van een subreeks van de gevonden waarde, die in de parameter moet worden opgeslagen. De offsetwaarde mag niet negatief zijn. De standaardwaarde is 0. Dit attribuut is optioneel.

Zoeken: De reikwijdte van de zoekopdracht: waar moet worden gezocht naar de gescheiden gegevens. De mogelijke waarden zijn Headers (doorzoek alleen de headers), Body (zoek alleen body-gegevens, geen headers), No resource (doorzoek alleen de HTML-body, met uitzondering van alle headers en bronnen), of ALLE (zoektekst, kopteksten en bronnen). De standaardwaarde is ALLES. Dit kenmerk is optioneel, maar heeft over het algemeen de voorkeur.