Parametrisierung, Funktionen, Transaktionen in LoadRunner
Ein aufgezeichnetes Skript kann einen virtuellen Benutzer simulieren; Allerdings reicht eine bloรe Aufzeichnung mรถglicherweise nicht aus, um das โechte Nutzerverhaltenโ nachzubilden.
Wenn ein Skript aufgezeichnet wird, deckt es den einzelnen und direkten Ablauf der betreffenden Anwendung ab. Ein echter Benutzer hingegen kann mehrere Iterationen eines beliebigen Prozesses durchfรผhren, bevor er sich abmeldet. Die Verzรถgerung zwischen dem Klicken auf Schaltflรคchen (Denkzeit) ist von Person zu Person unterschiedlich. Es besteht die Mรถglichkeit, dass einige echte Benutzer รผber DSL auf Ihre Anwendung zugreifen und andere รผber eine Einwahlverbindung. Um also das wirkliche Gefรผhl eines Endbenutzers zu vermitteln, mรผssen wir unsere Skripte so verbessern, dass sie exakt mit denen echter Benutzer รผbereinstimmen oder sich zumindest im Verhalten sehr รคhnlich verhalten.
Das Obige ist die wichtigste รberlegung bei der Durchfรผhrung von โPerformance Testingโ, aber zu einem VU-Skript gehรถrt noch mehr. Wie kรถnnen Sie die genaue Zeit einschรคtzen, die ein VUser benรถtigt, wenn SUL einen Leistungstest durchlรคuft? Wie kรถnnen Sie wissen, ob der VUser an einem bestimmten Punkt erfolgreich war oder ausgefallen ist? Was ist die Ursache fรผr den Fehler, ob ein Backend-Prozess fehlgeschlagen ist oder die Serverressourcen begrenzt waren?
Wir mรผssen unser Skript verbessern, um alle oben genannten Fragen zu beantworten.
Verwenden von Transaktionen
Transaktionen sind Mechanismen zum Messen der Serverantwortzeit fรผr beliebige Vorgรคnge. Einfach ausgedrรผckt hilft die Verwendung von โTransaktionenโ dabei, die Zeit zu messen, die das System fรผr eine bestimmte Anforderung benรถtigt. Dabei kann es sich um so etwas Kleines wie einen Klick auf eine Schaltflรคche oder einen AJAX-Aufruf handeln, wenn der Fokus vom Textfeld abweicht.
Das Anwenden von Transaktionen ist unkompliziert. Schreiben Sie einfach eine Codezeile, bevor eine Anfrage an den Server gestellt wird, und schlieรen Sie die Transaktion, wenn die Anfrage endet. LoadRunner benรถtigt lediglich einen String als Transaktionsnamen.
Um eine Transaktion zu erรถffnen, verwenden Sie diese Codezeile:
lr_start_transaction(โTransaction Nameโ);
Um die Transaktion abzuschlieรen, verwenden Sie diese Codezeile:
lr_end_transaction(โTransaction Nameโ, <status>);
Der teilt LoadRunner mit, ob diese bestimmte Transaktion erfolgreich oder nicht erfolgreich war. Die mรถglichen Parameter kรถnnten sein:
- LR_AUTO
- LR_PASS
- LR_FAIL
Ejemplo:
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);
Punkte zu beachten:
- Vergessen Sie nicht, dass Sie mit โCโ arbeiten und dass es sich dabei um eine Sprache handelt, bei der die Groร-/Kleinschreibung beachtet wird.
- Das Zeichen โPunktโ (.) ist im Transaktionsnamen nicht zulรคssig, Sie kรถnnen jedoch Leerzeichen und Unterstriche verwenden.
- Wenn Sie Ihren Code gut verzweigt und Prรผfpunkte hinzugefรผgt haben, um die Antwort vom Server zu รผberprรผfen, kรถnnen Sie eine benutzerdefinierte Fehlerbehandlung wie LR_PASS oder LR_FAIL verwenden. Andernfalls kรถnnen Sie LR_AUTO verwenden und LoadRunner behandelt Serverfehler (HTTP 500, 400 usw.) automatisch.
- Stellen Sie beim Anwenden von Transaktionen sicher, dass keine vorhanden sind Denkzeit Die Abrechnung muss eingefรผgt werden, andernfalls wird Ihre Transaktion immer diesen Zeitraum umfassen.
- Da LoadRunner eine konstante Zeichenfolge als Transaktionsnamen erfordert, besteht ein hรคufiges Problem bei der Anwendung einer Transaktion darin, dass die Zeichenfolge nicht รผbereinstimmt. Wenn Sie beim รffnen und Schlieรen einer Transaktion einen anderen Namen angeben, treten mindestens zwei Fehler auf. Da die von Ihnen geรถffnete Transaktion nie geschlossen wurde, gibt LoadRunner einen Fehler aus. Auรerdem wurde die Transaktion, die Sie schlieรen mรถchten, nie geรถffnet, was zu einem Fehler fรผhrte.
- Kannst du deinen Verstand einsetzen und dir selbst beantworten, welcher der oben genannten Fehler zuerst gemeldet wird? Um deine Antwort zu รผberprรผfen, kรถnntest du selbst einen Fehler machen. Wenn du richtig geantwortet hast, bist du auf der richtigen Seite. track. Falls du falsch geantwortet hast, musst du dich konzentrieren.
- Da LoadRunner automatisch die Synchronisierung von Anfragen und Antworten รผbernimmt, mรผssen Sie sich beim Anwenden von Transaktionen keine Gedanken รผber die Antworten machen.
Denkzeit, Treffpunkte und Kommentare verstehen
Treffpunkte
Rendezvous Points bedeutet โTreffpunkteโ. Es ist nur eine Anweisungszeile, die LoadRunner anweist, Parallelitรคt einzufรผhren. Sie fรผgen Rendezvous-Punkte in VUser-Skripte ein, um eine hohe Benutzerlast auf dem Server zu emulieren.
Rendezvous-Punkte weisen VUser an, wรคhrend der Testausfรผhrung darauf zu warten, dass mehrere VUser an einem bestimmten Punkt ankommen, damit sie gleichzeitig eine Aufgabe ausfรผhren kรถnnen. Um beispielsweise Spitzenlasten auf dem Bankserver nachzubilden, kรถnnen Sie einen Treffpunkt einfรผgen, der 100 VUser anweist, gleichzeitig Bargeld auf ihre Konten einzuzahlen. Dies lรคsst sich ganz einfach mit Rendezvous erreichen.
Wenn die Rendezvous-Punkte nicht korrekt platziert sind, greift der VUser auf verschiedene Teile der Anwendung zu โ sogar fรผr dasselbe Skript. Dies liegt daran, dass jeder VUser unterschiedliche Reaktionszeiten erhรคlt und daher nur wenige Benutzer hinterherhinken.
Syntax: lr_rendesvous(โLogischer Nameโ);
Best Practices:
- Stellen Sie einem Rendezvous-Punkt โrdv_โ voran, um die Lesbarkeit des Codes zu verbessern. zB โrdv_Loginโ
- Entfernen Sie alle Anweisungen zur unmittelbaren Bedenkzeit
- Anwenden von Rendezvouspunkten in einer Skriptansicht (nach der Aufzeichnung)
Kommentare
Fรผgen Sie Kommentare hinzu, um eine Aktivitรคt, einen Codeabschnitt oder eine Codezeile zu beschreiben. Kommentare helfen dabei, den Code fรผr jeden verstรคndlich zu machen, der in Zukunft darauf zurรผckgreift. Sie liefern Informationen zu bestimmten Vorgรคngen und trennen zwei Abschnitte zur Unterscheidung.
Sie kรถnnen Kommentare hinzufรผgen
- Wรคhrend der Aufnahme (mit Werkzeug)
- Nach der Aufnahme (direktes Schreiben im Code)
Best Practice: Markieren Sie alle Kommentare oben in jeder Skriptdatei
Einfรผgen von Funktionen รผber das Menรผ
Wรคhrend Sie einfache Codezeilen direkt schreiben kรถnnen, benรถtigen Sie mรถglicherweise einen Hinweis, um eine Funktion abzurufen. Sie kรถnnen auch die Steps Toolbox (vor Version 12 als Insert Function bekannt) verwenden, um jede Funktion zu suchen und direkt in Ihr Skript einzufรผgen.
Sie finden die Steps-Symbolleiste unter โAnsichtโ ร โSteps-Toolboxโ.
Dadurch wird ein Seitenfenster geรถffnet. Sehen Sie sich den Schnappschuss an:
Was ist Parametrisierung?
A Parameter In VUGen handelt es sich um einen Container, der einen aufgezeichneten Wert enthรคlt, der fรผr verschiedene Benutzer ersetzt wird.
Wรคhrend der Ausfรผhrung des Skripts (in VUGen oder Controller) ersetzt der Wert aus einer externen Quelle (wie .txt, XML oder Datenbank) den vorherigen Wert des Parameters.
Die Parametrisierung ist beispielsweise nรผtzlich, um dynamische (oder eindeutige) Werte an den Server zu senden. Ein Geschรคftsprozess soll 10 Iterationen ausfรผhren, dabei aber jedes Mal einen eindeutigen Benutzernamen auswรคhlen.
Es hilft auch dabei, ein realitรคtsnahes Verhalten des Subjektsystems zu stimulieren. Schauen Sie sich das folgende Beispiel an:
Problembeispiele:
Der Geschรคftsprozess funktioniert nur fรผr das aktuelle Datum, das vom Server kommt, und kann daher nicht als fest codierte Anfrage รผbergeben werden.
Manchmal รผbergibt die Clientanwendung eine eindeutige ID an den Server (z. B. session_id), damit der Prozess fortgesetzt werden kann (auch fรผr einen einzelnen Benutzer). In einem solchen Fall hilft die Parametrisierung.
Hรคufig verwaltet die Clientanwendung einen Cache mit Daten, die an und von dem Server gesendet werden. Infolgedessen empfรคngt der Server kein echtes Benutzerverhalten (falls der Server je nach Suchkriterium einen anderen Algorithmus ausfรผhrt). Wรคhrend das VUser-Skript erfolgreich ausgefรผhrt wird, sind die erstellten Leistungsstatistiken nicht aussagekrรคftig. Die Verwendung unterschiedlicher Daten durch Parametrisierung hilft dabei, serverseitige Aktivitรคten (Prozeduren usw.) zu emulieren und das System zu trainieren.
Ein Datum, das wรคhrend der Aufzeichnung im VUser fest codiert wird, ist mรถglicherweise nicht mehr gรผltig, wenn dieses Datum รผberschritten ist. Durch die Parametrisierung des Datums kann die VUser-Ausfรผhrung erfolgreich ausgefรผhrt werden, indem das fest codierte Datum ersetzt wird. Solche Felder oder Anfragen sind die richtigen Kandidaten fรผr die Parametrisierung.
Klicken Sie auf werden auf dieser Seite erlรคutert wenn das Video nicht zugรคnglich ist
Laufzeiteinstellungen und ihre Auswirkungen auf die VU-Simulation
Laufzeiteinstellungen sind genauso wichtig wie Ihr VUGen-Skript. Durch unterschiedliche Konfigurationen kรถnnen Sie unterschiedliche Testdesigns erhalten. Aus diesem Grund kann es zu nicht wiederholbaren Ergebnissen kommen, wenn die Laufzeiteinstellungen nicht konsistent sind. Lassen Sie uns jedes Attribut einzeln besprechen.
Fรผhren Sie Logic aus
Run Logic definiert die Hรคufigkeit, mit der alle Aktionen auรer vuser_init und vuser_end ausgefรผhrt werden.
Dies macht vermutlich deutlicher, warum LoadRunner empfiehlt, kee zu verwenden.ping Der gesamte Login-Code befindet sich in vuser_init, der Logout-Teil in vuser_end, jeweils separat.
Wenn Sie mehrere Aktionen erstellt haben, beispielsweise โAnmeldenโ, โBildschirm รถffnenโ, โMiete berechnenโ, โGeld einreichenโ, โKontostand prรผfenโ und โAbmeldenโ, dann findet fรผr jeden VUser das folgende Szenario statt:
Alle V-Benutzer melden sich an, fรผhren โBildschirm รถffnenโ, โMiete berechnenโ, โMittel einreichenโ, โGuthaben prรผfenโ aus โ und dann โ erneut โBildschirm รถffnenโ, โMieten berechnenโ usw. โ zehnmal iterierend โ gefolgt von der Abmeldung (einmal).
Dies ist eine leistungsstarke Einstellung, die es ermรถglicht, sich eher wie ein echter Benutzer zu verhalten. Denken Sie daran, dass sich ein echter Benutzer nicht jedes Mal an- und abmeldet โ er wiederholt normalerweise dieselben Schritte.
Wie oft klicken Sie beim รberprรผfen Ihrer E-Mails auf โPosteingangโ, bevor Sie sich abmelden?
Pacing
Das ist wichtig. Die meisten Menschen sind nicht in der Lage, den Unterschied zwischen Tempo und Bedenkzeit zu verstehen. Der einzige Unterschied besteht darin, โPacing bezieht sich auf die Verzรถgerung zwischen Iterationenโ, wรคhrend die Denkzeit die Verzรถgerung zwischen zwei beliebigen Schritten ist.
Die empfohlene Einstellung hรคngt vom Testdesign ab. Wenn Sie jedoch eine aggressive Auslastung wรผnschen, sollten Sie die Option โSobald die vorherige Iteration endetโ in Betracht ziehen.
Log
Ein Logbuch (im allgemeinen Verstรคndnis) ist ein Buchhalter.ping Alle Ereignisse wรคhrend der Ausfรผhrung von LoadRunner werden protokolliert. Sie kรถnnen die Protokollierung aktivieren, um zu erfahren, was zwischen Ihrer Anwendung und Ihrem Server vor sich geht.
LoadRunner bietet einen leistungsstarken Protokollierungsmechanismus, der eigenstรคndig robust und skalierbar ist. Es ermรถglicht Ihnen, nur das โStandardprotokollโ oder ein detailliertes, konfigurierbares erweitertes Protokoll zu fรผhren oder es ganz zu deaktivieren.
Ein Standardprotokoll ist informativ und leicht verstรคndlich. Es enthรคlt genau die Menge an Wissen, die Sie im Allgemeinen fรผr die Fehlerbehebung Ihrer VUser-Skripte benรถtigen.
Im Fall des erweiterten Protokolls sind alle Standardprotokollinformationen eine Teilmenge. Darรผber hinaus ist eine Parameterersetzung mรถglich. Dadurch wird die LoadRunner-Komponente angewiesen, vollstรคndige Informationen zu allen Parametern (aus der Parametrisierung), einschlieรlich Anforderungen, sowie Antwortdaten einzuschlieรen.
Wenn Sie โVom Server zurรผckgegebene Datenโ angeben, wird Ihr Protokoll lรคnger. Dazu gehรถren alle HTML-, Tags-, Ressourcen- und Nicht-Ressourcen-Informationen, die direkt im Protokoll enthalten sind. Die Option ist nur dann sinnvoll, wenn Sie eine ernsthafte Fehlerbehebung benรถtigen. Normalerweise ist die Protokolldatei dadurch sehr groร und nicht leicht verstรคndlich.
Wie Sie sich inzwischen sicher schon gedacht haben, wenn Sie sich fรผr โAdvanceโ entscheiden TracWenn Sie โeโ eingeben, wird Ihre Protokolldatei riesig sein. Sie sollten es unbedingt ausprobieren. Sie werden feststellen, dass sich die von VUGen benรถtigte Zeit ebenfalls deutlich erhรถht hat, obwohl dies keinen Einfluss auf die von VUGen gemeldete Transaktionsantwortzeit hat. Dies sind jedoch sehr fortgeschrittene Informationen und mรถglicherweise nรผtzlich, wenn Sie die betreffende Anwendung, die Client-Server-Kommunikation zwischen Ihrer Anwendung und der Hardware sowie Details auf Protokollebene verstehen. Normalerweise sind diese Informationen praktisch wertlos, da ihr Verstรคndnis und ihre Fehlerbehebung einen erheblichen Aufwand erfordern.
Tipps:
- Unabhรคngig davon, wie viel Zeit VUGen benรถtigt, wenn das Protokoll aktiviert ist, hat es keinen Einfluss auf die Reaktionszeit der Transaktion. HP bezeichnet dieses Phรคnomen als โmodernste Technologieโ.
- Deaktivieren Sie das Protokoll, wenn es nicht erforderlich ist.
- Deaktivieren Sie das Protokoll, wenn Sie mit Ihren Skripten fertig sind. Das Einbinden von Skripten mit aktivierter Protokollierung fรผhrt dazu, dass der Controller langsamer lรคuft und stรถrende Meldungen meldet.
- Durch das Deaktivieren des Protokolls wird die Kapazitรคt der maximalen Anzahl von Benutzern erhรถht, die Sie von LoadRunner aus simulieren kรถnnen.
- Erwรคgen Sie die Verwendung von โNachricht nur senden, wenn ein Fehler auftrittโ โ dadurch werden unnรถtige Informationsmeldungen stummgeschaltet und nur fehlerbezogene Meldungen gemeldet.
Denken Sie mal nach
Die Denkzeit ist einfach die Verzรถgerung zwischen zwei Schritten.
Think Time hilft bei der Replikation des Benutzerverhaltens, da kein echter Benutzer eine Anwendung wie eine Maschine (VUGen) verwenden kann. VUGen generiert automatisch Denkzeit. Sie haben weiterhin die vollstรคndige Kontrolle darรผber, wie Sie die Bedenkzeit entfernen, vervielfachen oder variieren kรถnnen.
Um mehr zu verstehen, kann ein Benutzer beispielsweise einen Bildschirm รถffnen (das ist eine Antwort, gefolgt von einer Anfrage) und dann seinen Benutzernamen und sein Passwort eingeben, bevor er die Eingabetaste drรผckt. Die nรคchste Interaktion der Anwendung mit dem Server erfolgt, wenn er auf โAnmeldenโ klickt. Die Zeit, die ein Benutzer fรผr die Eingabe seines Benutzernamens und Passworts benรถtigte, ist in LoadRunner die Denkzeit.
Wenn Sie eine aggressive Belastung der Anwendung simulieren mรถchten, sollten Sie die Bedenkzeit vollstรคndig deaktivieren.
Um jedoch ein echtes รคhnliches Verhalten zu simulieren, kรถnnen Sie โZufรคllige Denkzeit des Benutzersโ wรคhlen und die Prozentsรคtze wie gewรผnscht festlegen.
Erwรคgen Sie, die Bedenkzeit auf einen legitimen Zeitraum zu begrenzen. Normalerweise reichen 30 Sekunden vรถllig aus.
Geschwindigkeitssimulation
Die Geschwindigkeitssimulation bezieht sich einfach auf die Bandbreitenkapazitรคt fรผr jeden Client-Computer.
Da wir Tausende von VUsern รผber LoadRunner simulieren, ist es erstaunlich, wie einfach LoadRunner die Steuerung der Bandbreiten-/Netzwerkgeschwindigkeitssimulation gemacht hat.
Wenn Ihre Kunden รผber 128 Kbit/s auf Ihre Anwendung zugreifen, kรถnnen Sie diese von hier aus steuern. Sie kรถnnen ein โechtes Verhaltenโ simulieren, was dabei helfen soll, die richtigen Leistungsstatistiken zu erhalten.
Die beste Empfehlung ist die Einstellung โMaximale Bandbreite verwendenโ. Dies hilft dabei, netzwerkbezogene Leistungsengpรคsse zu ignorieren und sich zunรคchst auf potenzielle Probleme in der Anwendung zu konzentrieren. Sie kรถnnen den Test jederzeit mehrmals ausfรผhren, um unterschiedliches Verhalten unter verschiedenen Umstรคnden festzustellen.
Browser-Emulation
Die Benutzererfahrung hรคngt nicht vom Browser ab, den ein Endbenutzer verwendet. Dies liegt eindeutig auรerhalb des Rahmens von Leistungsmessungen. Sie kรถnnen jedoch auswรคhlen, welchen Browser Sie emulieren mรถchten.
Kรถnnen Sie sich selbst sagen, wann genau es fรผr Sie in dieser Konfiguration wirklich darauf ankommt, den richtigen Browser auszuwรคhlen?
Sie verwenden diese Konfiguration, wenn es sich bei Ihrer Subjektanwendung um eine Webanwendung handelt, die fรผr verschiedene Browser unterschiedliche Antworten zurรผckgibt. Beispielsweise kรถnnen Sie verschiedene Bilder und Inhalte fรผr IE und sehen Firefox usw.
Eine weitere wichtige Einstellung ist Browser-Cache simulieren. Wenn Sie die Reaktionszeit bei aktiviertem Cache messen mรถchten, aktivieren Sie dieses Kontrollkรคstchen. Wenn Sie nach dem Worst-Case-Szenario suchen, spielt dies natรผrlich keine Rolle.
Durch das Herunterladen von Nicht-HTML-Ressourcen kann LoadRunner alle CSS-, JS- und anderen Rich Media-Inhalte herunterladen. Dies sollte รผberprรผft bleiben. Wenn Sie dies jedoch aus Ihrem Leistungstestdesign entfernen mรถchten, kรถnnen Sie dies deaktivieren.
Proxy
Es ist am besten, den Proxy vollstรคndig von Ihrem Computer zu entfernen Test Umgebung โ Dadurch werden die Testergebnisse unzuverlรคssig. Es kann jedoch vorkommen, dass Sie mit Situationen konfrontiert werden, in denen dies unvermeidlich ist. In einer solchen Situation erleichtert Ihnen LoadRunner die Proxy-Einstellungen.
Sie arbeiten (oder sollten arbeiten) mit der Einstellung โKein Proxyโ. Sie kรถnnen es รผber Ihren Standardbrowser abrufen. Vergessen Sie jedoch nicht zu prรผfen, welcher Browser als Standard eingestellt ist und welche Proxy-Konfiguration fรผr den Standardbrowser vorliegt.
Wenn Sie einen Proxy verwenden und dieser eine Authentifizierung (oder ein Skript) erfordert, kรถnnen Sie auf die Schaltflรคche โAuthentifizierenโ klicken, die zu einem neuen Fenster fรผhrt. Siehe Screenshot unten.
Verwenden Sie diesen Bildschirm, um Benutzernamen und Passwort einzugeben, um sich auf dem Proxyserver authentifizieren zu lassen. Klicken Sie auf OK, um den Bildschirm zu schlieรen.
Glรผckwunsch. Sie sind mit der Konfiguration Ihres VUGen-Skripts fertig. Vergessen Sie nicht, es fรผr alle Ihre VUser-Skripte zu konfigurieren.











