Apache JMeter
Apache JMeter-Parametrisierung
Suche…
Einführung
Bei der Parametrisierung werden verschiedene Datensätze für verschiedene Benutzer im gleichen Testskript erstellt. Sie können beispielsweise mehrere Benutzer mit unterschiedlichen Anmeldeinformationen im selben Skript ausführen. Dies macht es zu einem der wichtigsten Aspekte bei der Erstellung von Leistungstests.
Parametrierung über externe Dateien
Eine der häufigsten Methoden zur Parametrisierung von Leistungsskripts ist die Verwendung einer CSV-Datei. Das beste Beispiel für die Verwendung von CSV-Eingabedateien ist ein Anmeldeprozess. Wenn Sie Ihre Anwendung für verschiedene Benutzer testen möchten, müssen Sie eine Liste mit Benutzeranmeldeinformationen angeben.
Nehmen wir an, wir haben eine Anmeldeanforderung, die für einen bestimmten Benutzer funktioniert:
Wir können diese Anforderung leicht parametrisieren, indem Sie eine externe CSV-Datei verwenden und das Skript für verschiedene Benutzer ausführen. So fügen Sie die CSV-Parametrisierungskonfiguration hinzu:
Klicken Sie mit der rechten Maustaste auf die Anmeldeanforderung -> Hinzufügen -> Konfigurationselement -> CSV-Datensatzkonfiguration
Eine kurze Erläuterung der Parameter für 'CSV Data Set Config':
- Name - Elementname, wie er in der JMeter-Struktur verwendet wird
- Dateiname - Name der Eingabedatei. Relative Dateinamen werden basierend auf dem Pfad des aktiven Testplans aufgelöst. Es werden auch absolute Dateinamen unterstützt
- Dateikodierung - Kodierung der Eingabedatei, falls dies nicht der Standard der Plattform ist
- Variablennamen - Liste der getrennten Variablennamen, die als Container für geparste Werte verwendet werden. Wenn sie leer ist, wird die erste Zeile der Datei als Liste der Variablennamen interpretiert
- Trennzeichen - Trennzeichen, mit dem die analysierten Werte aus der Eingabedatei getrennt werden
- Zitierte Daten zulassen? - true, wenn Sie doppelte Anführungszeichen ignorieren und zulassen möchten, dass solche Elemente ein Trennzeichen enthalten.
- Auf EOF recyceln? - true, wenn der Dateiprüfplan die Datei mehrmals durchlaufen soll. Es weist JMeter an, den Cursor am Anfang der Datei zu bewegen
- Thread auf EOF stoppen? - false, wenn die CDC-Datei wiederholt wird, und true, wenn der Thread nach dem Lesen der gesamten Datei angehalten werden soll
- Teilen-Modus:
- Alle Threads - die Datei wird von allen virtuellen Benutzern gemeinsam genutzt (Standardeinstellung)
- Aktuelle Threadgruppe - Die Datei wird für jede Threadgruppe einmal geöffnet
- Aktueller Thread - Jede Datei wird für jeden Thread separat geöffnet
- Bezeichner - Alle Threads, die denselben Bezeichner verwenden, teilen sich auch dieselbe Datei
Erstellen wir eine CSV-Datei, die verschiedene Benutzer mit Namen und Kennwörtern enthält:
Wir können diese Datei jetzt mit der CSV-Datensatzkonfiguration verwenden. In unserem Fall reicht es aus, die Konfigurationswerte "Dateiname" und "Variablennamen" hinzuzufügen:
Als letzten Schritt müssen Sie die Anmeldeanforderung mit CSV-Variablen parametrisieren. Dies kann durch Ersetzen der Anfangswerte durch entsprechende Variablen aus dem Konfigurationsfeld „Variablennamen“ der CSV-Datensatzkonfiguration wie folgt erfolgen: Wenn wir jetzt unser Testskript ausführen, ersetzt JMeter diese Variablen durch Werte aus der Datei 'TestUsers.csv'. Jeder virtuelle JMeter-Benutzer erhält Anmeldeinformationen aus der folgenden CSV-Dateizeile.
Die Login-Anfrage des ersten Benutzers:
Die Login-Anfrage des zweiten Benutzers:
Parametrisierung über Datenbanken
Eine andere Möglichkeit zur Parametrisierung der Leistungsskripts besteht in der Verwendung von Datenbankdaten über JDBC. JDBC ist eine Anwendungsprogrammierschnittstelle, die definiert, wie ein Client auf eine Datenbank zugreifen kann.
Laden Sie zunächst den JDBC-Treiber in Ihre Datenbank herunter (siehe Datenbankanbieter). Zum Beispiel kann der MySQL-Treiber hier gefunden werden. Dann können Sie es hinzufügen, indem Sie die .jar-Datei mit dem folgenden Formular zum Testplan hinzufügen:
Es ist jedoch besser, die Jar-Datei im lib-Ordner hinzuzufügen und JMeter neu zu starten.
Anschließend konfigurieren Sie die Datenbankverbindung mithilfe des Elements 'JDBC Connection Configuration'. So geht es: Klicken Sie mit der rechten Maustaste auf Thread-Gruppe -> Hinzufügen -> Konfigurationselement -> JDBC-Verbindungskonfiguration
Parameter für die JDBC-Verbindungskonfiguration:
- Name - Name der Verbindungskonfiguration, die in der Threadgruppenstruktur angezeigt wird
- Variablenname - Name, der als eindeutiger Bezeichner für die Datenbankverbindung verwendet wird (mehrere Verbindungen können verwendet werden und jede Verbindung wird an einen anderen Namen gebunden)
- Maximale Anzahl von Verbindungen - maximale Anzahl von Verbindungen, die im Verbindungspool zulässig sind. Im Fall von 0 erhält jeder Thread einen eigenen Pool mit einer einzelnen Verbindung
- Max Wait (ms) - Der Pool gibt einen Fehler aus, wenn das angegebene Zeitlimit während der Datenbankverbindung überschritten wird
- Time Between Eviction Runs (ms) - Anzahl der Millisekunden, die zwischen den Ausführungen des Threads angehalten werden sollen, der nicht verwendete Verbindungen aus dem Datenbankpool entfernt
- Auto-Commit - Ja, um das Auto-Commit für verwandte Datenbankverbindungen zu aktivieren
- Test While Idle (Leerlauf testen) - Überprüfen Sie die Leerlaufverbindungen, bevor eine effektive Anforderung erkannt wird. Weitere Details: BasicDataSource.html # getTestWhileIdle
- Soft Min Evictable Idle Time (ms) - Zeitraum, in dem eine angegebene Verbindung möglicherweise im DB-Pool inaktiv ist, bevor sie geräumt werden kann. Weitere Details: BasicDataSource.html # getSoftMinEvictableIdleTimeMillis
- Validierungsabfrage - Healthcheck-Abfrage, die verwendet wird, um zu überprüfen, ob die Datenbank noch antwortet
- Datenbank-URL - JDBC-Verbindungszeichenfolge für die Datenbank. Siehe hier für Beispiele
- JDBC-Treiberklasse - geeigneter Name der Treiberklasse (spezifisch für jede Datenbank). Beispiel: "com.mysql.jdbc.Driver" für MySql-Datenbank
- Benutzername - Datenbank-Benutzername
- Passwort - Datenbank-Passwort (wird unverschlüsselt im Testplan gespeichert)
In unserem Fall müssen wir nur die Pflichtfelder festlegen:
- Variablenname An Pool gebunden.
- Datenbank-URL
- JDBC-Treiberklasse
- Nutzername
- Passwort
Die restlichen Felder auf dem Bildschirm können als Standardeinstellungen verwendet werden:
Nehmen wir an, dass wir Testbenutzerdaten in der Datenbank speichern:
Wenn die Datenbankverbindung nun konfiguriert ist, können Sie die JDBC-Anforderung selbst hinzufügen und ihre Abfrage verwenden, um alle Anmeldeinformationen von der Datenbank abzurufen: Klicken Sie mit der rechten Maustaste auf Thread-Gruppe -> Hinzufügen -> Beispiel -> JDBC-Anforderung
Mit der Abfrage 'Select Statement' und 'Variablennamen' können wir die Antwort auf benutzerdefinierte Variablen analysieren.
Wir haben jetzt JMeter-Variablen, die in nachfolgenden Anforderungen weiter verwendet werden können. Angegebene Variablen werden mit einem inkrementellen Suffix (email_1, email_2, email_3… ..) erstellt.
Um diese Variablen in der Anmeldeanforderung verwenden zu können, müssen Sie einen Zähler hinzufügen, der für den Zugriff auf die richtigen Werte aus der JDBC-Abfrageantwort verwendet wird. So fügen Sie das Element 'Counter' in JMeter hinzu: Klicken Sie mit der rechten Maustaste auf Thread-Gruppe -> Hinzufügen -> Konfigurationselement -> Counter
Danach können wir die 'Login-Anfrage' mit der Funktion __V aktualisieren. Dies gibt das Ergebnis der Auswertung eines Variablennamenausdrucks zurück und kann verwendet werden, um geschachtelte Variablenreferenzen auszuwerten:
Die angegebene Konfiguration reicht aus, um Datenbankwerte zur Ausführung des Skripts für verschiedene Benutzer zu verwenden:
Parametrierung mit dem Plugin 'Parametrisierter Controller'
Wenn Sie eine Wiederholungssequenz derselben Aktion mit anderen Parametern ausführen müssen, verwenden Sie das Drittanbieter -Plug-In aus dem JMeter-Plugins- Projekt.
Sie müssen dieses Plugin zuerst installieren, indem Sie das Installationsverfahren befolgen.
Nehmen wir an, dass wir den Login-Workflow parametrisieren wollen:
Zunächst muss das Plugin 'Parametrisierter Controller' installiert werden, da es nicht im JMeter-Core enthalten ist. Installationsschritte dieses Prozesses finden Sie hier.
Verschieben Sie die Anmeldeanforderung in einen separaten Controller und deaktivieren Sie sie (klicken Sie mit der rechten Maustaste darauf und wählen Sie "Deaktivieren"). Dies ist die beste Methode, um einen Modulcontainer in Ihrem Testplan zu haben und Workbench nicht als einen solchen Container zu verwenden. Nachdem die Installation abgeschlossen ist, können Sie zwei Controller 'Parametrisierte Controller' mit unterschiedlichen Benutzeranmeldeinformationen hinzufügen: Klicken Sie mit der rechten Maustaste auf Thread-Gruppe -> Hinzufügen -> Logic Controller -> Parametrierter Controller
Parametrisierte Controller enthalten den Abschnitt 'User Defined Variables', in dem Sie Ihre Parameter angeben können. Geben Sie die Anmeldeinformationen des ersten Benutzers in den ersten parametrierten Controller und die zweiten Benutzer-Anmeldeinformationen in den zweiten parametrisierten Controller ein.
Fügen Sie in beiden parametrisierten Controllern Referenzen zum 'Wiederverwendbaren Controller' hinzu, um die 'Login-Anforderung' mit verschiedenen Parametern aufzurufen. Es kann so gemacht werden:
Rechtsklick auf 'Parametrierte Steuerung' -> 'Hinzufügen' -> 'Logiksteuerung' -> 'Modulsteuerung'
Wenn Sie Ihr Skript ausführen, werden Sie feststellen, dass die 'Login-Anfrage' jeden der parametrierten Controller separat ausgelöst hat. Dies kann sehr nützlich sein, wenn Sie Ihr Skript für verschiedene Kombinationen von Eingabeparametern ausführen müssen.