Secondo documentazione JMeter:
16.12 variabili condivisione tra filati e gruppi di thread
variabili sono locali a un thread una variabile impostata in un thread non può essere letto in altro. Questo è di design. Per le variabili che possono essere determinate prima dell'avvio di un test, vedere Test di parametrizzazione (sopra). Se il valore non è noto fino all'avvio del test, ci sono varie opzioni:
- Conservare la variabile come una proprietà - proprietà sono globali all'istanza JMeter
- variabili scrivere su un file e ri-leggere loro.
- utilizza lo spazio bsh.shared - vedere 16.8.2 Sharing Variables
- scrivere classi Java
Un altro modo per passare variabili tra i fili è quello di utilizzare JMeter-plugins come mentioned by Andrey Botalov below.
Ma ho scoperto che è un po 'di confusione usarlo la prima volta ma dà pieno controllo della variabile durante il passaggio da thread a thread. Seguite il mio esempio con l'uso BeanShell e si vede come è facile:
successivo riferimento alle sezioni in foto sotto:
(1,1) Qui ho creato variabile personalizzata in Variabili definite dall'utente (o si può fare con BSF Proccessor - disabilitata in questo esempio (1,2))
(2,1) (2,4) ho utilizzato con successo variabile nel primo thread - niente di speciale :)
(2,2) Aggiunto BeanShell PostProcessor e personalizzato la mia variabile
(2,3) aggiunto alla coda
(3,1) In secondo filo - variabile è preso dalla coda - con qualsiasi nome che si desidera.Ma fai attenzione, usa saggiamente Timeout, perché questo thread attenderà fino alla fine precedente in modo che possa ottenere una variabile modificata (sperimentare una risposta lunga)
(3.2) (3.3) (3,4) Che ripetuti passaggi di utilizzo e modifica variabile
(3.5) variabile viene inviato una volta in nuova coda - in modo da fornire nuovo nome ad esso
(4,1) (4,2) (4,3) variabile modificata Afferrato dalla nuova coda funziona come fascino
Warning
Se si aggiungono più thread, aggiungere un po 'Counter to Thread Group con variabile e aggiungere questo nome di variabile al nome della coda - fare lo stesso in Thread Group in cui si tenta di catturare la coda in modo che la coda abbia un nome univoco per ogni thread (scrivere un se hai bisogno di un'esplorazione più chiara)
Se hai più di una richiesta http in un gruppo di thread, aggiungi il pre processore di comunicazione thread come ultimo figlio (o altro se vuoi ottenere qualche cosa personalizzata) http Request
Play, modificare, personalizzare per ottenere il miglior risultato :) L'aggiunta di più thread può causare un comportamento indesiderato in modo nee d essere vigile.
Le proprietà troppo brutte non possono memorizzare oggetti ...in realtà sembra che i metodi 'get()' e 'put()' siano ancora disponibili da HashTable. Sarebbe molto brutto se abusassi delle proprietà di jmeter per memorizzare i valori degli oggetti? Il mio problema è che voglio che tutti i thread condividano lo stesso oggetto per evitare la creazione di più oggetti quando corro con molti thread. – akostadinov
grazie mille. Ha funzionato per me come un incantesimo! –
Un fermo qui. __setProperty viene chiamato prima che lo script venga passato a BeanShell. Quindi, se stai cercando di assegnare un valore a una variabile da beanshell, non saresti in grado di ottenere il valore –