2015-11-25 2 views
0

У меня есть план тестирования JMeter со следующей структуройАльтернативы использованию CSV в JMeter (для генерации имен пользователей)

Test Plan 

**ThreadGroup1** 
--CSV Data Config-001 
----SimpleController 
--------------LoginRequest 
--------------Action-abc-Request 

**ThreadGroup2** 
--CSV Data Config-002 
----SimpleController 
--------------LoginRequest 
--------------Action-xyz-Request 

У меня есть два файла CSV, которые содержат список пользователей, как это ..

**CSV-001** 
Username1 
Username2 
.. .. 
Username50 

**CSV-002** 
Username51 
Username52 
.. .. 
Username100 

В моем сценарии мне нужно запустить нагрузочный тест, скажем, 100 пользователей. 50 пользователей из ThreadGroup1 и других пользователей из 50 пользователей из ThreadGroup2. Пользователи из обоих журналов нитей одновременно.

В настоящее время я должен пройти процесс ручного создания/редактирования этих файлов CSV всякий раз, когда меняю количество пользователей.

Пожалуйста, укажите, есть ли какие-либо альтернативные экономии время & производительности эффективных подходы через I, способные удовлетворить мои требования сценария (без использования CSV файлов).

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

+0

Кроме того, может ли кто-нибудь прокомментировать возможные преимущества использования CSV над любыми другими подходами? Почему я вижу, что большинство людей используют его только? – AMfromNBS

ответ

0

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

Username${__threadNum}

для первой группы нитей и

Username${__BeanShell(ctx.getThreadNum()+Z+1)}

для второй, где Z равно общее число потоков в группе потоков 1. Вам также нужно добавить 1, так как ctx.getThreadNum() возвращает номер потока с использованием индекса на основе 0, тогда как функция __threadNum основана на 1.

+0

Я использовал ваше предыдущее решение (наряду с синхронизацией таймер), и это сработало для меня. Мне понравилось ваше решение еще больше, так как оно упрощает работу. Но у меня есть небольшая проблема с этим решением. ».getThreadNum() во второй функции возвращает значение «0» для первого потока, и из-за этого я получаю имя пользователя, которое фактически выполняет действия из ThreadGroup1. Можете ли вы предложить обходное решение, которое – AMfromNBS

+0

Например, если я настрою 3 пользователей для ThreadGroup1 и 3 пользователей для ThreadGroup2. Тогда результат будет таким же ... username1, username2 & username3 для ThreadGroup1. Где в качестве имени пользователя3, username4 и username5 для ThreadGroup2. [Пользователь USERNAME3 дважды зарегистрирован]. – AMfromNBS

+0

Я обновил ответ выше, чтобы теперь работать с ThreadGroup2. – JusMe

0

Вы можете использовать счетчик в каждом потоке. Начальное значение для счетчика в первом потоке будет 1, во втором 51. Убедитесь, что флажок «Трековый счетчик независимо для каждого пользователя» не установлен.

Если установить эталонные имена thread1Count и thread2Count соответственно, вы можете использовать

Username${thread1Count} 

для первого потока и

Имя пользователя $ {thread2Count}

для второго.

+0

JusMe, Спасибо за ответ. Я пробовал это решение и даже несмотря на то, что он работает, но я наблюдаю, что есть некоторые изменения в шаблоне выполнения запросов с таким подходом (по сравнению с использованием CSV). Когда я запускаю скрипт JMeter с помощью CSV, все запросы на вход выполняются почти одновременно с очень небольшим промежутком времени. В то время как с счетчиками шаблон выполнения запроса является своего рода в Loop. Например, если в группе потоков имеется всего 5 запросов, последовательность выполнения запросов выглядит следующим образом: 1) user1 - 5 запросов 2) user2 - 5 запросов и т. Д. – AMfromNBS