Korrelation in LoadRunner mit Web_Reg_Save_Param-Beispiel

Was ist Korrelation?

Korrelation ist, wie der Name schon sagt, ein Mechanismus zur Definition einer Beziehung zwischen zwei Variablen oder Entitäten. Ein Wörterbuch definiert es als „statistische Beziehung zwischen zwei oder mehr Variablen, so dass systematische Änderungen in der anderen mit systematischen Änderungen im Wert einer Variablen einhergehen“.

Warum brauchen wir Korrelation?

Lassen Sie uns den Zusammenhang anhand des folgenden Szenarios verstehen.

Stellen Sie sich vor, Sie zeichnen ein Skript mit LoadRunner auf.

Client-Server-Kommunikation

  1. Während der Aufnahme sendet der Client eine Anfrage an den Server, um eine Sitzung zu starten
  2. Ein Server empfängt die Anfrage und weist eine neue Sitzungs-ID ABC zu
  3. Der Client speichert die Sitzungs-ID ABC im Skript.
  4. Der Client startet die Sitzung mit der ID ABC und sendet eine Anfrage an einen Server, um die Aufzeichnung zu ermöglichen
  5. Der Server erkennt die ID ABC und ermöglicht dem Client die Aufzeichnung des Skripts

Korrelation während der Aufnahme

  1. Schauen wir uns nun die Client-Server-Kommunikation während der Wiedergabe an
  2. Während der Wiedergabe sendet ein Client eine Anfrage an den Server, um eine Sitzung zu starten
  3. Ein Server empfängt die Anfrage und weist eine neue Sitzungs-ID XYZ zu
  4. Ein Client startet die Sitzung mit der zuvor aufgezeichneten Sitzungs-ID ABC und sendet eine Anfrage an den Server, um die Aufzeichnung zu ermöglichen
  5. Ein Server kann die ID ABC nicht identifizieren, da er die von ihm zugewiesene ID XYZ erwartet hat und die Sitzung fehlschlägt.

Korrelation während der Wiedergabe

Wir benötigen eine Lösung, die den zur Laufzeit gesendeten dynamischen Wert erfasst, analysiert und diesen Wert an den Server zurückgibt. So sieht die Client-Server-Kommunikation mit dieser Lösung aus

  1. Während der Wiedergabe sendet ein Client eine Anfrage an den Server, um eine Sitzung zu starten
  2. Ein Server empfängt die Anfrage und weist eine neue Sitzungs-ID ZZZ zu
  3. Ein Client analysiert diese neue Sitzungs-ID ZZZ aus der Anfrage.
  4. Ein Client sendet eine Anfrage zum Starten einer Sitzung mit der ID ZZZ
  5. Ein Server erkennt die ID ZZZ und ermöglicht dem Client die Wiedergabe des Skripts

Wir brauchen Korrelation

Das ist nichts anderes als Korrelation.

Klicken Sie HIER wenn das Video nicht zugänglich ist

Im Fall von VUGen ist Korrelation eine verbindliche Beziehung zwischen einer Antwort und einer vorherigen Anfrage.

Es gibt verschiedene Situationen, in denen eine Anfrage auf einer zuvor vom Server empfangenen Antwort basiert, z. B. einer Sitzungs-ID, Serverdatum/-uhrzeit, die vom Server abgerufen wird. Diese Werte sind jedes Mal unterschiedlich, wenn Sie eine Anwendung ausführen oder ein Skript aufzeichnen. Wenn die Ausführung eines Skripts von einem vom Server zurückgegebenen Wert abhängt, bedeutet dies natürlich, dass Sie einen Mechanismus finden müssen, mit dem Sie die Serverantwort „abfangen“ und an die vom Server erwarteten Anforderungen anhängen können. Dies wird in LoadRunner normalerweise als Korrelation bezeichnet.

In einfachen Worten lautet die Lösung mithilfe der Korrelation:

  1. Erfassen Sie den Ausgabewert eines Schritts
  2. Verwenden Sie den oben erfassten Wert als Eingabe für alle nachfolgenden Schritte

Die Korrelation wird in VUGen/LoadRunner in zwei Kategorien eingeteilt:

  • Automatische Korrelation
  • Manuelle Korrelation

Automatische Korrelation

LoadRunner bietet einen Mechanismus zur einfachen automatischen Durchführung einer Korrelation.

Für VUGen müssen Sie ein aufgezeichnetes Skript mindestens zweimal ausführen, damit die unterschiedlichen Werte in der Serverantwort intern verglichen werden können.

Die automatische Korrelation kann in drei Kategorien eingeteilt werden:

  • Korrelation automatisch erkennen
  • Regelbasierte Korrelation
  • Alle Aussagen korrelieren
Name der Regel Wann zu verwenden
Korrelation automatisch erkennen Erkennen und korrelieren Sie dynamische Daten für Anwendungsserver, die von HP LoadRunner unterstützt werden
Regelbasiert Wird verwendet, wenn mit einem nicht unterstützten Anwendungsserver gearbeitet wird, dessen Kontext bekannt ist.
Alles korrelieren Hilft, alle dynamischen Daten blind zu korrelieren.

Obwohl die automatische Korrelation einfacher zu sein scheint, kann sie fehleranfällig sein und funktioniert in nicht mehr als 5 % der Fälle. Es empfiehlt sich immer, die manuelle Korrelation zu verwenden.

Um die automatische Korrelation zum Zeitpunkt der Aufzeichnung zu konfigurieren, führen Sie die folgende Konfiguration in der Aufzeichnungszeiteinstellung durch, nachdem ein Skript aufgezeichnet wurde.

Klicken Sie auf Aufnahme =>Aufnahmeoptionen (oder klicken Sie auf Strg + F7).

Automatische Korrelation

Das folgende Fenster öffnet sich:

Automatische Korrelation

Klicken Sie auf Korrelation =>Konfiguration – das folgende Fenster wird geöffnet.

Automatische Korrelation

Hier müssen Sie alle Anwendungen (ASPNET) usw., die in Ihrer Fachanwendung verwendet werden, als geprüft markieren. Auf der rechten Seite sehen Sie die Regeln, die mögliche Kandidaten für eine Korrelation erkennen, z. B. _VIEWSTATE. Sie können auch weitere Anwendungen oder benutzerdefinierte Regeln hinzufügen, indem Sie auf die Schaltfläche „Neue Regel“ klicken.

Sie können auch auf REGELN klicken. Sie sehen Folgendes:

Automatische Korrelation

Damit die automatische Korrelation funktioniert, müssen Sie sicherstellen, dass der Regelscan als aktiviert markiert ist. Wenn Sie auf „Gefundene Werte automatisch korrelieren“ klicken, werden Sie von VUGen nicht zur Auswahl aufgefordert, sobald ein Korrelationskandidat gefunden wurde, sondern die Werte werden lediglich korreliert.

Wir werden die für die Korrelation verwendete API später verstehen. Es ist jedoch ratsam, einen HTML-Vergleich anstelle eines Textvergleichs zu verwenden.

Nachdem Sie Regeln ausgewählt haben, klicken Sie auf die Schaltfläche „OK“, um das Fenster zu schließen.

Klicken Sie auf Automatische Korrelationaus dem Menü und VUGen generiert das Skript neu (ohne es aufzeichnen zu müssen) mit neuen Konfigurationen. VUGen fügt automatisch einen erforderlichen Codeabschnitt hinzu, um die Korrelation zu handhaben. Wir werden uns das Beispiel im Abschnitt „Manuelle Korrelation“ genauer ansehen.

Bitte beachten Sie, dass der Code genau dieselbe Syntax und Funktion enthält, wenn Sie die Korrelation manuell durchführen oder die automatische Korrelation verwenden.

Schritte zum automatischen Korrelieren eines Skripts:

  1. Nehmen Sie ein Skript auf
  2. Skript wiederholen
  3. Identifizieren Sie die zu korrelierenden Werte
  4. Wählen Sie die Werte aus und klicken Sie auf die Schaltfläche „Automatisch korrelieren“.
  5. Überprüfen Sie das Skript, indem Sie es erneut ausführen. Ein erfolgreicher Lauf bedeutet eine erfolgreiche Korrelation.

TIPP:

  • Mithilfe der Korrelation können Sie Ihr Skript mit unterschiedlichen Werten ausführen
  • Durch die Korrelation wird auch die Größe Ihres Skripts reduziert

Manuelle Korrelation

Bei der manuellen Korrelation geht es darum, Code direkt in Ihr Skript zu schreiben, um sich ständig ändernden Werten gerecht zu werden. Wir können es in die folgenden Schritte unterteilen:

  1. Bestimmen Sie den zu erfassenden Wert
  2. Finden Sie die rechten und linken Textgrenzen des zu erfassenden Werts (WEB).
  3. Finden Sie heraus, welches Vorkommen der Textgrenzen verwendet werden soll
  4. Fügen Sie dem Skript über dem Codeteil, der die Seite mit dem zu erfassenden Wert anfordert, eine web_reg_save_param-Funktion hinzu
  5. Fügen Sie der Funktion einen Parameternamen, eine linke Grenze, eine rechte Grenze und ein Vorkommen hinzu
  6. Parametrisieren Sie den dynamischen Wert im Skript jedes Mal, wenn er auftritt
  7. Überprüfen Sie die korrekte Ausführung
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);

Eine manuelle Korrelation kann durch den VUser-Vergleich erfolgen. Die Schritte in der VUser-Vergleichsmethode der Korrelation können wie folgt aufgeteilt werden:

  1. Identifizieren Sie dynamische Werte, die korreliert werden müssen
  2. Suchen Sie nach einer Antwort des Servers, die den dynamischen Wert enthält
  3. Erfassen Sie den dynamischen Wert in einem Parameter
  4. Ersetzen Sie jedes Vorkommen des Dynamic-Werts durch den Parameter
  5. Änderungen überprüfen

Grundlegendes zur Web_reg_save_param-Funktion

VUGen bietet mehrere Funktionen oder APIs zur Korrelation von Kandidaten, darunter:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Hier wird eine kurze Einführung gegeben. Um Funktionen und ihre Parameter im Detail zu verstehen, öffnen Sie VUGen, schreiben Sie die Funktion (oder verwenden Sie die Steps Toolbox), bewegen Sie den Cursor auf die Funktion und klicken Sie auf F1. Machen Sie sich mit der VUGen-Hilfe vertraut und gewöhnen Sie sich daran. Sie werden in der Branche häufig damit zu tun haben.

Hier sind die Funktionsdetails:

web_reg_save_param(Parametername, linke Grenze, rechte Grenze)

Liste der Attribute

Konvertieren: Die möglichen Werte sind:

HTML_TO_URL: HTML-codierte Daten in ein URL-codiertes Datenformat konvertieren

HTML_TO_TEXT: HTML-codierte Daten in das Nur-Text-Format konvertieren; Dieses Attribut ist optional.

Weiterleitungen ignorieren: Wenn „Umleitungen ignorieren=Ja“ angegeben ist und die Serverantwort Umleitungsinformationen enthält (HTTP-Statuscode 300-303, 307), wird die Antwort nicht durchsucht. Stattdessen wird nach Erhalt einer Umleitungsantwort die GET-Anfrage an den umgeleiteten Standort gesendet und die Suche wird anhand der Antwort von diesem Standort durchgeführt.

Dieses Attribut ist optional. Die Standardeinstellung ist „Umleitungen ignorieren=Nein“.

PFUND: Die linke Grenze des Parameters oder der dynamischen Daten. Wenn Sie keinen LB-Wert angeben, werden alle Zeichen vom Anfang der Daten als Grenze verwendet. Bei Grenzparametern wird die Groß-/Kleinschreibung beachtet. Um den Suchtext weiter anzupassen, verwenden Sie ein oder mehrere Textflags. Dieses Attribut ist erforderlich. Weitere Informationen finden Sie im Abschnitt „Grenzargumente“.

NICHT GEFUNDEN: Die Behandlungsoption, wenn eine Grenze nicht gefunden wird und eine leere Zeichenfolge generiert wird.

„Notfound=error“, der Standardwert, führt dazu, dass ein Fehler ausgelöst wird, wenn eine Grenze nicht gefunden wird.

„Nicht gefunden=Warnung“ („Nicht gefunden=leer“ in früheren Versionen) gibt keinen Fehler aus. Wenn die Grenze nicht gefunden wird, wird die Parameteranzahl auf 0 gesetzt und die Ausführung des Skripts fortgesetzt. Die Option „Warnung“ ist ideal, wenn Sie sehen möchten, ob die Zeichenfolge gefunden wurde, Sie aber nicht möchten, dass das Skript fehlschlägt.

Note: Wenn „Bei Fehler fortfahren“ für das Skript aktiviert ist, wird das Skript auch dann fortgesetzt, wenn NOTFOUND auf „Fehler“ gesetzt ist, wenn die Grenze nicht gefunden wird, es wird jedoch eine Fehlermeldung in die erweiterte Protokolldatei geschrieben.

Auch dieses Attribut ist optional.

ORD: Gibt die Ordnungsposition oder Instanz der Übereinstimmung an. Die Standardinstanz ist 1. Wenn Sie „Alle“ angeben, werden die Parameterwerte in einem Array gespeichert. Dieses Attribut ist optional.

Hinweis: Die Verwendung von Instance anstelle von ORD wird aus Gründen der Abwärtskompatibilität unterstützt, ist jedoch veraltet.

RB: Die rechte Grenze des Parameters oder der dynamischen Daten. Wenn Sie keinen RB-Wert angeben, werden alle Zeichen bis zum Ende der Daten als Grenze verwendet. Bei Grenzparametern wird die Groß-/Kleinschreibung beachtet. Um den Suchtext weiter anzupassen, verwenden Sie ein oder mehrere Textflags. Dieses Attribut ist erforderlich. Weitere Informationen finden Sie im Abschnitt „Grenzargumente“.

RelFrameID: Die Hierarchieebene der HTML-Seite relativ zur angeforderten URL. Die möglichen Werte sind ALLE oder eine Zahl. Klicken Sie für eine detaillierte Beschreibung auf RelFrameID-Attribut. Dieses Attribut ist optional.

Hinweis: RelFrameID wird in Skripten auf GUI-Ebene nicht unterstützt.

SaveLen: Die Länge einer Teilzeichenfolge des gefundenen Werts ab dem angegebenen Offset, die im Parameter gespeichert werden soll. Dieses Attribut ist optional. Der Standardwert ist -1, was bedeutet, dass bis zum Ende der Zeichenfolge gespeichert werden soll.

SaveOffset: Der Offset einer Teilzeichenfolge des gefundenen Werts, der im Parameter gespeichert werden soll. Der Offsetwert darf nicht negativ sein. Der Standardwert ist 0. Dieses Attribut ist optional.

Suche: Der Suchbereich – wo nach den durch Trennzeichen getrennten Daten gesucht werden soll. Die möglichen Werte sind „Header“ (nur die Header durchsuchen), „Body“ (nur die Body-Daten durchsuchen, keine Header), „Keine Ressource“ (nur den HTML-Body durchsuchen, alle Header und Ressourcen ausschließen) oder ALLER (Suchtext, Header und Ressourcen). Der Standardwert ist ALLE. Dieses Attribut ist optional, wird aber im Allgemeinen bevorzugt.