jMeter - Espressioni regolari

Le espressioni regolari vengono utilizzate per cercare e manipolare il testo, in base a modelli. JMeter interpreta forme di espressioni regolari o modelli utilizzati in un piano di test JMeter, includendo il software di corrispondenza dei modelli Apache Jakarta ORO .

Con l'uso di espressioni regolari, possiamo sicuramente risparmiare molto tempo e ottenere una maggiore flessibilità quando creiamo o miglioriamo un piano di test. Le espressioni regolari forniscono un metodo semplice per ottenere informazioni dalle pagine quando è impossibile o molto difficile prevedere un risultato.

Un esempio di utilizzo standard dell'utilizzo delle espressioni consiste nell'ottenere un ID di sessione dalla risposta del server. Se il server restituisce una chiave di sessione univoca, possiamo ottenerla facilmente utilizzando le espressioni nel nostro script di caricamento.

Per utilizzare espressioni regolari nel piano di test, è necessario utilizzare Regular Expression Extractor di JMeter. È possibile inserire espressioni regolari in qualsiasi componente di un piano di test.

Vale la pena sottolineare la differenza tra contains e matches, come utilizzato nell'elemento di test Asserzione risposta -

  • containssignifica che l'espressione regolare corrisponde almeno a una parte del target, quindi "alfabeto" "contiene" "ph.b." perché l'espressione regolare corrisponde alla sottostringa "phabe".

  • matchessignifica che l'espressione regolare corrisponde all'intero obiettivo. Quindi l '"alfabeto" è "abbinato" a "al. * T".

Supponi di voler abbinare la seguente porzione di una pagina web:

name = "file" value = "readme.txt"

E vuoi estrarre readme.txt. Un'espressione regolare adatta sarebbe:

name = "file" value = "(.+?)">

I caratteri speciali sopra sono:

  • ( e ) - questi racchiudono la parte della stringa di corrispondenza da restituire

  • . - corrisponde a qualsiasi carattere

  • + - una o più volte

  • ? - fermati quando la prima partita riesce

Crea piano di test JMeter

Comprendiamo l'uso delle espressioni regolari nell'estrattore di espressioni regolari, un elemento post-processore, scrivendo un piano di test. Questo elemento estrae il testo dalla pagina corrente utilizzando un'espressione regolare per identificare il modello di testo a cui è conforme un elemento desiderato.

Per prima cosa scriviamo una pagina HTML che contiene un elenco di persone e i loro ID email. Lo distribuiamo sul nostro server Tomcat. I contenuti di html (index.html) sono i seguenti:

<html>
   <head>
   </head>
	
   <body>
      <table style = "border: 1px solid #000000;">
		
         <th style = "border: 1px solid #000000;">ID</th>
         <th style = "border: 1px solid #000000;">name</th>
         <th style = "border: 1px solid #000000;">Email</th>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">3</td>
            <td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">4</td>
            <td id = "Name" style = "border: 1px solid #000000;">joe</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
      </table>
   </body>
</html>

Durante la distribuzione sul server Tomcat, questa pagina apparirà come mostrato nella seguente schermata:

Nel nostro piano di test, selezioneremo la persona nella prima riga della tabella delle persone visualizzata nella pagina dell'elenco delle persone sopra. Per acquisire l'ID di questa persona, determiniamo prima il modello in cui troveremo la persona nella seconda riga.

Come si può vedere nella seguente istantanea, l'ID della seconda persona è circondato da <td id = "ID"> e </ td>, ed è la seconda riga di dati con questo modello. Possiamo usarlo per abbinare il modello esatto da cui vogliamo estrarre le informazioni. Dato che vogliamo estrarre due informazioni da questa pagina, l'ID persona e il nome della persona, i campi sono definiti come segue:

Avvia JMeter, aggiungi un gruppo Thread Test Plan → Add→ Threads(Users)→ Thread Group.

Quindi aggiungi una richiesta HTTP del campionatore, seleziona il piano di test, fai clic con il pulsante destro del mouse Add → Sampler → HTTP Request e inserisci i dettagli come mostrato di seguito -

  • Name - Gestisci

  • Server Name or IP - localhost

  • Port Number - 8080

  • Protocol - Lo terremo vuoto, il che significa che vogliamo HTTP come protocollo.

  • Path - jmeter / index.html

Successivamente, aggiungi un Estrattore di espressioni regolari. Seleziona il campionatore richiesta HTTP (Gestisci), fai clic con il tasto destroAdd → Post Processor → Regular Expression Extractor.

La tabella seguente fornisce una descrizione dei campi utilizzati nella schermata sopra:

Suor n Campo e descrizione
1

Reference Name

Il nome della variabile in cui verrà memorizzato il test estratto (refname).

2

Regular Expression

Il modello rispetto al quale verrà confrontato il testo da estrarre. I gruppi di testo che verranno estratti sono racchiusi dai caratteri "(" e ")". Usiamo ". +?" per indicare una singola istanza del testo racchiuso tra i tag <td ..> .. </td>. Nel nostro esempio l'espressione è - <td id = "ID"> (+?) </td> \ s * <td id = "Name"> (+?) </td> \ s *

3

Template

Ogni gruppo di testo estratto inserito come membro della variabile Persona, seguendo l'ordine di ogni gruppo di pattern racchiuso da '(' e ')'. Ogni gruppo viene memorizzato come refname_g #, dove refname è la stringa immessa come nome di riferimento e # è il numero del gruppo. $ 1 $ a si riferisce al gruppo 1, $ 2 $ a si riferisce al gruppo 2, ecc. $ 0 $ si riferisce a qualunque cosa corrisponda all'intera espressione. In questo esempio, l'ID che estraiamo è mantenuto in Person_g1, mentre il valore Name è memorizzato in Person_g2.

4

Match No.

Poiché abbiamo in programma di estrarre solo la seconda occorrenza di questo pattern, facendo corrispondere il secondo volontario, utilizziamo il valore 2. Il valore 0 farebbe una corrispondenza casuale, mentre un valore negativo deve essere utilizzato con il controller ForEach.

5

Default

Se l'elemento non viene trovato, questo sarà il valore predefinito. Questo è un campo facoltativo. Puoi lasciarlo vuoto.

Aggiungi un listener per acquisire il risultato di questo piano di test. Fare clic con il pulsante destro del mouse sul gruppo di thread e selezionare l'opzione Aggiungi → Listener → Visualizza albero dei risultati per aggiungere l'ascoltatore.

Salva il piano di test come reg_express_test.jmx ed esegui il test. L'output sarebbe un successo come mostrato nello screenshot seguente: