Процессор в JMeter: Препроцессор и постпроцессор
⚡ Умное резюме
Процессор в JMeter Изменяет запросы Sampler до или после выполнения. PreProcessor подготавливает данные запроса, а PostProcessor выполняет...tracts-значения и элементы управления потоком тестирования обеспечивают корреляцию, динамическую параметризацию и надежное поведение при тестировании производительности.

Процессор в Apache JMeter Это элемент плана тестирования, который изменяет сэмплеры в пределах своей области видимости. Он запускается автоматически, либо непосредственно перед отправкой запроса. JMeter или сразу после получения ответа, что делает его основным механизмом обработки динамических данных во время тест производительности.
Существует 2 типа процессоров:
- Препроцессор
- Постпроцессор
Область действия определяет, насколько далеко распространяется действие процессора. Процессор, расположенный непосредственно под... План тестирования Или же группа потоков применяется ко всем нижележащим сэмплерам, в то время как процессор, вложенный в один сэмплер, влияет только на этот запрос. Понимание этого правила предотвращает ошибки конфигурации, описанные в разделе устранения неполадок на этой странице.
Препроцессор
Препроцессор выполняет какое-то действие до выполнение запроса на выборку.
Рассмотрим простой пример: допустим, вы хотели JMeter «пролазить» по тестируемому сайту, разбор ссылку (проверьте все ссылки на странице) и возвращают HTML. Перед созданием HTTP-запроса вы должны добавить в свой контроллер какое-либо действие, например «Парсер ссылок HTML».
На приведенной выше диаграмме препроцессор расположен между контроллером и исходящим запросом. Поскольку он выполняется первым, это правильное место для формирования данных запроса: генерации метки времени, чтения значения из столбца CSV, перезаписи идентификатора сессии. URLили присваивая каждому виртуальному пользователю разные учетные данные.
Постпроцессор
Постпроцессор выполняет некоторое действие после отправки запроса семплера.
Рассмотрим простой пример: JMeter отправляет HTTP-запрос на тестируемый веб-сервер (и т. д. www.google.com) и получить ответ. Вы хотите JMeter Чтобы остановить тестирование, если ответ сервера содержит ошибку, вы можете использовать постпроцессор для выполнения этой задачи следующим образом:
Как показано на второй диаграмме, постпроцессор считывает ответ после завершения работы сэмплера. Это также стандартный ответ на вопрос о корреляции. Когда сервер возвращает токен, идентификатор сессии или номер заказа, который меняется при каждом запуске, постпроцессор захватывает это значение в JMeter переменная, чтобы следующий сэмплер мог ее повторно использовать.
Типы препроцессоров в JMeter
Apache JMeter В комплект поставки входит компактный набор препроцессоров. Каждый из них подготавливает пробоотборник по-своему, поэтому выбор нужного элемента позволяет сохранить читаемость и простоту обслуживания плана тестирования.
- Время ожидания выборки: Определяет максимальную продолжительность запроса. Любой сэмплер, работающий дольше заданного значения, помечается как неудачный.
- Параметры пользователя: Присваивает переменным определенные значения для каждого виртуального пользователя, так что каждый поток отправляет свой собственный набор данных.
- Парсер HTML-ссылок: Программа сканирует тестируемую страницу, анализирует найденные ссылки и передает их в последующий HTTP-запрос.
- HTTP URL Модификатор перезаписи: Внедряет идентификатор сессии в URL для приложений, которые track сессий без файлов cookie.
- Пользовательские параметры регулярных выражений: Заполняет параметры запроса, используя значения, полученные с помощью регулярного выражения из предыдущего ответа.
- JDBC PreProcessor: Перед сэмплером выполняется SQL-запрос, что полезно для заполнения или сброса записей в базе данных.
- Препроцессор JSR223: Выполняет Groovy or Java Скрипт для любой пользовательской логики подготовки. Он заменяет более старый BeanShell PreProcessor и значительно лучше работает под нагрузкой.
💡 Совет: Предпочтительнее использовать препроцессор JSR223. Groovy Язык программирования поверх BeanShell. Groovy Скрипты компилируются и кэшируются, поэтому они потребляют гораздо меньше ресурсов процессора, когда тысячи потоков выполняются параллельно.
Типы постпроцессоров в JMeter
Постпроцессоры делятся на две группы: напримерtracСэмплер — это обработчики, которые извлекают значения из ответа, и обработчики, которые реагируют на результат работы сэмплера. В таблице ниже показано соответствие каждого элемента наиболее подходящему для него формату ответа.
| Постпроцессор | лучших подходит для | Типичное использование |
| Регулярное выражение Extracтор | Любой текстовый ответ | Извлечение токенов или идентификаторов из HTML и обычного текста. |
| Граничный Эксtracтор | Любой текстовый ответ | Захват значения с использованием левой и правой границ вместо полного регулярного выражения. |
| JSON Extracтор | JSON-ответы | Чтение полей из REST-данных во время API тестирование |
| CSS/jQuery Extracтор | HTML-ответы | Выбор элемента с помощью CSS-селектора |
| XPath Extracтор | Ответы в формате XML и XHTML | Навигация по древовидной структуре документа |
| JDBC PostProcessor | Результаты из базы данных | Проверка или очистка строк после запроса. |
| Постпроцессор JSR223 | Любой ответ | Настраиваемый скриптовый анализ и проверка утверждений |
| Обработчик действий состояния результата | Любой ответ | Stopping Если сэмплер не срабатывает, это может привести к ошибке в потоке или во всем тесте. |
Граничный ЭксtracТор прибыл в JMeter 4.0 и часто является самым быстрым вариантом для написания, поскольку запрашивает только текст, расположенный непосредственно слева и справа от значения. Регулярное выражение ExtracTor остается более гибким выбором, когда окружающая разметка различается в зависимости от ответа.
Разница между препроцессором и постпроцессором
Оба элемента имеют одинаковые правила области видимости, но решают противоположные задачи. Приведенное ниже сравнение суммирует различия, предшествующие приведенному примеру.
| Параметр | Препроцессор | Постпроцессор |
| Время выполнения | Выполняется до того, как сэмплер отправит свой запрос. | Выполняется после того, как сэмплер получит свой ответ. |
| Основная цель | Подготавливает и изменяет данные запроса. | Считывает данные ответа и реагирует на них. |
| Типичные элементы | Пользовательские параметры, парсер HTML-ссылок, препроцессор JSR223 | Регулярное выражение ExtracТор, JSON Extractor, обработчик действий статуса результата |
| Влияние на поток | Остановить тест невозможно, он лишь формирует запрос. | Может остановить поток или весь тестовый запуск. |
| Общая цель | Параметризация | Корреляция и обработка ошибок |
На практике они работают в паре. PostProcessor получает токен сессии из ответа на запрос авторизации, а PreProcessor при следующем запросе внедряет этот токен перед отправкой вызова. Следующий пример демонстрирует работу PostProcessor в этой схеме.
Пример постпроцессора
В этом руководстве представлены пошаговые инструкции по использованию постпроцессора в JMeter. Начнем с простого тестового сценария.
- JMeter отправляет HTTP-запрос на тестируемый веб-сервер www.google.com.
- JMeter получает ответ от Google сервера.
- Если ответ сервера ошибка, JMeter предусматривает остановить тест.
- Если ответ сервера OK (Нет ошибки), JMeter предусматривает продолжать тест.
Вот Дорожная карта этого примера:
Предварительное условие:
We повторное использование Шаг 1 и Шаг 2 в статье JMeter Тестирование производительности. Если JMeter Если программа еще не установлена, выполните следующие действия: JMeter инструкция по установке первый.
Шаг 1) Добавьте группу потоков
Щелкните правой кнопкой мыши на План тестирования и добавьте новую группу потоков: Добавить -> Темы (Пользователи) -> Группа потоков
Но на панели управления группой потоков введите «Свойства потока» следующим образом:
Эта настройка позволяет JMeter Создайте 10 запрос пользователя на http://www.google.com 10 раз.
Шаг 2) Добавить JMeter элементы
- Добавить HTTP-запрос по умолчанию
- Добавить HTTP-запрос
Мы все еще делаем JMeter послать запрос http://www.google.com в Google сервера.
Шаг 3) Добавьте элемент постпроцессора
Щелкните правой кнопкой мыши Группа потоков -> Добавить -> Постпроцессор -> Обработчик действий состояния результата
Обработчик действий состояния результата позволяет пользователю остановить поток или весь тест, если запрос пользователя не выполнен.
В области «Обработчик действия состояния результата» выберите Остановить тест сейчас. Этот выбор остановит тест, если JMeter получите ошибку из ответа сервера.
Шаг 4) Настройте HTTP-запрос
Откройте панель HTTP-запросов. Входить «Abc» в поле Путь.
Когда вы вводите «Abc» на путь, JMeter создаст URL запросить Google сервер: http://www.google.com/abc. Это URL не существует на Google сервер. Это неправильно URL запросить так Google Сервер вернет ошибку.
Шаг 5) Добавьте дерево результатов просмотра
Щелкните правой кнопкой мыши Группа потоков -> Добавить -> слушатель -> Просмотр дерева результатов
Шаг 6) Запустите тест
Выберите «Просмотреть дерево результатов», нажмите кнопку «Выполнить» в строке меню. Вы увидите ошибка ответ от Google сервер и тест остановятся без выполнение 100 тем.
Теперь вернитесь к шагу 4, откройте панель HTTP-запросов и введите «календарь» на панель. Это делает JMeter Создайте URL запросить https://calendar.google.com/calendar/u/0/r до Google сервер. Это исправить URL запросить так Google Сервер вернет OK (ошибки нет).
Выберите «Просмотреть дерево результатов», нажмите кнопку «Выполнить» в строке меню. Вы увидите OK ответ от Google Сервер и тестирование будут продолжаться до тех пор, пока не будут завершены все 100 потоков.
Добавление утверждение Использование обработчика действий статуса результата делает проверку более строгой, поскольку утверждение может привести к ошибке для сэмплера, вернувшего HTTP 200, но предоставившего неверное содержимое.
Диагностика неисправностей
Если вы столкнулись с проблемой при выполнении описанного выше сценария… сделайте следующее:
- Проверьте, подключаетесь ли вы к Интернету через прокси. Если да, удалите прокси.
- Откройте новый экземпляр Jmeter
- Откройте приложение ПроцессорTestPlan.jmx в Джметре
- Double-нажмите на группу тем -> просмотреть дерево результатов.
- Запустить тест
Если кажется, что постпроцессор ничего не делает, сначала проверьте его положение. Постпроцессор, расположенный вне области действия целевого сэмплера, никогда не запускается, что является наиболее частой причиной пустого экспоненциального вызова.tracпеременная ted. Связанные элементы, такие как Контроллеры и распределенное тестирование следуют той же логике области применения.









.gif)

.gif)