Разработка логики в jmeter — ошибки прохождения в цепочке потоков тестирования

#jmeter

#jmeter

Вопрос:

пожалуйста, посоветуйте, каким должен быть хороший дизайн и реализация следующего сценария, с которым я столкнулся.

Дизайн

 Sampler 1 (prerequisite)
Sampler 2 (prerequisite)
Sampler 3 (actual test)
  

Выполнение

     Sampler 1 failed with error
    Sampler 2 not executed 
    Sampler 3 not executed but marked as failed with Sampler 1 error or executed but result data replaced with error from Sampler 1
  

Примечание: Обязательные образцы исключены из отчета о конечном результате (для этого уже найдено решение).

Ответ №1:

Вы можете разработать свой тест следующим образом:

  • Сэмплер 1

  • Если контроллер со следующим условием: ${JMeterThread.last_sample_ok}
    • Сэмплер 2
  • Сэмплер 3

    • Постпроцессор JSR223 со следующим кодом:

       if (vars.getObject('sampler1Result') != null) {
          def sampler1Result = vars.getObject('sampler1Result')
          prev.setSuccessful(sampler1Result.isSuccessful())
           prev.setResponseCode(sampler1Result.getResponseCode())
           prev.setResponseMessage(sampler1Result.getResponseMessage())
           prev.setResponseData(sampler1Result.getResponseData())
      }
        

Где:

введите описание изображения здесь

Комментарии:

1. Спасибо, Дмитрий, кажется, это работает для меня. Можете ли вы, пожалуйста, посоветовать, как добавить также неудачное имя сэмплера с ошибкой, возвращаемой в ответе сэмплера 3

2. sampler1Result.getSampleLabel() должно возвращать имя Sampler1 . Смотрите, в частности, SampleResult JavaDoc и 8 лучших классов JMeter Java, которые вы должны использовать с Groovy в целом для получения более подробной информации.

3. Уже сделал, но не уверен, как объединить оба в prev.setResponseData. Я получаю это в prev.setResponseData (sampler1Result.getSampleLabel() sampler1Result.getResponseData()) — jp @ gc — Фиктивный сэмплер[83, 97, 109, 112, 108, 101, 114, 32, 49, 32, 114, 101, 115, 112, 111, 110, 115, 101]

4. Пришлось использовать getResponseDataAsString вместо getResponseData