Come eseguire la richiesta HTTP PUT leggendo i valori da CSV in JMeter?

Aug 18 2020

Ho una domanda su come posso impostare il campionatore di richieste HTTP per il metodo HTTP PUT in JMeter in modo che possa leggere i dati dal file CSV utilizzando CSV Data Set Config? Nel mio scenario sto utilizzando ** Concurrency Thread Group ** con i seguenti parametri: * ** Target Concurrency **: 50 * RampUp ** Time ** (** secs **): 10 * RampUp Steps ** count **: 5 * Mantieni il bersaglio .. (** sec **): 10

Questa è la mia configurazione CSV Data Set Config :

(Java) I tipi di nomi di variabili sono: bookId: Long , titolo: String , prezzo: double , importo: int , autori: Set , categorie: Set , isDeleted: boolean

Questa è la mia configurazione del campionatore di richieste HTTP :

... e questo è il contenuto del mio file bookCollection10Items.csv in cui i valori tra virgolette sono stringhe e quelli tra parentesi angolari [] sono matrici di valori (poiché sto aggiornando il libro che ha una relazione molti-a-molti con categorie / autori ):

1, "Harry Potter e la pietra magica", 39.99,2500, [4], 7,11, false
2, "Murder on the Orient Express", [19.98,500500], 1,9, false
3, "The Murder of Roger Ackroyd ", 19.99,1500,1, [7,9], falso
4," Harry Potter e la camera dei segreti ", 24.99,0,4, [7,9], vero
5," Harry Potter e il prigioniero di Azkaban ", 17.99,1200,4,7, falso
6," Il codice Da Vinci ", 29.99,700,8,10, falso
7," Inferno ", 22.50,950,8,10, falso
11," Guerra and Peace ", 31.99,300,5,8, false
14," The Trial ", 27.99,450,6,9, false
15," IT ", 16.50,0,2,5, true

Quello che voglio ottenere è che ogni thread (cioè utente) selezioni un elemento dal file "bookCollection10Items.csv" in modo round-robin e lo aggiorni per un determinato bookId utilizzando "Tutti i thread" come opzione di modalità di condivisione .
Qualsiasi consiglio / suggerimento è molto apprezzato.

Risposte

2 DmitriT Aug 18 2020 at 22:52

La configurazione del set di dati CSV incorporata di JMeter legge le righe dal file CSV in modo sequenziale in modo che ogni utente riceva la riga successiva a ogni iterazione.

Se hai bisogno di leggere una riga casuale (tuttavia non penso sia una buona idea perché credo che i test debbano essere ripetibili ) dovrai usare alcuni plugin come:

  1. Configurazione del set di dati CSV casuale
  2. o HTTP Simple Table Server

Entrambi possono essere installati utilizzando JMeter Plugins Manager

1 NikolaS Aug 24 2020 at 17:29

Sono riuscito a trovare una soluzione al mio problema -> Ho commesso un errore:

1) Creando il file CSV in gEdit (l'equivalente di Linux del Blocco note di Windows) invece di usare LibreOffice Calc dove il lavoro viene svolto nelle celle . Quindi in questo modo (sia in gEdit che in LibreOffice Calc ):

3, "The Murder of Roger Ackroyd", 19.99,1500,1, [7,9], falso

... è un no-no.

2) Rimuovere le parentesi angolari [] dall'elenco in modo che gli array NON contengano array. Ad esempio, quando sono presenti parentesi angolari ottengo questo:

{
   // some other fields
   "authors" : [[7,9]]
}

3) Doveva formattare correttamente i numeri con i decimali per contenere un punto , NON una virgola ( problemi locali ). Ad esempio, il formato corretto è 19,99, il formato errato 19,99