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)

Treffpunkte

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โ€œ.

Einfรผgen von Funktionen รผber das Menรผ

Dadurch wird ein Seitenfenster geรถffnet. Sehen Sie sich den Schnappschuss an:

Einfรผgen von Funktionen รผber das Menรผ

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).

Fรผhren Sie Logic aus

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.

Pacing

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.

Log

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.

Denken Sie mal nach

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.

Geschwindigkeitssimulation

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.

Browser-Emulation

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.

Proxy

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.

Proxy

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.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: