Parametrering, funktioner, transaktioner i LoadRunner
โก Smart sammanfattning
Parametrisering, transaktioner och kรถrtidsinstรคllningar รคr de tre fรถrbรคttringar som fรถrvandlar en vanlig VuGen-inspelning till ett skript som beter sig som en riktig anvรคndare och rapporterar tider du faktiskt kan lita pรฅ.
Ett inspelat skript kan simulera en virtuell anvรคndare; dock kanske en enkel inspelning inte rรคcker fรถr att replikera verkligt anvรคndarbeteende.
Nรคr ett skript spelas in tรคcker det ett enda, rakt flรถde genom den aktuella applikationen. En riktig anvรคndare kan utfรถra flera iterationer av en process innan hen loggar ut. Fรถrdrรถjningen mellan att klicka pรฅ knappar (betรคnketid) varierar frรฅn person till person, och vissa anvรคndare nรฅr din applikation via en snabb anslutning medan andra inte gรถr det. Sรฅ fรถr att fรฅ den verkliga kรคnslan av en slutanvรคndare mรฅste vi fรถrbรคttra vรฅra skript sรฅ att de beter sig mycket likt riktiga anvรคndare.
Det รคr den viktigaste faktorn att beakta nรคr man genomfรถr โPrestandatesterโ, men det finns mer i ett VUser-skript. Hur mรคter man den tid det tar fรถr en VUser medan System Under Load (SUL) testas? Hur vet man om VUsern klarade eller misslyckades vid en viss tidpunkt, och om en backend-process misslyckades eller om serverresurserna fick brist pรฅ tid?
Vi behรถver fรถrbรคttra vรฅrt manus fรถr att kunna besvara alla ovanstรฅende frรฅgor.
Varumรคrkesanmรคrkning: VuGen lanserades som HP, sedan Micro Focus, och รคr nu en del av OpenText Professionell prestandateknikFunktionerna och instรคllningarna nedan รคr ofรถrรคndrade.
Anvรคnda transaktioner
Transaktioner mรคter serverns svarstid fรถr alla operationer. Enkelt uttryckt mรคter en "transaktion" den tid det tar fรถr systemet att svara pรฅ en viss begรคran. Det kan vara sรฅ litet som ett knappklick eller ett AJAX-anrop som utlรถses nรคr en textruta tappar fokus.
Att tillรคmpa transaktioner รคr enkelt. Skriv en rad kod innan begรคran gรถrs och stรคng transaktionen nรคr begรคran avslutas. LoadRunner krรคver bara en strรคng som transaktionsnamn.
Fรถr att รถppna en transaktion, anvรคnd denna kodrad:
lr_start_transaction(โTransaction Nameโ);
Fรถr att avsluta transaktionen, anvรคnd denna kodrad:
lr_end_transaction(โTransaction Nameโ, <status>);
De talar om fรถr LoadRunner om den hรคr transaktionen var framgรฅngsrik eller misslyckad. De mรถjliga parametrarna kan vara:
- LR_AUTO
- LR_PASS
- LR_FAIL
Exempel:
lr_end_transaction(โMy_Loginโ, LR_AUTO); lr_end_transaction(โ001_Opening_Dashboard Nameโ, LR_PASS); lr_end_transaction(โBusiness_Workflow_Transaction Nameโ, LR_FAIL);
Code anteckningar: Utdragen รฅterges exakt som de publicerades, inklusive typografiska citat. Ett riktigt VuGen-skript behรถver raka ASCII-citattecken, sรฅ skriv om dem om du kopierar den hรคr koden.
Poรคng att notera:
- Glรถm inte att du arbetar med "C" och det รคr ett skiftlรคgeskรคnsligt sprรฅk.
- Punkttecknet (.) รคr inte tillรฅtet i ett transaktionsnamn, men du kan anvรคnda mellanslag och understreck.
- Om du har brancherat din kod vรคl och lagt till kontrollpunkter fรถr att verifiera svaret frรฅn servern kan du anvรคnda anpassad felhantering som LR_PASS eller LR_FAIL. Annars kan du anvรคnda LR_AUTO sรฅ hanterar LoadRunner automatiskt serverfel (HTTP 500, 400 etc.).
- Nรคr du tillรคmpar transaktioner, se till att det inte finns nรฅgon betรคnketid inklรคmd, annars kommer din transaktion alltid att inkludera den perioden.
- Eftersom LoadRunner krรคver en konstant strรคng som transaktionsnamn รคr ett vanligt problem vid tillรคmpning av transaktioner att strรคngarna inte stรคmmer รถverens. Om du anger ett annat namn nรคr du รถppnar och stรคnger en transaktion fรฅr du minst tvรฅ felmeddelanden. Transaktionen du รถppnade stรคngdes aldrig, sรฅ LoadRunner ger ett felmeddelande; och transaktionen du fรถrsรถker stรคnga รถppnades aldrig, vilket ger ett andra felmeddelande.
- Bรฅda felen visas i replay-loggen, sรฅ nรคr nรฅgot av dem rapporteras, kontrollera fรถrst transaktionsnamnet pรฅ รถppnings- och stรคngningsrapporterna.
- Eftersom LoadRunner automatiskt hanterar synkronisering av fรถrfrรฅgningar och svar behรถver du inte oroa dig fรถr svaret nรคr du tillรคmpar transaktioner.
Mรถtesplatser, kommentarer och skriptfunktioner
Tre mindre fรถrbรคttringar gรถr att ett skript beter sig och lรคses som produktionskod: mรถtesplatser, kommentarer och funktionslรคsaren som รคr inbyggd i VuGen.
Rendezvous Points
En mรถtesplats รคr en "mรถtesplats". Det รคr en enda sats som anger att LoadRunner ska introducera samtidighet. Du infogar mรถtesplatser i VUser-skript fรถr att emulera hรถg anvรคndarbelastning pรฅ servern.
Mรถtesplatser instruerar en VU-anvรคndare att vรคnta under kรถrningen tills flera VU-anvรคndare anlรคnder till en viss punkt, sรฅ att de kan utfรถra en uppgift samtidigt. Fรถr att till exempel emulera toppbelastning pรฅ en bankserver, infoga en mรถtesplats som instruerar 100 VU-anvรคndare att sรคtta in kontanter samtidigt.
Om mรถtesplatserna inte placeras korrekt kommer V-anvรคndarna att komma รฅt olika delar av applikationen รคven fรถr samma skript. Detta beror pรฅ att varje V-anvรคndare fรฅr olika svarstid och dรคrfรถr halkar nรฅgra anvรคndare efter.
Syntax:
lr_rendezvous(โLogical Nameโ);
Korrigeringsanmรคrkning: den publicerade sidan stavas detta lr_rendesvousDet korrekta funktionsnamnet รคr lr_rendezvous; det felstavade formulรคret kompileras inte.
Bรคsta metoder:
- Prefix en mรถtespunkt med "rdv_" fรถr bรคttre kodlรคsbarhet; t.ex. "rdv_Login"
- Ta bort alla omedelbart intilliggande tanketidsuttryck
- Anvรคnd mรถtesplatser i skriptvyn efter inspelning
Skriptvyn nedan visar en rendezvous-sats infogad i en inspelad รฅtgรคrd:
Kommentarer
Lรคgg till kommentarer fรถr att beskriva en aktivitet, en kodstycke eller en kodrad. Kommentarer hjรคlper till att gรถra koden begriplig fรถr alla som hรคnvisar till den i framtiden. De ger information om en specifik operation och separerar tvรฅ avsnitt fรถr att skilja dem รฅt.
Du kan lรคgga till kommentarer
- Under inspelning (med hjรคlp av verktyget)
- Efter inspelning (skriver direkt i kod)
Bรคsta praxis: markera eventuella kommentarer hรถgst upp i varje skriptfil.
Infoga funktioner via menyn
รven om du kan skriva enkla rader kod direkt kan du behรถva en ledtrรฅd fรถr att komma ihรฅg en funktion. Du kan ocksรฅ anvรคnda Steps Toolbox (kรคnd som Insert Function fรถre version 12) fรถr att hitta och infoga valfri funktion direkt i ditt skript.
Du hittar verktygslรฅdan Steg under Visa โ Stegverktygslรฅda, som visas nedan.
Detta รถppnar ett sidofรถnster. Titta pรฅ รถgonblicksbilden:
Vad รคr parametrisering?
En parameter i VuGen รคr en behรฅllare som innehรฅller ett registrerat vรคrde som ersรคtts fรถr olika anvรคndare.
Under kรถrningen av skriptet (i VuGen eller Regulator), ersรคtter ett vรคrde frรฅn en extern kรคlla (t.ex. en .txt-fil, XML eller en databas) parameterns fรถregรฅende vรคrde.
Parameterisering รคr anvรคndbart fรถr att skicka dynamiska (eller unika) vรคrden till servern. Till exempel kan en affรคrsprocess behรถva kรถra 10 iterationer samtidigt som ett unikt anvรคndarnamn vรคljs varje gรฅng.
Det hjรคlper ocksรฅ till att simulera verkligt beteende mot det aktuella systemet. Ta en titt pรฅ exemplen nedan.
Exempel pรฅ problem:
- En affรคrsprocess fungerar bara fรถr det aktuella datumet, vilket kommer frรฅn servern, sรฅ den kan inte skickas som en hรฅrdkodad begรคran.
- Ibland skickar klientapplikationen ett unikt ID till servern (till exempel session_id) fรถr att processen ska kunna fortsรคtta, รคven fรถr en enskild anvรคndare. I sรฅdana fall hjรคlper parametrisering.
- Ofta lagrar klientapplikationen en cache fรถr data som skickas till och frรฅn servern. Som ett resultat tar servern inte emot verkligt anvรคndarbeteende (dรคr servern kรถr en annan algoritm beroende pรฅ sรถkkriterierna). VUser-skriptet kommer att kรถras utan problem, men prestandastatistiken som ritas kommer inte att vara meningsfull. Att anvรคnda olika data genom parametrisering hjรคlper till att emulera serversidesaktivitet, sรฅsom lagrade procedurer, och trรคnar systemet.
- Ett datum som รคr hรฅrdkodat i VUser under inspelning kanske inte lรคngre รคr giltigt nรคr det datumet har passerat. Att parametrisera datumet gรถr att VUser-kรถrningen lyckas genom att ersรคtta det hรฅrdkodade datumet. Sรฅdana fรคlt eller fรถrfrรฅgningar รคr rรคtt kandidater fรถr parametrisering.
Du skapar en genom att hรถgerklicka pรฅ det inspelade vรคrdet i skriptvyn och vรคlja Ersรคtt med en parameter. VuGen frรฅgar sedan vilken typ som anger vรคrdet:
| Parametertyp | Vรคrde det ger |
|---|---|
| Fil | Vรคrden som lรคses frรฅn en kolumn i en .dat-fil. |
| Bord | Ett block av rader och kolumner samtidigt. |
| Datum / Tid | Aktuellt datum och tid i ett valt format. |
| Slumpmรคssigt nummer | Ett tal frรฅn ett intervall du anger. |
| Unikt nummer | Ett distinkt antal per VUser, frรฅn ett startvรคrde och en blockstorlek. |
| Iterationsnummer | Det aktuella iterationsantalet. |
| Vuser-ID | Identifieraren som tilldelats vid uppspelning. |
| Grupp / Last Generator Namn | VUser-gruppen eller generatormaskinen. |
| XML | Ett fragment frรฅn en XML-datauppsรคttning. |
| Anvรคndardefinierad funktion | Ett vรคrde som returneras av din egen biblioteksfunktion. |
Tvรฅ ytterligare alternativ avgรถr hur data konsumeras รถver iterationer:
| Alternativet | Val | Vad den kontrollerar |
|---|---|---|
| Vรคlj nรคsta rad | Sekventiell, slumpmรคssig, unik | Vilken rad en VUser lรคser hรคrnรคst. |
| Uppdatera vรคrde pรฅ | Varje iteration, Varje fรถrekomst, En gรฅng | Nรคr vรคrdet uppdateras. |
Genomgรฅngen nedan visar parametrisering som tillรคmpas pรฅ ett inspelat skript:
Klicka hรคr. om videon inte รคr tillgรคnglig.
Kรถrtidsinstรคllningar och deras inverkan pรฅ VUser-simulering
Kรถrtidsinstรคllningarna รคr lika viktiga som ditt VuGen-skript. Med varierande konfigurationer kan du fรฅ helt olika testdesigner, vilket รคr anledningen till att inkonsekventa kรถrtidsinstรคllningar รคr den vanliga orsaken till icke-repeterbara resultat. Lรฅt oss diskutera varje attribut ett efter ett.
Kรถr Logic
Run Logic definierar antalet gรฅnger alla รฅtgรคrder kommer att utfรถras, fรถrutom vuser_init och vuser_end.
Detta gรถr det fรถrmodligen tydligare varfรถr LoadRunner fรถreslรฅr keeping all inloggningskod i vuser_init och utloggningsdelen i vuser_end, bรฅda exklusivt.
Om du har skapat flera รฅtgรคrder โ till exempel Logga in, รppna skรคrmen, Berรคkna hyra, Skicka in pengar, Kontrollera saldo och Logga ut โ sรฅ kommer scenariot nedan att intrรคffa fรถr varje V-anvรคndare:
Alla V-anvรคndare loggar in, kรถr รppna skรคrm, Berรคkna hyra, Skicka in medel och Kontrollera saldo, sedan igen รppna skรคrm, Berรคkna hyra och sรฅ vidare, upprepade gรฅnger 10 gรฅnger, fรถljt av utloggning (en gรฅng).
Det hรคr รคr en kraftfull instรคllning som lรฅter skriptet agera mer som en riktig anvรคndare. Kom ihรฅg att en riktig anvรคndare inte loggar in och ut varje gรฅng; de upprepar vanligtvis samma steg.
Hur mรฅnga gรฅnger klickar du pรฅ "inkorg" nรคr du kollar din e-post innan du loggar ut?
pacing
Detta รคr viktigt. De flesta mรคnniskor kan inte fรถrstรฅ skillnaden mellan tempo och tanketid. Den enda skillnaden รคr att tempo syftar pรฅ fรถrdrรถjningen mellan iterationer, medan tanketid รคr fรถrdrรถjningen mellan tvรฅ steg.
Den rekommenderade instรคllningen beror pรฅ testdesignen. Om du dรคremot vill tillรคmpa aggressiv belastning kan du รถvervรคga att vรคlja "Sรฅ snart fรถregรฅende iteration avslutas", som visas nedan.
Logga
En logg, som den allmรคnt fรถrstรฅs, รคr en registrering av alla hรคndelser medan du kรถr LoadRunner. Du kan aktivera loggen fรถr att veta vad som hรคnder mellan din applikation och din server.
LoadRunner erbjuder en kraftfull loggningsmekanism som รคr robust och skalbar i sig sjรคlv. Den lรฅter dig behรฅlla endast en "standardlogg", en detaljerad och konfigurerbar utรถkad logg, eller inaktivera loggning helt och hรฅllet.
En standardlogg รคr informativ och lรคttfรถrstรฅelig. Den innehรฅller precis rรคtt mรคngd information som du vanligtvis behรถver fรถr att felsรถka dina VUser-skript.
Nรคr det gรคller den utรถkade loggen รคr all standardlogginformation en delmรคngd. Dessutom kan du anvรคnda parametersubstitution. Detta anger att LoadRunner-komponenten ska inkludera fullstรคndig information om alla parametrar (frรฅn parameterisering), inklusive fรถrfrรฅgningar och svarsdata.
Om du inkluderar "Data returnerad av servern" kommer din logg att bli lรคngre. Den kommer att inkludera all HTML, taggar, resurser och icke-resursinformation direkt i loggen. Alternativet รคr bara bra om du behรถver seriรถs felsรถkning. Vanligtvis gรถr detta att loggfilen blir vรคldigt stor och svรฅrbegriplig.
Som du kanske gissat vid det hรคr laget, om du vรคljer "Avancerad Traceโ kommer din loggfil att bli enorm. Du mรฅste prova det. Du kommer att mรคrka att den tid det tar fรถr VuGen ocksรฅ รถkar avsevรคrt, รคven om detta inte pรฅverkar transaktionssvarstiden som rapporteras av VuGen. Detta รคr mycket avancerad information, och den รคr bara anvรคndbar om du fรถrstรฅr den aktuella applikationen, klient-till-server-kommunikationen mellan din applikation och hรฅrdvara, samt detaljer pรฅ protokollnivรฅ. Vanligtvis krรคver denna information extrem anstrรคngning att lรคsa och felsรถka.
Tips:
- Oavsett hur lรฅng tid VuGen tar nรคr loggen รคr aktiverad, har det ingen inverkan pรฅ transaktionssvarstiden โ loggningsoverhead exkluderas frรฅn den uppmรคtta tiden.
- Inaktivera loggen om den inte behรถvs.
- Inaktivera loggen nรคr du รคr klar med dina skript. Om du inkluderar skript med loggning aktiverad kommer kontrollenheten att kรถras lรฅngsammare och rapportera irriterande meddelanden.
- Om du inaktiverar loggen รถkar det maximala antalet anvรคndare som du kan simulera frรฅn LoadRunner.
- รvervรคg att anvรคnda โSkicka endast meddelanden nรคr ett fel uppstรฅrโ โ detta tystar onรถdiga informationsmeddelanden och rapporterar endast felrelaterade meddelanden.
Think Times
Think Time รคr helt enkelt fรถrdrรถjningen mellan tvรฅ steg.
Tanketid hjรคlper till att replikera anvรคndarbeteende, eftersom ingen riktig anvรคndare kan anvรคnda en applikation som en maskin. VuGen genererar tanketid automatiskt. Du har fortfarande fullstรคndig kontroll รถver att ta bort, multiplicera eller variera tanketidens varaktighet.
Fรถr att fรถrstรฅ det bรคttre: en anvรคndare kan รถppna en skรคrm (ett svar fรถljt av en fรถrfrรฅgan) och sedan skriva in ett anvรคndarnamn och lรถsenord innan hen trycker pรฅ Enter. Nรคsta interaktion mellan applikationen och servern sker nรคr anvรคndaren klickar pรฅ "Logga in". Tiden det tog fรถr anvรคndaren att skriva in anvรคndarnamnet och lรถsenordet รคr Think Time i LoadRunner.
Om du vill simulera aggressiv belastning pรฅ applikationen, รถvervรคg att inaktivera tรคnketiden helt.
Fรถr att simulera verkligt beteende kan du dock vรคlja "Anvรคnd slumpmรคssig tanketid" och stรคlla in procentsatserna efter รถnskemรฅl.
รvervรคg att anvรคnda Begrรคnsa tanketid fรถr att begrรคnsa den till en legitim period. Vanligtvis รคr 30 sekunder ganska bra.
Hastighetssimulering
Hastighetssimulering hรคnvisar helt enkelt till bandbreddskapaciteten fรถr varje klientmaskin.
Eftersom vi simulerar tusentals V-anvรคndare via LoadRunner รคr det anmรคrkningsvรคrt hur enkel LoadRunner har gjort simuleringen av bandbredd och nรคtverkshastighet.
Om dina kunder anvรคnder din applikation รถver 128 Kbps kan du styra det hรคrifrรฅn. Du kommer att kunna simulera verkligt beteende, vilket bรถr hjรคlpa dig att fรฅ rรคtt prestandastatistik.
Den bรคsta rekommendationen รคr att stรคlla in Anvรคnd maximal bandbredd. Detta hjรคlper dig att ignorera eventuella nรคtverksrelaterade prestandaflaskhalsar och fokusera pรฅ potentiella problem i applikationen fรถrst. Du kan alltid kรถra testet flera gรฅnger fรถr att se varierande beteende under olika omstรคndigheter.
Webblรคsaremulering
Anvรคndarupplevelsen beror inte pรฅ vilken webblรคsare en slutanvรคndare anvรคnder, sรฅ detta ligger till stor del utanfรถr prestandamรฅttens ram. Du kan dock vรคlja vilken webblรคsare du vill emulera, som rutan nedan visar.
Nรคr spelar det egentligen nรฅgon roll vilken webblรคsare man vรคljer i den hรคr konfigurationen?
Du kommer att anvรคnda den hรคr konfigurationen om ditt รคmnesprogram รคr ett webbprogram som returnerar olika svar fรถr olika webblรคsare. Du kan till exempel se olika bilder och innehรฅll fรถr Internet Explorer och Firefox.
En annan viktig instรคllning รคr Simulera webblรคsarcache. Om du vill mรคta svarstiden med cachen aktiverad markerar du den hรคr rutan. Om du letar efter vรคrsta tรคnkbara situationen รคr det uppenbarligen inte en faktor att beakta.
Om du laddar ner icke-HTML-resurser kan LoadRunner ladda ner CSS, JS och andra rikt media. Detta bรถr fรถrbli markerat. Om du vill ta bort det frรฅn din prestandatestdesign kan du avmarkera det.
Proxy
Det รคr bรคst att helt ta bort proxyn frรฅn din Testmiljรถ โ en proxy som sitter i sรถkvรคgen gรถr testresultaten opรฅlitliga. Du kan dock stรถta pรฅ situationer dรคr det รคr oundvikligt. I en sรฅdan situation tillhandahรฅller LoadRunner proxyinstรคllningar.
Du kommer att arbeta (eller borde arbeta) med instรคllningen Ingen proxy. Du kan hรคmta den frรฅn din standardwebblรคsare. Glรถm dock inte att kontrollera vilken webblรคsare som รคr instรคlld som standard och vad proxykonfigurationen fรถr den webblรคsaren รคr.
Om du anvรคnder en proxy och det krรคver autentisering (eller ett skript) kan du klicka pรฅ knappen Autentisera, vilket leder till ett nytt fรถnster. Se skรคrmdumpen nedan.
Anvรคnd den hรคr skรคrmen fรถr att ange ett anvรคndarnamn och lรถsenord fรถr att autentisera dig pรฅ proxyservern. Klicka pรฅ OK fรถr att stรคnga skรคrmen.
Grattis. Du รคr klar med att konfigurera ditt VuGen-skript. Glรถm inte att konfigurera det fรถr alla dina VUser-skript.
Nรคsta kommer korrelation, kรถr scenariot i Regulator, och lรคsning resulterar i LoadRunner-analys. Se LoadRunner-arkitektur och Lasttestning guider.











