Verwendung von JMeter zum Aufzeichnen von Testszenarien

Einführung

In diesem Lernprogramm erfahren Sie, wie Sie den Apache JMeter HTTP (S) -Test-Skript-Rekorder zum Aufzeichnen von HTTP-Anforderungen einrichten und verwenden. Das Aufzeichnen von HTTP-Anforderungen ist eine hervorragende Möglichkeit, Testpläne zu erstellen, und kann bei der Erstellung von Tests hilfreich sein, die das Verhalten eines normalen Benutzers stark nachahmen.

In diesem Tutorial wird davon ausgegangen, dass Sie über Grundkenntnisse in Apache JMeter verfügen. Wenn Sie mit JMeter noch nicht vertraut sind, finden Sie hier ein weiteres Tutorial, mit dem Sie beginnen können: https://www.digitalocean.com/community/tutorials/how-to-use-apache-jmeter-to-perform-load-testing-on -a-web-server [So verwenden Sie Apache JMeter zum Ausführen von Auslastungstests auf einem Webserver]

Voraussetzungen

Hier ist eine Liste der Software, die dieses Tutorial benötigt:

Zum Nachschlagen haben wir beim Schreiben dieses Lernprogramms die folgenden Softwareversionen verwendet:

  • Oracle Java 7-Update 60, 64-Bit

  • JMeter 2.11

  • Firefox 30.0

Erstellen Sie einen Testplan

Starten Sie zunächst JMeter. Dann lassen Sie uns einen Testplan erstellen. Wenn Sie bereits einen Testplan haben, mit dem Sie beginnen möchten, überspringen Sie diesen Abschnitt und fahren Sie mit dem Hinzufügen eines Recording Controllers zu Ihrer Thread-Gruppe fort (der nächste Abschnitt).

Als Minimum möchten wir eine Thread-Gruppe und HTTP-Anforderungsstandards hinzufügen. Beginnen wir mit dem Hinzufügen einer Thread-Gruppe.

Fügen Sie eine Thread-Gruppe hinzu

Hinzufügen einer Thread-Gruppe zum Testplan:

  1. Klicken Sie mit der rechten Maustaste auf "Testplan".

  2. Maus über _Add> _

  3. Fahren Sie mit der Maus über _Threads (Benutzer)> _

  4. Klicken Sie auf "Thread-Gruppe".

Legen Sie die Thread-Gruppeneigenschaften mit den folgenden Werten fest:

  • * Anzahl der Threads (Benutzer) *: Setzen Sie dies auf * 50 *

  • * Hochlaufzeit (in Sekunden) *: Stellen Sie dies auf * 10 * ein.

  • * Loop Count *: Belassen Sie diesen Wert auf * 1 *.

Fügen Sie Standardeinstellungen für HTTP-Anforderungen hinzu

Fügen wir nun die HTTP-Anforderungsstandards zu _Thread Group hinzu:

  1. Wählen Sie Thread Group aus und klicken Sie mit der rechten Maustaste darauf

  2. Maus über _Add> _

  3. Bewegen Sie die Maus über _Config Element> _

  4. Klicken Sie auf HTTP Request Defaults

Füllen Sie in den HTTP-Anforderungsstandards im Abschnitt "Webserver" das Feld "Servername" oder "IP" mit dem Namen oder der IP-Adresse des zu testenden Webservers aus.

image: https: //assets.digitalocean.com/articles/jmeter/http_request_defaults.png [HTTP Request Defaults]

Wenn Ihr Webserver Cookies verwendet, können Sie Unterstützung für Cookies hinzufügen, indem Sie der Thread-Gruppe einen HTTP-Cookie-Manager hinzufügen:

  1. Wählen Sie Thread Group aus und klicken Sie mit der rechten Maustaste darauf

  2. Maus über _Add> _

  3. Bewegen Sie die Maus über _Config Element> _

  4. Klicken Sie auf HTTP Cookie Manager

Fügen Sie einen Aufnahmecontroller hinzu

Fügen wir nun einen Recording Controller zu _Thread Group hinzu:

  1. Wählen Sie Thread Group aus und klicken Sie mit der rechten Maustaste darauf

  2. Maus über _Add> _

  3. Maus über _Logic Controller> _

  4. Klicken Sie auf Recording Controller

Auf dem Recording Controller werden aufgezeichnete HTTP-Request-Sampler erstellt. Der nächste Schritt ist das Einrichten eines HTTP (S) Test Script Recorders.

HTTP (S) Test Script Recorder hinzufügen

Fügen wir nun der WorkBench einen HTTP (S) -Testskript-Rekorder hinzu:

  1. Wählen Sie WorkBench aus und klicken Sie mit der rechten Maustaste darauf

  2. Maus über _Add> _

  3. Bewegen Sie die Maus über _Non-Test Elements> _

  4. Klicken Sie auf HTTPS) Test Script Recorder

    • Hinweis: * Elemente, die der WorkBench hinzugefügt wurden, werden nicht mit dem restlichen Testplan gespeichert. Wenn Sie Ihre WorkBench speichern möchten, klicken Sie mit der rechten Maustaste auf "WorkBench", klicken Sie dann auf "Auswahl speichern unter …​" und speichern Sie sie an Ihrem gewünschten Speicherort. Nachdem es gespeichert wurde, können Sie es zu jedem Testplan hinzufügen, den Sie geöffnet haben, indem Sie den Menüpunkt „Zusammenführen“ verwenden und Ihre gespeicherte WorkBench auswählen.

Port-Einstellung

Der Standardport, auf dem der HTTP (S) Test Script Recorder-Proxy ausgeführt wird, ist "+ 8080 ". Dies kann durch Ändern der Einstellung " Port" unter "Globale Einstellungen" geändert werden.

Einschließen oder Ausschließen von URL-Mustern (optional)

Im HTTP (S) Script Recorder können Sie URL-Muster, die als reguläre Ausdrücke geschrieben sind, hinzufügen, um sie beim Aufzeichnen ein- oder auszuschließen. Dies kann nützlich sein, um entweder nur die Arten von Inhalten einzuschließen, die Sie anfordern möchten (z. * .html, * .php usw.) oder um die Arten von Inhalten auszuschließen, die Sie nicht anfordern möchten (z. * .jpg, * .png, * .js usw.).

Um ein URL-Muster hinzuzufügen, klicken Sie auf die Schaltfläche "Hinzufügen" im Abschnitt "Zu berücksichtigende _URL-Muster" oder "Zu auszuschließende URL-Muster" und klicken Sie dann oben auf den weißen Bereich im Abschnitt. Sie sollten nun in der Lage sein, ein Muster einzugeben. Wiederholen Sie den Vorgang, um weitere Muster hinzuzufügen.

Beispiel: URL-Muster für Webseiten

.*\.html
.*\.php
.*\.htm

Beispiel: URL-Muster für Bilder

.*\.png
.*\.jpg
.*\.gif

Hier ist ein Screenshot der auszuschließenden URL-Muster zum Ausschließen von Bildern:

image: https://assets.digitalocean.com/articles/jmeter/exclude_images.png [URL-Muster zum Ausschließen von Bildern]

Hinzufügen von Elementen zum Skript-Rekorder (optional)

Durch das Hinzufügen von JMeter-Elementen zu einem HTTP (S) -Test-Skript-Rekorder werden aufgezeichnete Anforderungen veranlasst, das hinzugefügte Element zu erben. Wenn wir beispielsweise dem Script Recorder ein Timer-Element hinzufügen, wird der Timer zu jeder aufgezeichneten HTTP-Anforderung hinzugefügt. Wenn der Test ausgeführt wird, bewirkt der Zeitgeber, dass jeder Testthread wartet, bevor die HTTP-Anforderung ausgeführt wird.

Fügen wir zum Beispiel HTTP (S) Test Script Recorder einen Constant Timer hinzu:

  1. Wählen Sie HTTP (S) Test Script Recorder und klicken Sie mit der rechten Maustaste darauf

  2. Maus über _Add> _

  3. Fahren Sie mit der Maus über _Timer> _

  4. Klicken Sie auf Constant Timer

Sie können die Thread-Verzögerung nach Belieben konfigurieren.

Angenommen, Sie möchten einen Benutzer simulieren, der alle 2 Sekunden auf eine andere Seite klickt. Durch Festlegen der Thread-Verzögerung auf 2000 ms wird dies erreicht, indem jeder aufgezeichneten HTTP-Anforderung eine Verzögerung von 2 Sekunden hinzugefügt wird.

Dies ist nur ein Beispiel dafür, wie Sie dem Skript-Rekorder Elemente hinzufügen können, um einen Testplan zu erstellen, der die gewünschten Tests ausführt.

Starte die Aufnahme

Durch Klicken auf die Schaltfläche „Start“ am unteren Rand des Fensters „Script Recorder“ wird der JMeter-Proxyserver gestartet, der zum Abfangen und Aufzeichnen von Browseranforderungen verwendet wird. Klicken Sie jetzt auf die Schaltfläche Start (des Rekorders).

Wenn Sie zum ersten Mal versuchen, den Rekorder auszuführen, wird ein Fehler angezeigt, der besagt, dass er nicht gestartet werden kann, weil kein Zertifikat vorhanden ist. Klicken Sie auf OK und dann ein zweites Mal auf Starten. Es sollte eine Meldung angezeigt werden, die besagt, dass ein temporäres Zertifikat mit dem Namen ApacheJMeterTemporaryRootCA.crt im JMeter-Bin-Verzeichnis erstellt wurde. Klicken Sie auf OK und fahren Sie fort.

image: https://assets.digitalocean.com/articles/jmeter/temp_cert.png [Temporäres Zertifikat erstellt]

  • Hinweis: * Wenn Ihr Browser bereits einen Proxy verwendet, müssen Sie JMeter so konfigurieren, dass dieser Proxy verwendet wird, bevor Sie JMeter mit den Befehlszeilenoptionen -H und -P starten.

Konfigurieren Sie Firefox für die Verwendung von JMeter Proxy

Wir verwenden Firefox als Browser, wenn Sie den JMeter HTTP (S) Test Script Recorder verwenden, da Sie damit im Gegensatz zu Chrome und einigen anderen Browsern die systemweite Konfiguration der Proxy-Einstellungen überschreiben können.

Konfigurieren Sie Firefox so, dass localhost (127.0.0.1) auf Port 8080 als Proxy für den gesamten Datenverkehr verwendet wird, indem Sie die folgenden Schritte ausführen:

  1. Öffnen Sie Firefox

  2. Gehen Sie zum Menü Einstellungen

  3. Klicken Sie auf die Registerkarte Erweitert

  4. Dann Registerkarte Netzwerk

  5. Klicken Sie im Bereich "Verbindung" auf "Einstellungen …​".

  6. Aktivieren Sie das Optionsfeld "Manuelle Proxy-Konfiguration"

  7. Setzen Sie den HTTP-Proxy auf "localhost" und den Port auf "8080"

  8. Aktivieren Sie "Diesen Proxyserver für alle Protokolle verwenden".

  9. Klicken Sie auf OK und schließen Sie das Menü Einstellungen

    • Hinweis: * Wenn Firefox für die Verwendung von JMeters Script Recorder als Proxy konfiguriert ist, funktioniert dies nur dann ordnungsgemäß, wenn der Script Recorder ausgeführt wird.

Aufzeichnen von HTTP-Anfragen

Nachdem der HTTP (S) Test Script Recorder unseres Testplans ausgeführt wird und Firefox für die Verwendung als Proxy konfiguriert ist, werden die von Firefox gesendeten HTTP-Anforderungen aufgezeichnet. Probieren wir es aus.

Rufen Sie in Firefox die Homepage Ihres Servers auf (den gleichen Server, den Sie in Ihren JMeter-HTTP-Anforderungsstandards konfiguriert haben):

http://your_domain.com/

Jetzt sollte ein kleines Dreieck neben Ihrem Recording Controller sein. Klicken Sie darauf, um die aufgezeichneten Anforderungen anzuzeigen. Sie sollten die aufgezeichneten HTTP-Anforderungen sehen, je nachdem, welche URL-Muster Sie eingeschlossen und ausgeschlossen haben. Durchsuchen Sie Ihre Website, um weitere Anfragen aufzuzeichnen.

Hier ist ein Beispiel dafür, was beim Besuch der Homepage einer WordPress-Site aufgezeichnet wurde (ohne festgelegte URL-Muster):

Wie Sie sehen, wurden viele Anfragen erstellt. Sie können die Liste der HTTP-Anforderungen verfeinern, indem Sie hier einfach unerwünschte Einträge löschen.

Wenn Sie unter Ihrem Recording Controller keine Einträge sehen, sollten Sie Ihre URL-Muster im HTTP (S) Test Script Recorder überprüfen (Hinweis: Entfernen Sie alle Einschlüsse und Ausschlüsse, um alles aufzuzeichnen).

Wenn Sie mit der Aufnahme fertig sind, klicken Sie auf die Schaltfläche "Stop" am unteren Rand des Fensters "HTTP (S) Test Script Recorder". Beachten Sie, dass Firefox keine Seiten mehr erreichen kann (da der Port 8080 als Proxy konfiguriert ist). Konfigurieren Sie ihn für die Verwendung von „Kein Proxy“, wenn Sie normal funktionieren möchten.

Führen Sie Ihren Testplan aus

Wenn Sie mit dem aufgezeichneten Testplan zufrieden sind, speichern Sie ihn und führen Sie ihn aus. Es funktioniert genau wie ein manuell erstellter Test. Sie können ihn konfigurieren, löschen und Elemente hinzufügen, um ihn näher an den gewünschten Testfall anzupassen.

Fazit

Da Sie nun den HTTP (S) -Testskript-Rekorder verwenden können, um die Erstellung von JMeter-Testplänen zu unterstützen, sollten Sie leichter Testpläne erstellen können, die realistische Szenarien imitieren. Sehen Sie sich die aufgezeichneten Anforderungen in Ihrem Recording Controller an, um mehr über die Art der Anforderungen zu erfahren, die Benutzer beim Browsen Ihres Webservers stellen.

Viel Glück!