JMeter: Как запустить несколько сэмплеров в одной группе потоков для нескольких одновременно работающих пользователей? - PullRequest
0 голосов
/ 13 апреля 2020

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

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

  1. Базовый URL: http://xyz.abc.com/app/
  2. Полный URL: http://xyz.abc.com/app/ {RandomSesionID} / Аккаунт / Логин

Я создал поток с HTTP-запросами, как показано ниже.

Группа потоков

  • Базовый URL-адрес
  • Загружает логин
  • Опубликовать учетные данные и нажать Войти
  • Перейдите на целевую страницу (baseURL / {RandomSessionID} / Main / Home)
  • Нажмите Выйти (перейдет к BaseURL / {RandomSessionID} / Main / Home)

Когда я позволяю потоку считать значение по умолчанию 1, все работает нормально. Однако, в тот момент, когда я установил его более чем на 1 (со временем нарастания до 10se c), происходит следующее.

User 2 --->

  • Hit Base URL
  • Получить URL для входа в систему
  • Отправить учетные данные
  • Он снова возвращается к запросу 2 (получить URL для входа в систему)

и все шаги пользователя перенаправляются ко второму запросу независимо от того, что я запрашиваю.

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

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

РЕДАКТИРОВАТЬ 1 Я провел дополнительное расследование по этому вопросу с моей стороны, и вот мои наблюдения. Случай 1: Когда я создаю два отдельных экземпляра JMeter и запускаю один и тот же тест параллельно с разными пользователями, поток полностью успешно работает без каких-либо ошибок. Случай 2: Wile Запуск потока с двумя пользователями, как упомянуто выше, Второй HTTP-запрос для BaseURL: / Home / Main , перенаправляющий запрос на / Account / Main вместо перехода к следующему шагу, как показано ниже.

Изображение 1: Все запросы HTTP в заказе
Изображение 2: Это запрос навигации для пользователя 1
Изображение 3: Пользователь 2 Нажатие / Домой / Главная и перенаправление на / Аккаунт / Вход в качестве ответа
Изображение 4: Пользователь 2 Удар / Дом / Главный и Полученный / Дом / Главный ответ
Изображение 5: Пользователь 2 нажимает на / Home / Main и получает перенаправление в ответе

Как видно на рисунке 1, это серии запросов, которые я делаю через группу потоков, и эти запросы одинаковы для всех пользователей в потоке.

В изображении 2 видно, что / Home / Main представляет собой запрос Single GET с действительным ответом / Home / Main без каких-либо проблем.
Однако В последующих изображениях 3-5 вы можете видеть, что GET / Home / Main-134 делает подзапрос и 134-0 и 134-1 с 134-0 для GET / Home / Main и 134-1 для GET / Логин аккаунта.

Мое замечание: я сомневаюсь, что JMeter использует одну вкладку / экземпляр браузера и выполняет эти веб-запросы на той же вкладке, где был инициирован первый запрос. Благодаря этому для второго пользователя он всегда перенаправляет на страницу входа, даже если идентификатор сессии действителен.

Чтобы подтвердить, что то, что я наблюдал, является правильным, я попытался воспроизвести тот же сценарий в браузере Chrome, как указано ниже.
1. Откройте браузер Chrome и получите доступ к базовому URL.
2. Войдите в систему и перейдите на главную / главную страницу
3. Теперь на той же вкладке введите BaseURL, и он перенаправит меня на страницу входа.
4. Теперь введите учетные данные пользователя 2, войдите и перейдите на главную / главную страницу. .
5. Теперь я пытаюсь получить доступ к первому URL пользователя, вернувшись на 3-4 вкладки.

Однако, это не будет повторять точные шаги, так как мы обычно используем браузер, тогда как в запросах мы напрямую обращаемся к URL с запросами GET / POST.
Я не могу понять, что мне нужно сделать, чтобы решить эту проблему. Я даже не уверен, что это проблема с Приложением или проблема с Jmeter.

Существуют ли какие-либо настройки в JMeter, которые гарантируют, что каждый поток (пользователь) группы потоков получает возможность иметь выделенный запрос вместо внутреннего использования одного экземпляра браузера?

1 Ответ

0 голосов
/ 13 апреля 2020

Я ожидаю, что ваше It again going back to Request 2 утверждение неверно.

Каждый поток JMeter (виртуальный пользователь) выполняет Сэмплеры вверх ногами (или согласно Logi c Контроллеры )

Так что, скорее всего, ваш Get The Login URL выполняется вторым пользователем , и, учитывая, что метка запроса совпадает, вы не можете различить guish, какой пользователь выполняет какой сэмплер.

enter image description here

Вы можете добавить функцию __threadNum () в качестве постфикса для метки запроса, например:

Hit Base URL user: ${__threadNum}

таким образом, вы получит информацию о том, какой виртуальный пользователь выполняет какой запрос в каждый момент времени:

enter image description here

Извлечение Apache Функции JMeter - Введение статья, чтобы узнать больше о концепции функций JMeter

...