Как вы все знаете, JMeter запускает сценарии тестирования производительности в планах тестирования. Эти планы тестирования структурированы как отношение иерархии родитель-потомок. Вы можете добавить к родительскому объекту как можно больше дочерних элементов. Это подводит нас к проблеме области видимости. В этой статье мы представим объяснение правил области видимости JMeter. Говоря о области действия элемента, мы должны понимать, какой элемент имеет доступ к какому другому элементу. В основном область видимости работает как иерархия родитель-потомок.

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

Давайте посмотрим на это на разных примерах.

Пример области действия таймера 1

Давайте создадим группу потоков и добавим в нее два сэмплера HTTP. Затем мы добавляем таймер на тот же уровень и настраиваем его задержку на 1000 мс. Поскольку постоянный таймер находится на том же уровне, что и эти пробоотборники HTTP, он повлияет на все из них, и пробоотборник HTTP будет приостанавливаться на 1000 мс после каждого запроса. Может быть разница в несколько миллисекунд, но вы можете ее игнорировать.

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

Пример области действия таймера 2

Теперь давайте добавим контроллер цикла в группу потоков. Под этим контроллером мы добавляем пробоотборник HTTP и постоянный таймер и устанавливаем его значение на 1000 мс. Теперь эти недавно добавленные компоненты JMeter являются дочерними элементами по сравнению с ранее добавленными элементами.

Когда вы запустите эти тесты, вы заметите, что HTTP Sampler под этим контроллером цикла будет ждать 2 секунды. Таким образом, мы можем сделать вывод, что родительские элементы влияют на его дочерние элементы.

Пример области утверждения

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

Вы также заметили, что «Утверждение ответа 1» и «Утверждение ответа «2» расположены в разных частях сценария, но они применяются к пробоотборнику HTTP в контроллере цикла. Но «Утверждение ответа 1» применимо и ко всем другим запросам.

Обратите внимание, что утверждения всегда выполняются после любого запроса, а таймеры выполняются до любого запроса. Это единственная разница в логике выполнения.

Исключения из области видимости:

Файлы cookie HTTP и заголовок HTTP являются примером этого исключения из области видимости. Хотя таймеры и утверждения объединяются и применяются к запросу, файлы cookie и заголовки сохраняются. Там нет переопределения или слияния.

Посетите блог Loadium, чтобы узнать больше о нагрузочном тестировании!