jMeter - Reguläre Ausdrücke

Reguläre Ausdrücke werden verwendet, um Text basierend auf Mustern zu suchen und zu bearbeiten. JMeter interpretiert Formen regulärer Ausdrücke oder Muster, die in einem JMeter-Testplan verwendet werden, unter Einbeziehung der Mustervergleichssoftware Apache Jakarta ORO .

Durch die Verwendung regulärer Ausdrücke können wir sicherlich viel Zeit sparen und mehr Flexibilität erzielen, wenn wir einen Testplan erstellen oder verbessern. Reguläre Ausdrücke bieten eine einfache Methode, um Informationen von Seiten abzurufen, wenn es unmöglich oder sehr schwierig ist, ein Ergebnis vorherzusagen.

Ein Standardverwendungsbeispiel für die Verwendung von Ausdrücken besteht darin, eine Sitzungs-ID aus der Serverantwort abzurufen. Wenn der Server einen eindeutigen Sitzungsschlüssel zurückgibt, können wir ihn leicht mithilfe von Ausdrücken in unserem Ladeskript abrufen.

Um reguläre Ausdrücke in Ihrem Testplan zu verwenden, müssen Sie den Regular Expression Extractor von JMeter verwenden. Sie können reguläre Ausdrücke in jede Komponente eines Testplans einfügen.

Es lohnt sich, den Unterschied zwischen zu betonen contains und matches, wie für das Testelement Response Assertion verwendet -

  • containsbedeutet, dass der reguläre Ausdruck mindestens einem Teil des Ziels entspricht, sodass "Alphabet" "ph.b." enthält. weil der reguläre Ausdruck mit der Teilzeichenfolge 'phabe' übereinstimmt.

  • matchesbedeutet, dass der reguläre Ausdruck mit dem gesamten Ziel übereinstimmt. Daher wird das 'Alphabet' mit 'al. * T' "abgeglichen".

Angenommen, Sie möchten dem folgenden Teil einer Webseite entsprechen:

name = "file" value = "readme.txt"

Und Sie möchten readme.txt extrahieren. Ein geeigneter regulärer Ausdruck wäre -

name = "file" value = "(.+?)">

Die obigen Sonderzeichen sind -

  • ( und ) - Diese schließen den Teil der zurückzugebenden Übereinstimmungszeichenfolge ein

  • . - mit einem beliebigen Zeichen übereinstimmen

  • + - einmal oder mehrmals

  • ? - Stoppen Sie, wenn das erste Spiel erfolgreich ist

Erstellen Sie einen JMeter-Testplan

Lassen Sie uns die Verwendung von regulären Ausdrücken im Extraktor für reguläre Ausdrücke - einem Postprozessorelement - verstehen, indem Sie einen Testplan schreiben. Dieses Element extrahiert Text von der aktuellen Seite mithilfe eines regulären Ausdrucks, um das Textmuster zu identifizieren, dem ein gewünschtes Element entspricht.

Zuerst schreiben wir eine HTML-Seite, die eine Liste der Personen und ihrer E-Mail-IDs enthält. Wir stellen es auf unserem Tomcat-Server bereit. Der Inhalt von HTML (index.html) ist wie folgt:

<html>
   <head>
   </head>
	
   <body>
      <table style = "border: 1px solid #000000;">
		
         <th style = "border: 1px solid #000000;">ID</th>
         <th style = "border: 1px solid #000000;">name</th>
         <th style = "border: 1px solid #000000;">Email</th>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">3</td>
            <td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">4</td>
            <td id = "Name" style = "border: 1px solid #000000;">joe</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
      </table>
   </body>
</html>

Bei der Bereitstellung auf dem Tomcat-Server sieht diese Seite wie im folgenden Screenshot dargestellt aus:

In unserem Testplan wählen wir die Person in der ersten Zeile der Personentabelle aus, die auf der Seite mit der Personenliste oben angezeigt wird. Um die ID dieser Person zu erfassen, bestimmen wir zunächst das Muster, in dem wir die Person in der zweiten Reihe finden.

Wie im folgenden Schnappschuss zu sehen ist, ist die ID der zweiten Person von <td id = "ID"> und </ td> umgeben, und es ist die zweite Datenzeile mit diesem Muster. Wir können dies verwenden, um genau das Muster zu finden, aus dem wir Informationen extrahieren möchten. Da wir zwei Informationen von dieser Seite extrahieren möchten, die Personen-ID und den Personennamen, werden die Felder wie folgt definiert:

Starten Sie JMeter und fügen Sie eine Thread-Gruppe hinzu Test Plan → Add→ Threads(Users)→ Thread Group.

Fügen Sie als Nächstes eine Sampler-HTTP-Anforderung hinzu, wählen Sie den Testplan aus und klicken Sie mit der rechten Maustaste Add → Sampler → HTTP Request und geben Sie die Details wie unten gezeigt ein -

  • Name - Verwalten

  • Server Name or IP - localhost

  • Port Number - 8080

  • Protocol - Wir werden dieses Feld leer lassen, was bedeutet, dass wir HTTP als Protokoll wollen.

  • Path - jmeter / index.html

Fügen Sie als Nächstes einen Extraktor für reguläre Ausdrücke hinzu. Wählen Sie den HTTP Request Sampler (Verwalten) aus und klicken Sie mit der rechten MaustasteAdd → Post Processor → Regular Expression Extractor.

Die folgende Tabelle enthält eine Beschreibung der im obigen Screenshot verwendeten Felder -

Sr.Nr. Feld Beschreibung
1

Reference Name

Der Name der Variablen, in der der extrahierte Test gespeichert wird (Referenzname).

2

Regular Expression

Das Muster, mit dem der zu extrahierende Text abgeglichen wird, wird abgeglichen. Die zu extrahierenden Textgruppen werden von den Zeichen '(' und ')' eingeschlossen. Wir verwenden '. +?' um eine einzelne Instanz des von den Tags <td ..> .. </ td> eingeschlossenen Textes anzugeben. In unserem Beispiel lautet der Ausdruck - <td id = "ID"> (+?) </ Td> \ s * <td id = "Name"> (+?) </ Td> \ s *

3

Template

Jede Gruppe von extrahiertem Text, die als Mitglied der Variablen Person platziert wird, folgt der Reihenfolge jeder Gruppe von Mustern, die durch '(' und ')' eingeschlossen sind. Jede Gruppe wird als refname_g # gespeichert, wobei refname die Zeichenfolge ist, die Sie als Referenzname eingegeben haben, und # die Gruppennummer ist. $ 1 $ bezieht sich auf Gruppe 1, $ 2 $ bezieht sich auf Gruppe 2 usw. $ 0 $ bezieht sich auf alles, was mit dem gesamten Ausdruck übereinstimmt. In diesem Beispiel wird die von uns extrahierte ID in Person_g1 beibehalten, während der Wert Name in Person_g2 gespeichert wird.

4

Match No.

Da wir nur das zweite Vorkommen dieses Musters extrahieren möchten, das mit dem zweiten Freiwilligen übereinstimmt, verwenden wir den Wert 2. Der Wert 0 würde eine zufällige Übereinstimmung ergeben, während mit dem ForEach-Controller ein negativer Wert verwendet werden muss.

5

Default

Wenn das Element nicht gefunden wird, ist dies der Standardwert. Dies ist ein optionales Feld. Sie können es leer lassen.

Fügen Sie einen Listener hinzu, um das Ergebnis dieses Testplans zu erfassen. Klicken Sie mit der rechten Maustaste auf die Thread-Gruppe und wählen Sie die Option Hinzufügen → Listener → Ergebnisbaum anzeigen, um den Listener hinzuzufügen.

Speichern Sie den Testplan als reg_express_test.jmx und führen Sie den Test aus. Die Ausgabe wäre ein Erfolg, wie im folgenden Screenshot gezeigt -