web-dev-qa-db-fra.com

JMeter - comment enregistrer la demande complète pour une réponse échouée?

j'utilise la ligne de commande JMeter pour tester la résistance de notre API de site Web. Maintenant, voici un exemple de résultat que je reviens:

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>

Je reçois donc une erreur.

Actuellement, toutes les erreurs vont dans un fichier. Quand je vérifie ce fichier, il dit que c'est un 404. Euh .. ok. Existe-t-il de toute façon que je peux voir exactement ce que la demande JMeter a essayé?

voici un extrait de mon fichier de configuration ...

<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>

Maintenant, avant que quelqu'un dise "Vérifiez les fichiers journaux du serveur Web", je sais que je peux le faire et oui, j'ai trouvé le 404 .. mais j'espère voir si c'est possible sans y accéder .. surtout s'ils sont sur un autre serveur et/ou je ne peux pas y accéder. Aidez-moi!

41
Pure.Krome

Le composant Afficher l'arborescence des résultats affiche une arborescence de tous les exemples de réponses, vous permettant d'afficher à la fois la demande et la réponse pour n'importe quel échantillon. .

Lors du test de charge ( Toujours en mode NON GUI ), remplissez le champ "Nom de fichier" et sélectionnez pour enregistrer uniquement les réponses par erreur:

View Results Tree in error

Comme vous pouvez le voir ci-dessus, nous avons cliqué sur Configurer pour sélectionner tous les champs sauf ceux CSV.

Vous pouvez également enregistrer la réponse entière dans un fichier en utilisant Enregistrer les réponses dans un fichier :

Save Responses to a file

66
rodrigoap

J'ai trouvé ce fil à la recherche d'une solution pour enregistrer la réponse niquement lorsqu'un échantillonneur échoue, donc la solution acceptée n'est pas bonne pour moi. J'ai des échecs d'échantillonnage occasionnels à une charge très élevée impliquant des centaines de milliers d'échantillons, donc un écouteur d'arbre est complètement impraticable pour moi (il atteindra plusieurs gigaoctets), alors voici ce que j'ai trouvé (ce qui devrait être bon pour le scénario du PO également):

Ajouter un [JSR223 Assertion][1] (devrait venir après toutes les autres assertions) et y mettre le code ci-dessous:

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));
    }
  }
}

Cela entraînera l'enregistrement de la réponse entière dans le fichier journal jmeter, ce qui est bien dans mon cas, car je sais que les réponses sont vraiment petites, mais pour les réponses volumineuses, un traitement plus intelligent pourrait être effectué.

21
haridsv

Il existe un écouteur "Enregistrer les réponses dans un fichier", qui ne peut enregistrer dans un fichier qu'en cas d'erreur.

6
gWay