2012-04-17 11 views
10

Ho un test in cui gli utenti effettueranno l'accesso e inseriranno la parola chiave di ricerca nel campo di ricerca e otterranno i risultati. Finalmente si disconnette.Come generare un carico utente simultaneo in Jmeter

Ora voglio testare la concorrenza utilizzando Jmeter. Quindi questo è quello che mi è venuto in mente.

Test plan 
    Thread group 
    + Login request 
    + Synchronizing Controller 
    + Search string 
    + Synchronizing Controller 
    + Logout 

Ho aggiunto 10 in numero di thread. Ho aggiunto 5 in Synchronizing Controller. Quindi quando eseguirò il test otterrò la concorrenza di 5 utenti? Rest 5 utenti saranno utenti simultanei?

Inoltre, è stata inoltrata una richiesta al caricamento della pagina di accesso. Quindi, per ottenere la concorrenza all'accesso, ho aggiunto tutte le richieste nel controller di transazione e aggiunto Synchronizing Controller come controller di transazione secondario. Per favore fatemi sapere se lo sto facendo bene.

Inoltre, fatemi sapere se esiste un altro modo per ottenere la concorrenza per un'azione specifica (ad esempio: 5 utenti che eseguono il pulsante di accesso contemporaneamente).

risposta

16

Prima di tutto, dovresti cercare di distinguere tra "simultaneo" e "simultaneo". Di solito sono termini molto simili ma nei test di carico hanno significati diversi. Simultaneo significa due o più richieste allo stesso tempo. Concurrent è due o più thread (script) in esecuzione in parallelo.

Quindi, quello di cui stai parlando sta tentando di configurare JMeter per simulare più richieste simultanee. Ma in realtà, c'è un approccio molto migliore di questo. Invece di concentrarti sul tentativo di raggiungere la stessa richiesta nello stesso momento, il che è poco pratico in JMeter, dovresti impostare il test in modo che sia una rappresentazione realistica del tipo di carico che l'applicazione deve supportare. Se lo fai bene, utilizzando i tempi di attesa casuali, i controller di throughput e un numero realistico di thread, testerai automaticamente la concorrenza e allo stesso tempo eseguirai anche test di performance genuini, validi e utili.

Quindi, in pratica, rilasciare il timer di sincronizzazione, utilizzare invece un timer di rendimento costante, configurare i tempi di attesa e quindi calcolare il numero corretto di thread per generare il carico desiderato.

Il bonus aggiunto a questo approccio è che è molto meno probabile che si ottengano falsi negativi. Ad esempio, se si colpisce il server con 5 richieste di accesso simultanee, è possibile che questa chiamata sia a thread singolo e che i tempi di risposta aumentino. Ma forse questo non importa, forse le possibilità di due chiamate di accesso allo stesso tempo sono così piccole che non vale la pena spendere tempo a cambiare il codice. Questo è un concetto molto, molto importante nei test di carico - forse il più importante - è necessario avere obiettivi realistici, senza questi si potrebbero eseguire test, trovare bug falsi e generalmente perdere tempo per sempre.

+1

Grazie per l'eccellente spiegazione. Ma la mia situazione è leggermente diversa. Voglio solo vedere quando 5 utenti eseguono il login e il pulsante di ricerca nello stesso momento in cui il mio server risponde. Ecco perché ho usato il controller di sincronizzazione. Quando ho eseguito il test con il controller di sincronizzazione, i risultati che sto ottenendo sono leggermente diversi. Ho menzionato 10 thread nel gruppo thread e 5 in sincronizzazione. Quindi ho pensato che funzionasse come 5 utenti simultanei e 5 simultanei. Ma questo non è il modo in cui è in esecuzione. Il test sta inviando il login e la richiesta di ricerca in 2 lotti. Ogni batch contiene 5 utenti. – user1169236

+1

Anche in questo caso, è necessario comprendere il diverso tra simultaneo e simultaneo. Sono diversi. Un timer sincrono ti darà simultaneità, più thread ti daranno la concorrenza. –

+0

Grazie per i suggerimenti! Ho trovato la soluzione. – user1169236

Problemi correlati