Apache JMeter
Correlazioni di Apache JMeter
Ricerca…
introduzione
Nel test delle prestazioni di JMeter, Correlazione indica la possibilità di recuperare i dati dinamici dalla risposta del server e di inviarli alle richieste successive. Questa funzione è fondamentale per molti aspetti del test, come le applicazioni protette basate su token.
Correlazione utilizzando l'estrattore di espressioni regolari in Apache JMeter
Se è necessario estrarre informazioni da una risposta di testo, il modo più semplice è utilizzare le espressioni regolari. Il modello di corrispondenza è molto simile a quello usato in Perl. Supponiamo di voler testare un flusso di lavoro per l'acquisto di biglietti aerei. Il primo passo è presentare l'operazione di acquisto. Il passo successivo è garantire che siamo in grado di verificare tutti i dettagli utilizzando l'ID di acquisto, che deve essere restituito per la prima richiesta. Immaginiamo che la prima richiesta restituisca una pagina html con questo tipo di ID che dobbiamo estrarre:
<div class="container">
<div class="container hero-unit">
<h1>Thank you for you purchse today!</h1>
<table class="table">
<tr>
<td>Id</td>
<td>Your purchase id is 1484697832391</td>
</tr>
<tr>
<td>Status</td>
<td>Pending</td>
</tr>
<tr>
<td>Amount</td>
<td>120 USD</td>
</tr>
</table>
</div>
</div>
Questo tipo di situazione è il miglior candidato per l'utilizzo dell'estrattore di espressioni regolari JMeter. Espressione regolare è una stringa di testo speciale per descrivere un modello di ricerca. Ci sono molte risorse online che aiutano a scrivere e testare le espressioni regolari. Uno di questi è https://regex101.com/ .
Per utilizzare questo componente, apri il menu JMeter e: Aggiungi -> Post Processor -> Estrattore di espressioni regolari
L'estrattore di espressioni regolari contiene questi campi:
- Nome di riferimento: il nome della variabile che può essere utilizzata dopo l'estrazione
- Espressione regolare - una sequenza di simboli e caratteri che esprimono una stringa (motivo) che verrà ricercata all'interno del testo
- Modello: contiene riferimenti ai gruppi. Poiché un'espressione regolare può avere più di un gruppo, consente di specificare quale valore di gruppo estrarre specificando il numero del gruppo come $ 1 $ o $ 2 $ o $ 1 $$ 2 $ (estrai entrambi i gruppi)
- Match No.: specifica quale corrispondenza verrà utilizzata (il valore 0 corrisponde ai valori casuali / qualsiasi numero positivo N indica che la corrispondenza N / valore negativo deve essere utilizzata con il controller ForEach)
- Predefinito - il valore predefinito che verrà memorizzato nella variabile nel caso in cui non vengano trovate corrispondenze, viene memorizzato nella variabile.
La casella di controllo "Applica a" tratta gli esempi che effettuano richieste di risorse incorporate. Questo parametro definisce se l'espressione regolare verrà applicata ai risultati del campione principale oa tutte le richieste, incluse le risorse incorporate. Ci sono diverse opzioni per questo parametro:
- Campione principale e sottocampioni
- Solo campione principale
- Solo sottocampioni
- JMeter Variable - l'asserzione viene applicata al contenuto della variabile denominata, che può essere riempita da un'altra richiesta
La casella "Campo da verificare" consente di scegliere a quale campo deve essere applicata l'espressione regolare. Quasi tutti i parametri sono auto-descrittivi:
- Corpo: il corpo della risposta, ad esempio il contenuto di una pagina Web (escluse le intestazioni)
- Corpo (senza escape): il corpo della risposta, con tutti i codici di escape HTML sostituiti. Tieni presente che gli escape HTML vengono elaborati indipendentemente dal contesto, pertanto potrebbero essere apportate alcune sostituzioni errate (* questa opzione influisce notevolmente sulle prestazioni)
- Corpo - Corpo come documento - il testo estratto da vari tipi di documenti tramite Apache Tika (* potrebbe anche influire sulle prestazioni)
- Corpo - Richieste intestazioni: potrebbe non essere presente per campioni non HTTP
- Corpo - Intestazioni di risposta - potrebbe non essere presente per campioni non HTTP
- Corpo: URL
- Codice di risposta - ad es. 200
- Corpo - Messaggio di risposta - ad es. OK
Dopo che l'espressione è stata estratta, può essere utilizzata nelle richieste successive utilizzando la variabile $ {purchaseId}.
Questa tabella contiene tutte le contrazioni supportate da JMeter Regular Expressions:
Correlazione utilizzando l'estrattore XPath in JMeter
XPath può essere utilizzato per navigare tra elementi e attributi in un documento XML. Potrebbe essere utile quando i dati dalla risposta non possono essere estratti usando l'estrattore di espressioni regolari. Ad esempio, nel caso di uno scenario in cui è necessario estrarre i dati da tag simili con gli stessi attributi, ma con valori diversi. XPath Extractor è simile al CSS / JQuery Extractor ma XPath Extractor dovrebbe essere usato per il contenuto XML mentre CSS / JQuery Extractor dovrebbe essere usato per il contenuto HTML. Supponiamo che nella risposta abbiamo una tabella con valori diversi in cui è necessario estrarre il valore dalla seconda riga della tabella.
<div id="weeklyPrices">
<tr>
<td>$56.00</td>
<td>$56.00</td>
<td>$56.00</td>
<td>$56.00</td>
<td>$60.00</td>
<td>$70.00</td>
<td>$70.00</td>
</tr>
</div>
In prospettiva, l'XPath corretto per quel caso sarà: // div [@ id = 'weeklyPrices'] / tr / td 1
Per utilizzare questo componente, aprire il menu JMeter e: Aggiungi -> Post Processor -> XPath Extractor
XPath Extractor contiene diversi elementi di configurazione comuni menzionati nella 'Correlazione usando l'estrattore di espressioni regolari'. Questo include Nome, Applica a, Nome di riferimento, N. di partita (da JMeter 3.2) e Valore predefinito.
Ci sono molte risorse web con i cheat e gli editor online per creare e testare il tuo xpath creato (come questo ). Ma sulla base degli esempi seguenti, possiamo trovare il modo di creare i localizzatori xpath più comuni.
Se vuoi analizzare l'HTML in XHTML, dobbiamo controllare l'opzione "Usa ordine". Dopo aver deciso lo stato "Usa ordine", ci sono anche opzioni aggiuntive:
Se è selezionato "Usa ordine":
- Silenzioso: imposta la bandiera Tidy Quiet
- Segnala errori: se si verifica un errore Tidy, imposta l'Asserzione di conseguenza
- Mostra avvisi - imposta l'opzione Avvisi mostra Tidy
Se 'Use Tidy' è deselezionato:
- Usa spazi dei nomi: se selezionato, il parser XML utilizzerà la risoluzione dello spazio dei nomi
- Convalida XML: controlla il documento rispetto allo schema specificato
- Ignora gli spazi bianchi: ignora gli spazi bianchi degli elementi
- Recupera DTD esterne: se selezionato, vengono caricate le DTD esterne
'Restituire l'intero frammento XPath invece del contenuto del testo' è auto-descrittivo e dovrebbe essere usato se si desidera restituire non solo il valore xpath, ma anche il valore all'interno del suo localizzatore xpath. Potrebbe essere utile per le esigenze di debug.
Vale anche la pena menzionare l'elenco di plugin per browser molto convenienti per testare i localizzatori XPath. Per Firefox puoi utilizzare il plugin " Firebug " mentre per Chrome l'' XPath Helper ' è lo strumento più conveniente.
Correlazione Utilizzando il CSS / JQuery Extractor in JMeter
L'estrattore CSS / JQuery consente di estrarre i valori da una risposta del server utilizzando una sintassi del selettore CSS / JQuery, che altrimenti sarebbe stata difficile scrivere utilizzando l'espressione regolare. Come post-processore, questo elemento dovrebbe essere eseguito per estrarre i nodi richiesti, i valori di testo o attributi da un campionatore di richieste e per memorizzare il risultato nella variabile data. Questo componente è molto simile all'estrattore XPath. La scelta tra CSS, JQuery o XPath di solito dipende dalle preferenze dell'utente, ma vale la pena ricordare che XPath o JQuery possono attraversare e anche attraversare il DOM, mentre il CSS non può risalire il DOM. Supponiamo di voler estrarre tutti gli argomenti dalla documentazione Stack Overflow relativi a Java. Puoi utilizzare il plug-in Firebug per testare i selettori CSS / JQuery in Firefox o il CSS Selector Tester in Chrome.
Per utilizzare questo componente, apri il menu JMeter e: Aggiungi -> Post Processor -> CSS / JQuery Extractor
Quasi tutti i campi di questo estrattore sono simili ai campi di estrazione di espressioni regolari, quindi è possibile ottenere la loro descrizione da tale esempio. Una differenza, tuttavia, è il campo "Implementazione CSS / JQuery Extractor". Dal momento che JMeter 2.9 è possibile utilizzare l'estrattore CSS / JQuery basato su due diverse implementazioni: l'implementazione jsoup (descrizione dettagliata della sua sintassi qui ) o il Lagado JODD (la sintassi dettagliata può essere trovata qui ). Entrambe le implementazioni sono quasi le stesse e presentano solo piccole differenze di sintassi. La scelta tra loro è basata sulle preferenze dell'utente.
In base alla configurazione sopra menzionata, possiamo estrarre tutti gli argomenti dalla pagina richiesta e verificare i risultati estratti utilizzando il "Debug Sampler" e il listener "Visualizza albero dei risultati".
Correlazione Utilizzo dell'estrattore JSON
JSON è un formato di dati comunemente utilizzato che viene utilizzato nelle applicazioni basate sul Web. JMeter JSON Extractor offre un modo per utilizzare le espressioni JSON Path per estrarre i valori dalle risposte basate su JSON in JMeter. Questo post processore deve essere posizionato come figlio di HTTP Sampler o per qualsiasi altro campionatore che abbia risposte.
Per utilizzare questo componente, apri il menu JMeter e: Aggiungi -> Post Processor -> JSON Extractor.
L'estrattore JSON è molto simile all'Estrattore di espressioni regolari. Quasi tutti i campi principali sono menzionati in questo esempio. Esiste solo un parametro specifico JSON Extractor: 'Calcola concatenazione calcolata'. Nel caso in cui vengano trovati molti risultati, questo estrattore li concatenerà usando il separatore "," e memorizzandolo in una var denominata _ALL.
Supponiamo che questa risposta del server con JSON:
{
"store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
La seguente tabella fornisce un ottimo esempio di diversi modi per estrarre i dati da un JSON specificato:
Attraverso questo link è possibile trovare una descrizione più dettagliata del formato del percorso JSON, con esempi correlati.
Correlazione automatica mediante l'utilizzo di SmartJMX di BlazeMeter
Quando si scrivono manualmente gli script delle prestazioni, è necessario gestire autonomamente la correlazione. Ma c'è un'altra opzione per creare i tuoi script - registrazione degli script di automazione. Da un lato, l'approccio manuale aiuta a scrivere script strutturati ed è possibile aggiungere tutti gli estrattori richiesti allo stesso tempo. D'altro canto, questo approccio richiede molto tempo.
La registrazione degli script di automazione è molto semplice e ti consente di fare lo stesso lavoro, solo molto più velocemente. Ma se usi metodi di registrazione comuni, gli script saranno molto poco strutturati e di solito richiedono l'aggiunta di parametrizzazioni aggiuntive. La funzione "Smart JMX" sul registratore Blazemeter combina i vantaggi di entrambi i modi. Può essere trovato a questo link: [ https://a.blazemeter.com/app/recorder/index.html][1]
Dopo la registrazione, vai alla sezione "Registratore".
Per avviare la registrazione dello script, devi prima configurare il proxy del browser ( coperto qui ), ma questa volta dovresti ottenere un host proxy e una porta forniti dal registratore BlazeMeter.
Una volta configurato il browser, puoi procedere alla registrazione dello script premendo il pulsante rosso in basso. Ora puoi andare all'applicazione sotto test ed eseguire i flussi di lavoro degli utenti per la registrazione.
Dopo aver registrato lo script, è possibile esportare i risultati in un file JMX "SMART". Un file jmx esportato contiene un elenco di opzioni che ti consentono di configurare lo script e la parametrizzazione, senza sforzi aggiuntivi. Uno di questi miglioramenti è che il JMX "SMART" trova automaticamente i candidati alla correlazione, lo sostituisce con l'estrattore appropriato e fornisce un modo semplice per un'ulteriore parametrizzazione.