Понимание локальных переменных в JMeter

Введение

В динамической среде тестирования производительности и анализа нагрузки Apache JMeter выступает в качестве краеугольного камня, позволяя эмулировать реальные сценарии для оценки устойчивости приложений в различных условиях. Основная стратегия, используемая в JMeter, предполагает тщательное создание локальных переменных на каждой итерации потока. Эта практика служит двойной цели: она не только облегчает точное управление данными, но и обеспечивает целостность тестовых сценариев за счет инкапсуляции информации, специфичной для потока.

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

Сценарий

У нас есть вариант использования, в котором нам нужно протестировать немного сложный сценарий. Сначала мы вызываем почтовый API, который создает запись и возвращает идентификатор с некоторым статусом. Затем мы вызываем другой опрос типа API 10 раз с интервалом в 1 секунду. Если мы не получим желаемый результат даже после 10-кратного опроса, мы удаляем идентификатор, полученный на первом шаге, в противном случае мы пропускаем.

Теперь существует два подхода к тестированию jmeter: вы используете много потоков или несколько потоков с несколькими итерациями. Использование нескольких потоков JMeter предполагает моделирование реалистичных пользовательских сценариев, в которых каждый поток представляет отдельного пользователя или сеанс. Это обеспечивает точное моделирование нагрузки и разнообразное поведение, но потребляет больше ресурсов и требует сложного анализа результатов. С другой стороны, использование меньшего количества потоков для многократной итерации позволяет эффективно использовать ресурсы, но может привести к недооценке системных ограничений, ограничению разнообразия пользовательских сценариев и риску возникновения помех в данных между итерациями. Выбор зависит от соблюдения баланса между точным моделированием и доступными ресурсами.

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

Решение

Теперь, чтобы имитировать описанный выше сценарий, мы сначала вызываем API создания, затем внутри цикла while мы вызываем API опроса десять раз и, наконец, блок if для выполнения API, если мы не получаем желаемого ответа при вызовах опроса. Теперь существуют разные подходы к тесту jmeter: либо вы используете несколько потоков JMeter, либо несколько потоков повторяются несколько раз, как обсуждалось ранее.

Теперь другая проблема заключается в том, как определять переменные локально для итераций, а не для потока. Сначала мы подумали об использовании пользовательских переменных, но это является общим для всех итераций одного потока. Таким образом, в основном определяемые пользователем переменные имеют область действия на уровне потока. Это удобно для использования общих переменных, доступ к которым можно получить на каждой итерации одного потока. Так что это можно решить с помощью JSR223 PostProcessor. Внутри JSR223 PostProcessor мы можем определять переменные локально для каждой итерации потока.

На изображении выше показана группа потоков, обсуждавшаяся ранее. Сначала мы вызываем API создания. Из этого API мы извлекаем некоторую полезную информацию и после этого вызова также инициализируем некоторые переменные, используемые в цикле while ниже.
Затем мы вызываем API опроса 10 раз. После этого, основываясь на желаемом ответе опроса, мы выполняем последний вызов удаления.

Краткое содержание

Итак, в этой статье мы рассмотрели немного сложных сценариев тестирования, а также обсудили, следует ли нам использовать несколько потоков или несколько потоков с несколькими итерациями. Мы также увидели, как использовать переменные JSR223 PostProcessor, которые являются локальными для итерации, в отличие от определяемых пользователем переменных, которые имеют область действия потока. Пожалуйста, прокомментируйте, если у вас есть какие-либо вопросы, спасибо.

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