Domanda

Abbiamo un semplice flusso di test delle prestazioni di un'applicazione.

  1. Accedi
  2. Ricerca sulla base di alcuni criteri
  3. Ricerche di ripetizione per i diversi parametri.

Stiamo usando Jmeter di fare un test delle prestazioni. Abbiamo bisogno di avere più thread in esecuzione di testare questo in un modo scalabile.

Il modo in cui attualmente si dispone di questo organizzato è:

-Test Plan
  - Thread Group
      - Cookie Manager
      - Login To application
      - Search on param 1
      - Search on param 2
  - results summary table
  - Summary report

Quindi, in pratica abbiamo riassunto tavolo ritorno e riportiamo presente sul livello di piano, mentre Cookie Manager è presente a livello di gruppo di thread.

Quando eseguo per un thread funziona benissimo e completa bene. Quando mi scala a più thread, non appena il filo prossimo prende il via, la sessione per l'ultimo filo viene invalidata. Ciò causa errori per tutte le filettature già in esecuzione dovuti a thread appena generato.

Ho raggiunto questo risultato con l'osservazione:
1. Se corro più thread, solo ultimo filo ha risposte valide a causa albero sintesi Pagina 2. Se corro con 2 fili con periodo rampa fino a 10 secondi, il che significa ogni thread trova tempo per terminare stesso, allora entrambi eseguito con successo.

Come per la mia comprensione ogni login filo di verso le applicazioni e dal biscotto manager è a livello di thread, i valori saranno mantenuti per id di sessione per ogni thread, rispettivamente? Ma che cosa sta causando l'override del valore id di sessione tra i thread?

Ogni aiuto sarà molto apprezzato.

È stato utile?

Soluzione

Copiato da documentazione jmeter:

  

L'ultimo elemento è un cookie HTTP   Manager . Un Cookie Manager dovrebbe essere   aggiunto a tutti i test web - altrimenti   JMeter ignorerà i cookie. Con l'aggiunta di   che a livello di Gruppo Filo, abbiamo   garantire che tutte le richieste HTTP   condividere gli stessi biscotti.

Da capitolo "controllori logici 4.2.2" in http://jmeter.apache.org/ usermanual / test_plan.html .

Modifica : Credo che si dovrebbe usare http: // jmeter.apache.org/usermanual/component_reference.html#Simple_Controller di raggruppare le richieste con Cookie manager.

Altri suggerimenti

Credo che la risposta di Andrey non può fare. Egli cita che ogni richiesta userà gli stessi cookie, ma secondo il manuale jmeter:

  

Ogni thread JMeter ha una propria "area di stoccaggio cookie".

Per quanto ho capito la domanda, si desidera che ogni filo di condividere lo stesso cookie ID di sessione. Quindi mi sembra è necessario avere due gruppi di thread ed eseguirli consecutivamente. Primo gruppo di thread (con un unico filo che viene eseguito solo una volta) dovrebbe fare il login e salvare il valore cookie di sessione a un parametro globale (forse avete bisogno di utilizzare le funzionalità di scripting di JMeter). Quindi impostare il cookie nel cookie manager del secondo gruppo di thread.

La speranza che aiuta.

Provare ad aumentare la rampa di tempo. Ho incontrato lo stesso problema in cui la rampa tempo era circa 1 secondo poi aumentata a 3 secondi per filo e si correva bene.

Prova questo:

Aprire le user.properties presenti nella cartella bin di JMeter

Modifica e aggiungere la seguente riga:

CookieManager.check.cookies=false

Salva e eseguire lo script. Spero che possa risolvere il problema.

Per prima cosa modificare il codice per:

jmeter.properties
CookieManager.save.cookies=true
CookieManager.name.prefix=mycookie_

Quindi, aggiungere un manager dei cookie HTTP nello stesso gruppo filo come campionatore java.

Poi, nel tuo java campionatore aggiuntivo:

JMeterVariables jmv = JMeterContextService.getContext().getVariables();
Iterator<Map.Entry<String,Object>> it = jmv.getIterator();
while(it.hasNext()){
    Map.Entry<String,Object> v = it.next();
    System.out.println("name: " + v.getKey() + " value: " + v.getValue());
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top