2009-10-04 6 views
30

sto usando la riga di comando di JMeter per stressare il nostro sito Web api. Ora, ecco un esempio di risultato che sto tornando:JMeter - come registrare la richiesta completa per una risposta non riuscita?

Creating summariser <summary> 
Created the tree successfully using street_advisor.jmx 
Starting the test @ Sat Oct 03 15:22:59 PDT 2009 (1254608579848) 
Waiting for possible shutdown message on port 4445 
summary +  1 in 0.0s = 37.0/s Avg: 27 Min: 27 Max: 27 Err:  1 (100.00%) 
<snip a few more lines> 
<then i break it> 

Quindi ricevo un errore.

Attualmente, tutti gli errori stanno andando a un file. Quando controllo quel file, sta dicendo che è un 404. Ehm ... ok. C'è comunque che io possa vedere esattamente cosa ha provato la richiesta JMeter?

Ecco un frammento del mio file di configurazione ...

<ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Error Writer" enabled="true"> 
      <boolProp name="ResultCollector.error_logging">true</boolProp> 
      <objProp> 
      <name>saveConfig</name> 
      <value class="SampleSaveConfiguration"> 
       <time>true</time> 
       <latency>true</latency> 
       <timestamp>false</timestamp> 
       <success>true</success> 
       <label>true</label> 
       <code>true</code> 
       <message>true</message> 
       <threadName>false</threadName> 
       <dataType>true</dataType> 
       <encoding>false</encoding> 
       <assertions>true</assertions> 
       <subresults>true</subresults> 
       <responseData>false</responseData> 
       <samplerData>false</samplerData> 
       <xml>true</xml> 
       <fieldNames>false</fieldNames> 
       <responseHeaders>true</responseHeaders> 
       <requestHeaders>true</requestHeaders> 
       <responseDataOnError>false</responseDataOnError> 
       <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> 
       <assertionsResultsToSave>0</assertionsResultsToSave> 
       <bytes>true</bytes> 
      </value> 
      </objProp> 
      <stringProp name="filename">./error.jtl</stringProp> 
     </ResultCollector> 

Ora, prima che qualcuno dice 'Controllare i file di log server web', so di poter fare questo e sì, ho trovato il 404. ma spero di vedere se è possibile senza accedervi .. soprattutto se sono su un altro server e/o non riesco ad accedervi. Per favore aiuto!

risposta

53

Il componente View Results Tree mostra un albero di tutte le risposte di esempio, consentendo di visualizzare sia la richiesta che la risposta per qualsiasi campione. È inoltre possibile salvare l'intera risposta a un file utilizzando Salva risposte in un file.

+5

Corretto, ma stavo facendo questo tramite la riga di comando .. quindi non ho accesso alla GUI. Ma non l'ho specificato nella mia domanda (arrossire). Inoltre, non riuscivo a capire come farlo tramite la riga di comando, quindi ho finito per fare quello che hai suggerito comunque :) –

+2

Se stai usando la riga di comando puoi configurare il test per inviare i dati a un file di output (jtl) e quindi elaborare quel file con questo strumento: http://jmeter-plugins.org/wiki/JMeterPluginsCMD/ per esportare in PNG o CSV. – hveiras

+0

Se ho letto correttamente la domanda, stavo cercando la richiesta registrata non la risposta ...? – arcseldon

20

Ho trovato questo thread alla ricerca di una soluzione per registrare la risposta solo quando un campionatore fallisce, quindi la soluzione accettata non è buona per me. Ho occasionalmente errori di campionamento con un carico molto elevato che coinvolgono centinaia di migliaia di campioni, quindi un listener di alberi è completamente poco pratico per me (raggiungerà diversi gigabyte di dimensioni), quindi ecco cosa mi è venuto in mente (che dovrebbe essere buono per scenario del PO pure):

Aggiungere un BeanShell Assertion (dovrebbe venire dopo tutte le altre affermazioni) e mettere il codice qui sotto in esso:

if (Boolean.valueOf(vars.get("DEBUG"))) { 
    for (a: SampleResult.getAssertionResults()) { 
    if (a.isError() || a.isFailure()) { 
     log.error(Thread.currentThread().getName()+": "+SampleLabel+": Assertion failed for response: " + new String((byte[]) ResponseData)); 
    } 
    } 
} 

Questo farà sì che l'intera risposta ottenendo registra nel registro JMeter un file che va bene nel mio caso, poiché so che le risposte sono veramente piccole, ma per le risposte di grandi dimensioni, potrebbe essere eseguita un'elaborazione più intelligente.

+0

Bella idea !! Woot! –

+0

Ho aggiunto la possibilità di controllare il registro utilizzando un UDV chiamato "DEBUG", quindi è più semplice lasciare l'asserzione per i carichi di lavoro regolari e abilitarlo solo quando necessario. – haridsv

+0

@haridsv Bella decisione! Ma è possibile salvare la richiesta Data che ha causato una risposta non riuscita? – ShurupuS

4

C'è un listener 'Salva risposte a un file', che può salvare nel file solo quando si verifica un errore.

Problemi correlati