2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Benutzerparameter für reguläre Ausdrücke (RegEx-Benutzerparameter) sind ein Vorprozessor (Vorprozessor), mit dem Benutzer Werte aus Antwortdaten basierend auf regulären Ausdrücken extrahieren und anwenden und diese Werte als Parameter an nachfolgende übergeben könnenHTTP-Anfrage oder andere Orte benötigt. Diese Funktion ist äußerst flexibel für den Umgang mit dynamischen Inhalten, Sitzungs-IDs, Token usw. und eine Schlüsselkomponente für die Implementierung automatisierter Testskripte.
Wir verwenden SpringBoot, um den folgenden Schnittstellencode zu schreiben
@PostMapping(value = "/login",produces = "application/json;charset=UTF-8")
public String authenticate(@RequestBody JSONObject request) {
String validUsername = "admin";
String validPassword = "password";
String response = "{"total":2,"data":[{"id":123,"name":"John Doe","email":"[email protected]","phone":"123-456-7890","address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"},"interests":["sports","music","travel"]},{"id":456,"name":"Jane Smith","email":"[email protected]","phone":"987-654-3210","address":{"street":"456 Elm St","city":"Los Angeles","state":"CA","zip":"90001"},"interests":["reading","cooking","hiking"]}]}";
if (request.getString("username").equals(validUsername) && request.getString("password").equals(validPassword)) {
return response;
} else {
return response;
}
}
Dann schreiben wir das folgende Skript
Thread-Gruppe: Standard beibehalten
HTTP-Anfrage 1: Protokoll http, Servername oder IP127.0.0.1, Portnummer 8091, Methode POST, Pfad/Anmeldung, Inhaltskodierung utf-8, Nachrichtentextdaten
{
"username": "admin",
"password": "password"
}
Extraktion regulärer Ausdrücke器:设置的参数为引用名称var,正则表达式"id"😦.?),"Name":"(.?)“, „E-Mail“ (kann aus dem Inhalt des Beispielcodes erkannt werden), und unser Zweck besteht darin, die ID und den Namen zu extrahieren, die übereinstimmende Nummer ist auf -1 gesetzt und der Standardwert ist NotFound
An diesem Punkt können wir zunächst die HTTP-Anforderung 2 und die Benutzerparameter für reguläre Ausdrücke deaktivieren, dann das Skript ausführen und den Debug-Sampler des Ergebnisbaums anzeigen. Sie können die folgenden Ergebnisse im Antworttext der Antwortdaten sehen.
JMeterVariablen:
JMeterThread.last_sample_ok=false
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@4fa1cf1
START.HMS=165132
START.MS=1720515092259
START.YMD=20240709
TESTSTART.MS=1720578466746
_jm__threadgroup__idx=0
_jmeter.U_T=Threadgruppe 1-1
var=Nicht gefunden
var_1=
var_1_g=2
var_1_g0=“id”:123,“name”:“John Doe”,“E-Mail”
var_1_g1=123
var_1_g2=Max Mustermann
var_2=
var_2_g=2
var_2_g0=“id”:456,“name”:“Jane Smith”,“E-Mail”
var_2_g1=456
var_2_g2=Jane Smith
var_matchNr=2
Aus dem obigen Inhalt können wir den Wert der vom entsprechenden regulären Ausdruck extrahierten Variablen sehen. Zu diesem Zeitpunkt können wir weiterhin die Anwendung des Benutzerparameter-Präprozessors für reguläre Ausdrücke überprüfen und weiterhin andere Komponentenparameter festlegen.
HTTP-Anfrage 2: Protokoll http, Servername oder IP127.0.0.1, Portnummer 8091, Methode POST, Pfad/Anmeldung, Inhaltskodierung utf-8, dann zwei Parameter zu den Parametern hinzufügen, die Namen 123 bzw. 456 eingeben, Verwenden Sie sie jetzt nicht. Unabhängig von der konkreten Bedeutung probieren wir es zunächst einmal aus.
Benutzerparameter für reguläre Ausdrücke: Der Referenzname des regulären Ausdrucks ist auf var gesetzt. Der Parametername muss hier mit dem Parameternamen im obigen regulären Ausdruck übereinstimmen zu 2, warum Wie richtet man das so ein? Wir können es so verstehen. Haben wir in der HTTP-Anfrage 2 die Parameternamen regexp so eingestellt, dass wir die Parameter var_1_g1 und var_2_g1 in die Parameter übernehmen? Nachdem die Parameter in HTTP-Anfrage 2 mit den Parametern hier übereinstimmen, werden wir die Beziehung zwischen Parametern und Daten korrespondieren und den Weg dafür ebnen, dass die Regex-Gruppennummer des Parameterwerts auf 2 gesetzt wird. Wir können das gut verstehen, wenn Parameterwerte Die Regex-Gruppennummer wird auf 2 gesetzt, was erhalten wird. Die Parameter werden zu var_1_g2 und var_2_g2.
Der nächste Schritt besteht darin, unsere Ergebnisse zu überprüfen, um die Postdaten des Anforderungstexts in der HTTP-Anfrage 2 anzuzeigen. Insgesamt ist unsere Anfrage fehlgeschlagen, aber es spielt keine Rolle, was wir benötigen zu überprüfen. Das Ergebnis ist irrelevant
POST http://127.0.0.1:8091/login
Post-Daten:
123=Max+Mustermann&456=Jane+Schmidt
[keine Kekse]
Anhand der obigen POST-Daten können Sie erkennen, dass die entsprechenden Daten in der Anfrage berücksichtigt wurden.
● Geltungsbereich: Benutzerparameter für reguläre Ausdrücke werden nur bei der folgenden HTTP-Anfrage oder dem folgenden Sampler wirksam. Wenn Sie sie global anwenden müssen, ziehen Sie bitte die Verwendung des „Extraktors für reguläre Ausdrücke“ in Verbindung mit Variablen in Betracht.
● Debugging: Verwenden Sie den Listener „View Result Tree“, um die Übereinstimmung regulärer Ausdrücke zu überprüfen und eine korrekte Datenextraktion sicherzustellen.
Benutzerparameter für reguläre Ausdrücke sind eine leistungsstarke Funktion in JMeter, die die Verarbeitung dynamischer Daten vereinfacht und die Flexibilität und Automatisierung von Testskripten verbessert. Bei richtiger Konfiguration und Nutzung kann diese Funktion die Leistungstestanforderungen komplexer Systeme effektiv bewältigen.