Condivisione della tecnologia

Una breve discussione sui parametri utente delle espressioni regolari del preprocessore

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Una breve discussione sui parametri utente delle espressioni regolari del preprocessore

I parametri utente delle espressioni regolari (parametri utente RegEx) è un pre-processore (pre-processore) che consente agli utenti di estrarre valori dai dati di risposta in base alle espressioni regolari e applicarli e passare questi valori come parametri ai successiviRichiesta HTTP o altri posti necessari. Questa funzionalità è altamente flessibile per la gestione di contenuto dinamico, ID di sessione, token, ecc. ed è un componente chiave per l'implementazione di script di test automatizzati.

scene da utilizzare

  1. Elaborazione dei parametri dinamici: quando il sistema di destinazione genera diversi parametri dinamici (come ID di sessione, timestamp, ecc.) in ciascuna richiesta, deve estrarre i parametri successivi e utilizzare questi parametri per continuare le richieste successive.
  2. Personalizzazione dei dati di test: personalizza i parametri delle richieste successive in base al contenuto della risposta, ad esempio estraendo l'ID utente dalla risposta di accesso per le successive richieste di query del profilo.
  3. Iterazione dei dati: se la risposta contiene più set di corrispondenze, è possibile configurare il processore per eseguire il loop dell'estrazione e applicarla a più richieste, adatte per elenchi di test o pagine di risultati di ricerca.

Passaggi di configurazione

  1. Aggiungi i parametri utente dell'espressione regolare:
    ○ Nel workbench o nel piano di test di JMeter, seleziona una richiesta HTTP o un altro campionatore che deve essere parametrizzato.
    ○ Fare clic con il pulsante destro del mouse e selezionare "Aggiungi" > "Preprocessore" > "Parametri utente espressioni regolari".
  2. Parametri di configurazione:
    ○ Nome di riferimento dell'espressione regolare: il nome della variabile nell'estrattore di espressioni regolari. Il nome qui deve essere coerente con l'espressione regolare.
    ○ Numero del gruppo regexp dei nomi dei parametri: il numero del gruppo del nome del parametro, come dettagliato negli esempi seguenti.
    ○ Numero del gruppo regex dei valori dei parametri: il valore corrispondente del gruppo dei nomi dei parametri, come dettagliato negli esempi seguenti.

Esempi

Usiamo SpringBoot per scrivere il seguente codice di interfaccia

 @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;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Quindi scriviamo il seguente script
Inserisci qui la descrizione dell'immagine
Gruppo di thread: Mantieni predefinito
Richiesta HTTP 1: protocollo http, nome server o IP127.0.0.1, numero porta 8091, metodo POST, percorso/login, codifica contenuto utf-8, dati corpo messaggio

{
    "username": "admin",
    "password": "password"
    }
  • 1
  • 2
  • 3
  • 4

Estrazione di espressioni regolari器:设置的参数为引用名称var,正则表达式"id"😦.?),"nome":"(.?)", "email" (può essere riconosciuto dal contenuto del codice di esempio) e il nostro scopo è estrarre l'ID e il nome, il numero corrispondente è impostato su -1 e il valore predefinito è NotFound
A questo punto possiamo prima disabilitare la richiesta HTTP 2 e i parametri utente dell'espressione regolare, quindi eseguire lo script e visualizzare il campionatore di debug dell'albero dei risultati. Puoi vedere i seguenti risultati nel corpo della risposta dei dati della risposta.

Variabili JMeter:
JMeterThread.last_sample_ok=false
Pacchetto di esempio JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@4fa1cf1
INIZIO.HMS=165132
START.MS=1720515092259
INIZIO.YMD=20240709
TESTSTART.MS=1720578466746
_jm__threadgroup__idx=0
_misuratore j.U_T
=gruppo di discussioni 1-1
var=Non trovato
var_1=
var_1_g=2
var_1_g0="id":123,"nome":"John Doe","email"
var_1_g1=123
var_1_g2=Giovanni Rossi
var_2=
var_2_g=2
var_2_g0="id":456,"nome":"Jane Smith","email"
var_2_g1=456
var_2_g2=Giovanni Battista
var_matchNr=2

Dal contenuto di cui sopra, possiamo vedere il valore della variabile var estratta dall'espressione regolare corrispondente. A questo punto, possiamo continuare a verificare l'applicazione del preprocessore dei parametri utente dell'espressione regolare e continuare a impostare gli altri parametri del componente.
Richiesta HTTP 2: protocollo http, nome server o IP127.0.0.1, numero porta 8091, metodo POST, percorso/login, codifica contenuto utf-8, quindi aggiungi due parametri ai parametri, inserisci rispettivamente i nomi 123, 456, non usarli ora Indipendentemente dal significato specifico, proviamo prima.
Parametri utente dell'espressione regolare: il nome di riferimento dell'espressione regolare è impostato su var, il nome del parametro qui deve essere coerente con il nome del parametro nell'espressione regolare precedente, il numero del gruppo regexp dei nomi dei parametri è impostato su 1, il numero del gruppo regex dei valori dei parametri è impostato a 2, perché Come configurarlo in questo modo? Possiamo capirlo in questo modo. Non abbiamo impostato 123 e 456 nella richiesta HTTP 2? L'impostazione del numero del gruppo regexp dei nomi dei parametri su 1 può essere intesa come prendere i parametri di var_1_g1 e var_2_g1 nei parametri var nella richiesta HTTP 2 Dopo che i parametri sono coerenti con i parametri qui, corrisponderemo alla relazione tra parametri e dati, aprendo la strada affinché il numero del gruppo regex dei valori dei parametri sia impostato su 2. Possiamo ben capire che quando i valori dei parametri ​​il numero del gruppo regex è impostato su 2, ciò che si ottiene I parametri diventano var_1_g2 e var_2_g2.
Il passaggio successivo consiste nel verificare i nostri risultati. Eseguire lo script per visualizzare i dati del post del corpo della richiesta nella richiesta HTTP 2 nell'albero dei risultati. Nel complesso, la nostra richiesta non è riuscita, ma non ha importanza. Abbiamo appena verificato ciò di cui abbiamo bisogno da verificare. Il risultato è irrilevante

POSTARE http://127.0.0.1:8091/login
Dati POST:
123=Giovanni+Rossi&456=Jane+Smith
[niente biscotti]

Dai dati POST sopra, puoi vedere che i dati corrispondenti sono stati riflessi nella richiesta.

Precauzioni

● Ambito: i parametri utente delle espressioni regolari hanno effetto solo sulla seguente richiesta HTTP o campionatore. Se è necessario applicarli a livello globale, considerare l'utilizzo dell'"estrattore di espressioni regolari" insieme alle variabili.
● Debug: utilizzare il listener "Visualizza albero dei risultati" per verificare la corrispondenza delle espressioni regolari per garantire la corretta estrazione dei dati.

Riassumere

I parametri utente delle espressioni regolari sono una potente funzionalità di JMeter, che semplifica l'elaborazione dei dati dinamici e migliora la flessibilità e l'automazione degli script di test. Configurare e utilizzare correttamente questa funzione può far fronte in modo efficace alle esigenze di test delle prestazioni di sistemi complessi.