Suche…


Einführung

Beim JMeter-Leistungstest bedeutet Korrelationen die Fähigkeit, dynamische Daten aus der Serverantwort abzurufen und sie an die nachfolgenden Anforderungen zu senden. Diese Funktion ist für viele Aspekte des Testens entscheidend, beispielsweise für tokenbasierte geschützte Anwendungen.

Korrelation mit dem Extractor für reguläre Ausdrücke in Apache JMeter

Wenn Sie Informationen aus einer Textantwort extrahieren möchten, verwenden Sie reguläre Ausdrücke am einfachsten. Das übereinstimmende Muster ist dem in Perl verwendeten Muster sehr ähnlich. Angenommen, wir möchten einen Workflow zum Kauf von Flugtickets testen. Der erste Schritt ist die Übermittlung des Kaufvorgangs. Im nächsten Schritt stellen Sie sicher, dass wir alle Details mithilfe der Kauf-ID überprüfen können, die für die erste Anforderung zurückgegeben werden muss. Nehmen wir an, die erste Anforderung gibt eine HTML-Seite mit diesem ID-Typ zurück, den wir extrahieren müssen:

<div class="container">
  <div class="container hero-unit">
    <h1>Thank you for you purchse today!</h1>
       <table class="table">
           <tr>
             <td>Id</td>
             <td>Your purchase id is 1484697832391</td>
           </tr>
           <tr>
             <td>Status</td>
             <td>Pending</td>
           </tr>
           <tr>
             <td>Amount</td>
             <td>120 USD</td>
            </tr>
         </table>
    </div>
</div>

Diese Situation ist der beste Kandidat für die Verwendung des JMeter-Extraktors für reguläre Ausdrücke. Regulärer Ausdruck ist eine spezielle Zeichenfolge zur Beschreibung eines Suchmusters. Es gibt viele Online-Ressourcen, mit denen Sie reguläre Ausdrücke schreiben und testen können. Eine davon ist https://regex101.com/ .

Geben Sie hier die Bildbeschreibung ein

Um diese Komponente zu verwenden, öffnen Sie das JMeter-Menü und: Hinzufügen -> Nachbearbeiter -> Extraktor für reguläre Ausdrücke

Geben Sie hier die Bildbeschreibung ein

Der Extraktor für reguläre Ausdrücke enthält folgende Felder:

  • Referenzname - Der Name der Variablen, die nach der Extraktion verwendet werden kann
  • Regulärer Ausdruck - eine Folge von Symbolen und Zeichen, die eine Zeichenfolge (Muster) ausdrücken, nach der im Text gesucht wird
  • Vorlage - enthält Verweise auf die Gruppen. Da ein Regex mehrere Gruppen enthalten kann, können Sie festlegen, welchen Gruppenwert Sie extrahieren möchten, indem Sie die Gruppennummer als $ 1 $ oder $ 2 $ oder $ 1 $$ 2 $ angeben (beide Gruppen extrahieren).
  • Match-Nr. - gibt an, welcher Match verwendet werden soll (0-Wert entspricht zufälligen Werten / jede positive Zahl. N bedeutet, dass der N-te Match ausgewählt werden muss. / Negativer Wert muss mit dem ForEach Controller verwendet werden.
  • Default - Der Standardwert, der in der Variablen gespeichert wird, falls keine Übereinstimmungen gefunden werden, wird in der Variablen gespeichert.

Das Kontrollkästchen "Anwenden auf" befasst sich mit Beispielen, in denen Anforderungen nach eingebetteten Ressourcen gestellt werden. Dieser Parameter legt fest, ob regulärer Ausdruck auf die Hauptbeispielergebnisse oder auf alle Anforderungen einschließlich eingebetteter Ressourcen angewendet wird. Es gibt mehrere Optionen für diesen Parameter:

  • Hauptprobe und Unterproben
  • Nur Hauptprobe
  • Nur Unterproben
  • JMeter-Variable - Die Assertion wird auf den Inhalt der benannten Variablen angewendet, die mit einer anderen Anforderung gefüllt werden kann

Mit dem Kontrollkästchen "Zu überprüfendes Feld" können Sie auswählen, auf welches Feld der reguläre Ausdruck angewendet werden soll. Fast alle Parameter sind selbstbeschreibend:

  • Hauptteil - der Hauptteil der Antwort, z. B. der Inhalt einer Webseite (ohne Kopfzeilen)
  • Body (nicht maskiert) - der Body der Antwort, bei dem alle HTML-Escape-Codes ersetzt wurden. Beachten Sie, dass HTML-Escape-Codes ohne Rücksicht auf den Kontext verarbeitet werden, sodass möglicherweise falsche Ersetzungen vorgenommen werden (* Diese Option wirkt sich stark auf die Leistung aus)
  • Body - Body als Dokument - der Extrakttext aus verschiedenen Dokumenttypen über Apache Tika (* kann sich auch auf die Leistung auswirken)
  • Body - Request Headers - ist möglicherweise nicht für Nicht-HTTP-Beispiele vorhanden
  • Hauptteil - Antwortheader - ist möglicherweise für Nicht-HTTP-Beispiele nicht vorhanden
  • Body - URL
  • Antwortcode - zB 200
  • Body - Response Message - zB OK

Nachdem der Ausdruck extrahiert wurde, kann er in nachfolgenden Anforderungen mit der Variablen $ {purchaseId} verwendet werden.

Geben Sie hier die Bildbeschreibung ein

Diese Tabelle enthält alle Kontraktionen, die von JMeter Regular Expressions unterstützt werden:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Korrelation mit dem XPath-Extraktor in JMeter

Mit XPath können Sie durch Elemente und Attribute in einem XML-Dokument navigieren. Dies kann nützlich sein, wenn Daten aus der Antwort nicht mit dem Extraktor für reguläre Ausdrücke extrahiert werden können. Zum Beispiel in einem Szenario, in dem Sie Daten aus ähnlichen Tags mit denselben Attributen, aber unterschiedlichen Werten extrahieren müssen. Der XPath-Extraktor ähnelt dem CSS / JQuery-Extraktor, jedoch sollte der XPath-Extraktor für XML-Inhalte verwendet werden, während der CSS / JQuery-Extraktor für HTML-Inhalte verwendet werden sollte. Nehmen wir an, wir haben in der Antwort eine Tabelle mit verschiedenen Werten, in der wir den Wert aus der zweiten Tabellenzeile extrahieren müssen.

<div id="weeklyPrices">
    <tr>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$60.00</td>
        <td>$70.00</td>
        <td>$70.00</td>
    </tr>
</div>

Mit Blick auf die Zukunft lautet der richtige XPath für diesen Fall: // div [@ id = 'weekPreise'] / tr / td 1

Um diese Komponente zu verwenden, öffnen Sie das JMeter-Menü und: Hinzufügen -> Postprozessoren -> XPath Extractor

Geben Sie hier die Bildbeschreibung ein

Der XPath-Extraktor enthält mehrere allgemeine Konfigurationselemente, die im Abschnitt "Korrelation mithilfe des regulären Ausdrucks-Extraktors" erwähnt werden. Dazu gehören Name, Übernehmen für, Referenzname, Übereinstimmungsnummer (seit JMeter 3.2) und Standardwert.

Es gibt viele Webressourcen mit Online-Spickzettel und -Editoren zum Erstellen und Testen Ihres erstellten Xpath (wie dieser ). Anhand der folgenden Beispiele können wir jedoch die gängigsten Xpath-Locators erstellen.

Geben Sie hier die Bildbeschreibung ein

Wenn Sie HTML in XHTML parsen möchten, müssen Sie die Option "Tidy verwenden" aktivieren. Nachdem Sie sich für den Status "Use Tidy" entschieden haben, gibt es noch weitere Optionen:

Wenn "Use Tidy" aktiviert ist:

  • Ruhig - Setzt das Flag Tidy Quiet
  • Fehler melden - Wenn ein Fehler auftritt, legen Sie die Assertion entsprechend fest
  • Warnmeldungen anzeigen - Legt die Option Warnmeldungen anzeigen auf

Wenn "Use Tidy" nicht aktiviert ist:

  • Namensräume verwenden - Wenn diese Option aktiviert ist, verwendet der XML-Parser die Namensraumauflösung
  • Validate XML - prüft das Dokument anhand des angegebenen Schemas
  • Whitespace ignorieren - Element Whitespace ignorieren
  • Externe DTDs abrufen - Wenn ausgewählt, werden externe DTDs abgerufen

"Das gesamte XPath-Fragment anstelle von Text zurückgeben" ist selbstbeschreibend und sollte verwendet werden, wenn Sie nicht nur den xpath-Wert, sondern auch den Wert innerhalb seines xpath-Locators zurückgeben möchten. Es kann für das Debuggen von Anforderungen hilfreich sein.

Erwähnenswert ist auch, dass es eine Liste sehr praktischer Browser-Plugins zum Testen von XPath-Locators gibt. Für Firefox können Sie das " Firebug " -Plugin verwenden, während der " XPath Helper " für Chrome das bequemste Werkzeug ist.

Geben Sie hier die Bildbeschreibung ein

Korrelation Verwenden des CSS / JQuery-Extraktors in JMeter

Der CSS / JQuery-Extraktor ermöglicht das Extrahieren von Werten aus einer Serverantwort mithilfe einer CSS / JQuery-Selektor-Syntax, die ansonsten mit regulären Ausdrücken möglicherweise schwer zu schreiben war. Als Nachprozessor sollte dieses Element ausgeführt werden, um die angeforderten Knoten-, Text- oder Attributwerte aus einem Anforderungs-Sampler zu extrahieren und das Ergebnis in der angegebenen Variablen zu speichern. Diese Komponente ist dem XPath-Extraktor sehr ähnlich. Die Wahl zwischen CSS, JQuery oder XPath hängt normalerweise von den Benutzervorlieben ab. Erwähnenswert ist jedoch, dass XPath oder JQuery das DOM nach unten und auch nach oben durchlaufen kann, während CSS das DOM nicht durchlaufen kann. Angenommen, wir möchten alle Themen aus der Stack Overflow-Dokumentation extrahieren, die sich auf Java beziehen. Mit dem Firebug- Plugin können Sie Ihre CSS / JQuery-Selektoren in Firefox oder den CSS-Selector-Tester in Chrome testen.

Geben Sie hier die Bildbeschreibung ein

Um diese Komponente zu verwenden, öffnen Sie das JMeter-Menü und: Hinzufügen -> Postprozessoren -> CSS / JQuery-Extraktor

Geben Sie hier die Bildbeschreibung ein

Fast alle Felder dieses Extraktors ähneln den Feldern des Extraktors für reguläre Ausdrücke, daher können Sie deren Beschreibung aus diesem Beispiel entnehmen. Ein Unterschied ist jedoch das Feld "Implementierung von CSS / JQuery Extractor". Seit JMeter 2.9 können Sie den CSS / JQuery-Extraktor verwenden, der auf zwei verschiedenen Implementierungen basiert: Die jsoup- Implementierung (detaillierte Beschreibung der Syntax hier ) oder der JODD Lagarto (detaillierte Syntax finden Sie hier ). Beide Implementierungen sind nahezu identisch und weisen nur geringe Syntaxunterschiede auf. Die Wahl zwischen ihnen hängt von den Vorlieben des Benutzers ab.

Geben Sie hier die Bildbeschreibung ein

Basierend auf der oben genannten Konfiguration können wir alle Themen von der angeforderten Seite extrahieren und die extrahierten Ergebnisse mithilfe des Listeners "Debug Sampler" und "View Results Tree" überprüfen.

Korrelation mit dem JSON-Extraktor

JSON ist ein häufig verwendetes Datenformat, das in webbasierten Anwendungen verwendet wird. Mit dem JMeter-JSON-Extraktor können JSON-Pfadausdrücke zum Extrahieren von Werten aus JSON-basierten Antworten in JMeter verwendet werden. Dieser Postprozessor muss als untergeordnetes Element des HTTP-Samplers oder für andere Sampler mit Antworten platziert werden.

Um diese Komponente zu verwenden, öffnen Sie das JMeter-Menü und: Hinzufügen -> Postprozessoren -> JSON-Extraktor.

Geben Sie hier die Bildbeschreibung ein

Der JSON-Extraktor ist dem Extrakt für reguläre Ausdrücke sehr ähnlich. In diesem Beispiel werden fast alle Hauptbereiche erwähnt. Es gibt nur einen bestimmten JSON-Extractor-Parameter: 'Compatenation var'. Falls viele Ergebnisse gefunden werden, werden diese von diesem Extraktor verkettet, indem das Trennzeichen ',' verwendet und in einer Variablen namens _ALL gespeichert wird.

Nehmen wir an, diese Serverantwort mit JSON:

{ 
    "store": {
        "book": [ 
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
          },
          { "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
          },
          { "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
          }
        ],
        "bicycle": {
        "color": "red",
        "price": 19.95
    }
  }
}

Die folgende Tabelle enthält ein hervorragendes Beispiel für die verschiedenen Arten, Daten aus einem angegebenen JSON zu extrahieren:

Geben Sie hier die Bildbeschreibung ein

Über diesen Link finden Sie eine ausführlichere Beschreibung des JSON-Pfadformats mit verwandten Beispielen.

Automatisierte Korrelation durch Verwendung von BlazeMeters "SmartJMX"

Wenn Sie Ihre Leistungsskripts manuell schreiben, müssen Sie die Korrelation selbst behandeln. Es gibt aber noch eine weitere Möglichkeit, Ihre Skripte zu erstellen - die Aufzeichnung von Automatisierungsskripten. Einerseits hilft der manuelle Ansatz beim Schreiben strukturierter Skripts, und Sie können alle erforderlichen Extraktoren gleichzeitig hinzufügen. Auf der anderen Seite ist dieser Ansatz sehr zeitaufwändig.

Die Aufzeichnung von Automatisierungsskripten ist sehr einfach und ermöglicht Ihnen die gleiche Arbeit, nur viel schneller. Wenn Sie jedoch gängige Aufnahmemethoden verwenden, sind die Skripts sehr unstrukturiert und erfordern in der Regel zusätzliche Parametrisierung. Die „Smart JMX“ -Funktion des Blazemeter-Recorders vereint die Vorteile beider Möglichkeiten. Sie finden es unter diesem Link: [ https://a.blazemeter.com/app/recorder/index.html([1]

Nach der Registrierung gehen Sie zum Abschnitt "Rekorder".

Geben Sie hier die Bildbeschreibung ein

Um die Skriptaufzeichnung zu starten, müssen Sie zunächst den Proxy Ihres Browsers konfigurieren ( hier behandelt ), dieses Mal sollten Sie jedoch einen Proxy-Host und einen vom BlazeMeter-Recorder bereitgestellten Port erhalten.

Geben Sie hier die Bildbeschreibung ein

Wenn der Browser konfiguriert ist, können Sie mit der Skriptaufnahme fortfahren, indem Sie den roten Knopf unten drücken. Jetzt können Sie zu der zu testenden Anwendung gehen und Benutzerworkflows für die Aufzeichnung ausführen.

Geben Sie hier die Bildbeschreibung ein

Nachdem das Skript aufgenommen wurde, können Sie die Ergebnisse in eine "SMART" JMX-Datei exportieren. Eine exportierte JMX-Datei enthält eine Liste von Optionen, mit denen Sie Ihr Skript ohne zusätzlichen Aufwand konfigurieren und parametrisieren können. Eine dieser Verbesserungen ist, dass der JMX „SMART“ Korrelationskandidaten automatisch findet, ihn durch den entsprechenden Extraktor ersetzt und eine einfache Möglichkeit zur weiteren Parametrisierung bietet.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow