Подтвердить что ты не робот

JMeter - как зарегистрировать полный запрос на неудавшийся ответ?

Я использую командную строку JMeter для стресс-тестирования нашего веб-сайта api. Теперь вот пример результата, который я возвращаю:

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>

Итак, я получаю сообщение об ошибке.

В настоящее время все ошибки идут в файл. Когда я проверяю этот файл, он говорит это 404. Er.. нормально. Есть ли в любом случае, я точно вижу, что пробовал JMeter?

вот фрагмент моего файла конфигурации...

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

Теперь, прежде чем кто-то скажет "Проверить файлы журнала веб-сервера", я знаю, что могу это сделать, и да, я нашел 404.. но я надеюсь увидеть, возможно ли это, не обращаясь к ним. особенно если они находятся на другом сервере и/или я не могу получить к ним доступ. Пожалуйста, помогите!

4b9b3361

Ответ 1

Компонент Просмотр дерева результатов показывает дерево всех примеров ответов, что позволяет просматривать как запрос, так и ответ для любого образца.

При нагрузочном тестировании (Всегда в режиме без графического интерфейса) заполните поле "Имя файла" и выберите сохранение ответов только при ошибке:

View Results Tree in error

Как вы можете видеть выше, мы нажали на Configure, чтобы выбрать все поля, кроме CSV.

Вы также можете сохранить весь ответ в файл, используя Сохранить ответы в файл:

Save Responses to a file

Ответ 2

Я нашел эту ветку в поисках решения для записи ответа только при сбое сэмплера, поэтому принятое решение мне не подходит. У меня случаются сбои сэмплов при очень высокой нагрузке, включающей сотни тысяч сэмплов, поэтому прослушиватель деревьев для меня совершенно непрактичен (он достигнет нескольких гигабайт), так что вот что я придумал (что должно быть хорошо для сценарий OP):

Добавьте [JSR223 Assertion][1] (должен следовать после всех других утверждений) и вставьте в него следующий код:

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

Это приведет к тому, что весь ответ будет записан в файл журнала jmeter, что хорошо в моем случае, поскольку я знаю, что ответы действительно малы, но для больших ответов может быть выполнена более интеллектуальная обработка.

Ответ 3

Существует прослушиватель "Сохранить ответы на файл", который может сохраняться в файле только при возникновении ошибки.

Ответ 4

Вот как я регистрирую полный запрос (URL запроса + тело запроса) для неудачных запросов.

  1. Добавить прослушиватель внутри группы потоков
try{
  var message = "";
  var currentUrl = sampler.getUrl();
  message +=  ". URL = " +currentUrl;
  var requestBody = sampler.getArguments().getArgument(0).getValue();
  message += " --data " + sampler.getArguments();

  if(!sampleResult.isSuccessful()){
      log.error(message);
  }

}catch(err){
  //do nothing. this could be a debug sampler. no need to log the error
}

Для каждого сэмплера в группе потоков слушатель выполнит этот код после сэмплера.