Processore dentro JMeter: Preprocessore e Postprocessore
⚡ Riepilogo intelligente
Processore dentro JMeter modifica le richieste del campionatore prima o dopo l'esecuzione. PreProcessor prepara i dati della richiesta, mentre PostProcessor eseguetracts definisce e controlla il flusso di test, consentendo la correlazione, la parametrizzazione dinamica e un comportamento affidabile nei test delle prestazioni.
Un processore in Apache JMeter è un elemento del piano di test che modifica i Sampler all'interno del suo ambito. Viene eseguito automaticamente, appena prima che una richiesta parta JMeter o immediatamente dopo l'arrivo di una risposta, il che lo rende il meccanismo principale per la gestione dei dati dinamici durante un test della prestazione.
Esistono 2 tipi di processori:
- Pre-processore
- Post-processore
L'ambito determina la portata di un processore. Un processore posizionato direttamente sotto un Piano di test Un Thread Group si applica a tutti i Sampler sottostanti, mentre un processore annidato all'interno di un singolo Sampler influisce solo su quella specifica richiesta. Comprendere questa regola previene gli errori di configurazione descritti nella sezione di risoluzione dei problemi di questa pagina.
Pre-processore
Il preprocessore esegue alcune azioni prima effettuando una richiesta di campionamento.
Considera un semplice esempio: diciamo che volevi JMeter “spider” attraverso il sito web in prova, parse link(controlla tutti i link sulla pagina) e ritorno l'HTML. Dovresti aggiungere alcune azioni come "parser collegamento HTML" al controller prima di creare una richiesta HTTP.
Il diagramma sopra mostra il pre-processore posizionato tra il controller e la richiesta in uscita. Poiché viene eseguito per primo, è il posto corretto per costruire i dati della richiesta: generare un timestamp, leggere un valore da una colonna CSV, riscrivere un identificatore di sessione nel URLoppure assegnando credenziali diverse a ciascun utente virtuale.
Post-processore
Il post-processore esegue alcune azioni dopo aver effettuato una richiesta di campionamento.
Considera un semplice esempio: JMeter invia una richiesta HTTP al server web sotto test (ecc www.google.com) e ottieni la risposta. Tu vuoi JMeter Per interrompere il test se la risposta del server è un errore, è possibile utilizzare il post-processore nel modo seguente:
Come illustrato nel secondo diagramma, il Post-processore legge la risposta dopo che il Campionatore ha completato. Questa è anche la risposta standard alla correlazione. Quando un server restituisce un token, un ID di sessione o un numero d'ordine che cambia ad ogni esecuzione, un Post-processore cattura quel valore in un JMeter variabile in modo che il campionatore successivo possa riutilizzarla.
Tipi di preprocessori in JMeter
Apache JMeter Viene fornito con un set compatto di preprocessori. Ciascuno prepara un campionatore in modo diverso, quindi la selezione dell'elemento corretto mantiene il piano di test leggibile e di facile manutenzione.
- Timeout di esempio: Definisce la durata massima per una richiesta. Qualsiasi Sampler che rimanga in esecuzione per un periodo superiore al valore configurato viene contrassegnato come non riuscito.
- Parametri utente: Assegna valori specifici alle variabili per ogni utente virtuale, in modo che ogni thread invii il proprio set di dati.
- Analizzatore di link HTML: Il programma analizza la pagina da testare, esamina i link che trova e li inserisce nella successiva richiesta HTTP.
- HTTP URL Modificatore di riscrittura: Inietta un identificatore di sessione nel URL per applicazioni che track sessioni senza cookie.
- Parametri utente RegEx: Popola i parametri della richiesta utilizzando i valori acquisiti tramite un'espressione regolare da una risposta precedente.
- Preprocessore JDBC: Esegue un'istruzione SQL prima del campionatore, utile per popolare o reimpostare i record del database.
- Preprocessore JSR223: Esegue un Groovy or Java Script per qualsiasi logica di preparazione personalizzata. Sostituisce il precedente BeanShell PreProcessor e offre prestazioni nettamente superiori sotto carico.
Suggerimento: Preferisci il preprocessore JSR223 con il Groovy linguaggio su BeanShell. Groovy Gli script vengono compilati e memorizzati nella cache, quindi consumano molta meno CPU quando migliaia di thread vengono eseguiti in parallelo.
Tipi di post-processori in JMeter
I postprocessori si dividono in due gruppi: es.tracI campionatori estraggono valori da una risposta, mentre i gestori reagiscono al risultato di un campionatore. La tabella seguente associa ciascun elemento al formato di risposta più adatto.
| Post-processore | Adatto a | Uso tipico |
| Espressione regolare Extractor | Qualsiasi risposta testuale | Acquisizione di token o ID da HTML e testo semplice |
| Esclusione di confinetractor | Qualsiasi risposta testuale | Acquisizione di un valore utilizzando un limite sinistro e destro anziché un'espressione regolare completa. |
| JSON Extractor | Risposte JSON | Lettura dei campi dai payload REST durante Test dell'API |
| CSS/jQuery Extractor | risposte HTML | Selezione di un elemento tramite selettore CSS |
| Xpath Extractor | Risposte XML e XHTML | Navigazione in una struttura ad albero di documenti |
| Post-processore JDBC | Risultati del database | Verifica o pulizia delle righe dopo una richiesta |
| Post-processore JSR223 | Qualsiasi risposta | Analisi e asserzioni personalizzate tramite script |
| Gestore dell'azione dello stato del risultato | Qualsiasi risposta | Fermareping un thread o l'intero test quando un campionatore fallisce |
Il confine Extractor arrivò in JMeter 4.0 ed è spesso l'opzione più veloce da scrivere, perché richiede solo il testo immediatamente a sinistra e a destra del valore. L'espressione regolare ExtracTor rimane la scelta più flessibile quando il markup circostante varia tra le risposte.
Differenza tra pre-processore e post-processore
Entrambi gli elementi condividono le stesse regole di ambito, ma risolvono problemi opposti. Il confronto seguente riassume la distinzione prima dell'esempio pratico.
| Parametro | Preprocessore | Post-processore |
| Tempo di esecuzione | Viene eseguito prima che il campionatore invii la sua richiesta. | Viene eseguito dopo che il campionatore ha ricevuto la sua risposta |
| Scopo principale | Prepara e modifica i dati della richiesta | Legge i dati di risposta e reagisce di conseguenza. |
| Elementi tipici | Parametri utente, analizzatore di link HTML, preprocessore JSR223 | Espressione regolare Extractor, JSON Extractor, Gestore azioni stato risultato |
| Effetto sul flusso | Non è possibile interrompere il test, si può solo modellare la richiesta | Può interrompere un thread o l'intera esecuzione del test |
| Obiettivo comune | Parametrizzazione | Correzione e gestione degli errori |
In pratica, i due funzionano in coppia. Un PostProcessor cattura un token di sessione dalla risposta di login, e un PreProcessor, nella richiesta successiva, inserisce tale token prima che la chiamata venga inviata. L'esempio che segue illustra la parte PostProcessor di questo schema.
Esempio di post-processore
Questo tutorial ti mostrerà istruzioni passo passo su come utilizzare il post-processore in JMeter. Cominciamo con il semplice script di test.
- JMeter invia una richiesta HTTP al server web sotto test www.google.com.
- JMeter riceve una risposta dal Google server.
- Se la risposta del server è un errore, JMeter andrete a Fermati il test.
- Se la risposta del server OK (nessun errore), JMeter andrete a continua il test.
Ecco il tabella di marcia di questo esempio:
Condizione preliminare:
We riutilizzazione il Passaggio 1 e il Passaggio 2 nell'articolo JMeter Test di Performance. Se JMeter non è ancora installato, segui le istruzioni JMeter guida d'installazione prima.
Passaggio 1) Aggiungi gruppo di thread
Fare clic destro sul Piano di test e aggiungi un nuovo gruppo di thread: Aggiungi -> Discussioni (utenti) -> Gruppo discussione
Ma nel pannello di controllo del gruppo thread, inserisci Proprietà thread come segue:
Questa impostazione consente JMeter creare 10 richiesta dell'utente a http://www.google.com 10 volte.
Passaggio 2) Aggiungi JMeter elementi
- Aggiungi richiesta HTTP predefinita
- Aggiungi richiesta HTTP
Facciamo ancora JMeter invia richiesta http://www.google.com a Google server.
Passaggio 3) Aggiungi elemento post-processore
Right Click Gruppo discussione -> Aggiungi -> Post Processore -> Gestore dell'azione dello stato del risultato
Gestore dell'azione dello stato del risultato consente all'utente di interrompere il thread o l'intero test se la richiesta dell'utente non è riuscita.
Nel riquadro Gestione azione stato risultato, scegliere Interrompi il test adesso. Questa selezione interromperà il test se JMeter ottenere l'errore dalla risposta del server.
Passaggio 4) Configura la richiesta HTTP
Apri il pannello delle richieste HTTP. accedere "abc" al campo Percorso.
Quando entri "abc" al sentiero, JMeter creerà un file URL richiesta a Google server: http://www.google.com/abc. Questo URL non esiste su Google server. È Wrongs URL richiesta quindi Google Il server restituirà un errore.
Passaggio 5) Aggiungi Visualizza albero dei risultati
Right Click Gruppo discussione -> Aggiungi -> Ascoltatore -> Visualizza albero dei risultati
Passaggio 6) Eseguire il test
Selezionare Visualizza albero dei risultati, premere il pulsante Esegui sulla barra dei menu. Vedrai il errore risposta da Google server e il test si interromperà senza completando 100 thread.
Ora torna al passaggio 4, apri il riquadro Richiesta HTTP, inserisci "calendario" al riquadro. Esso rende JMeter creare URL richiesta https://calendar.google.com/calendar/u/0/r ai Google server. Questo è correggere URL richiesta quindi Google Il server restituirà OK (nessun errore).
Selezionare Visualizza albero dei risultati, premere il pulsante Esegui sulla barra dei menu. Vedrai il OK risposta da Google server e il test continuerà fino al completamento di tutti i 100 thread.
Aggiunta di un asserzione Insieme al gestore delle azioni di stato dei risultati, il controllo diventa più rigoroso, perché un'asserzione può far fallire un campionatore che ha restituito HTTP 200 ma ha consegnato il contenuto errato.
Troubleshooting
Se riscontri il problema durante l'esecuzione dello scenario sopra descritto, procedi come segue:
- Controlla se ti stai connettendo a Internet tramite un proxy. Se sì, rimuovi il proxy.
- Apri una nuova istanza di Jmeter
- Aprire il ProcessorTestPlan.jmx in Jmetro
- Double-fai clic su Gruppo di thread -> Visualizza albero dei risultati
- Esegui il test
Se un Post-processore sembra non fare nulla, controlla prima la sua posizione. Un Post-processore posizionato al di fuori dell'ambito del Sampler a cui è destinato non viene mai eseguito, che è la causa più frequente di un output vuoto.tracvariabile ted. Elementi correlati come controllori and test distribuito seguire la stessa logica di ambito.










.gif)

.gif)