Jmeter Общий обработчик ошибок для группы потоков

#error-handling #jmeter

Вопрос:

В Jmeter, в группе потоков, у меня есть список запросов на веб-сервис. Вместо того, чтобы обрабатывать ошибку для каждого запроса отдельно, могу ли я иметь общий обработчик ошибок для группы потоков, который в конце каждой итерации будет выводить необходимые данные для неудачного запроса (например, имя службы, идентификатор задания, сообщение об ошибке). Для каждого запроса определено его утверждение.

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

Ответ №1:

Для каждого запроса определено свое утверждение

Если логика утверждения является общей для всех запросов, я бы предпочел рекомендовать использовать одно утверждение для всех запросов. Утверждения JMeter подчиняются правилам области видимости JMeter, поэтому вы сможете применять критерии прохождения/отказа ко всем запросам за один раз.

Ваша текущая настройка нарушает принцип DRY, делая ваш план тестирования больше и менее подходящим для рефакторинга, если у вас есть только одно утверждение и вам нужно что — то изменить — вам нужно будет что-то изменить только в одном месте, если у вас есть утверждение на запрос-вам придется посещать каждый запрос

Ответ №2:

Утверждение-хороший способ поиска сценариев ошибок. Чтобы сделать обработку ошибок универсальной, вы можете воспользоваться тем фактом, что если вы добавите утверждение (или любой из пред — /постпроцессоров, таймеров) на уровне группы потоков или на определенном контроллере, оно будет выполняться после завершения каждого пробоотборника

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

Более подробная информация здесь

Ответ №3:

Вы можете использовать почтовый процессор JSR223 для проверки статуса ответа и печати необходимых полей.

 if(vars.get("JMeterThread.last_sample_ok").toBoolean()){

    log.info("Request: ${prev.getSampleLabel()} Service Name : ${prev.getUrlAsString()}  JobId: ${vars.get('jobid')} Error : ${prev.getResponseMessage()}")
    
}
 

Вы можете изменить сценарий в соответствии с вашими потребностями.

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