JMeter - Удар определенных конечных точек на основе учетных данных пользователя через несколько файлов CSV

Мой тест JMeter:

  • Выполните итерацию по CSV-файлу (logins.csv) с учетными данными для входа в систему и уникальным идентификатором пользователя CsvDataSetConfig.
  • войти в систему
  • На основе учетных данных для входа в систему (уникальный идентификатор из logins.csv) определите и загрузите второй файл в формате <user_identifier>_invoices.csv который затем имеет необходимый путь для просмотра счета для этого пользователя.

Упрощенная настройка теста:

ThreadGroup
> CsvDataSetConfig - file: logins.csv, variables: user_identifier,email,password, sharing_mode: all threads
> `SignIn` TransactionController using email and password from above CSV file to login via series of HTTP Requests
> UserParameters - USER_IDENTIFIER,INVOICE_CSV_FOR_USER
> BeanShellSampler
  props.setProperty("USER_IDENTIFIER", vars.get("user_identifier"));
  props.setProperty("INVOICE_CSV_FOR_USER","${__P(USER_IDENTIFIER)}_invoices.csv");
> WhileController - condition: ${__javaScript("${invoice-id}" != "<EOF>",)}
  > CsvDataSetConfig - file: ${__P(INVOICE_CSV_FOR_USER,)}, variables: invoice-id, sharing_mode: current thread
  > `ViewInvoice` TransactionController with HTTP Request to url `../${invoice-id}`

# logins.csv
c7beaa99c6d99fa7754fc2213f9b17b8,foo@example.com,password321
9c8466bee65e39c9d3cf715e42933c3b,bar@example.com,password456

# c7beaa99c6d99fa7754fc2213f9b17b8_invoices.csv
f54eca1cbbba4a97c1dc459e0ba64970
0024f2cdf28dd7ebf3606988fd229afd

# 9c8466bee65e39c9d3cf715e42933c3b_invoices.csv
64f725fdeb2980b28bdf5e02076a55cd
60ac45a12ea3d6b59c2cb82f27da1722

Проблема:

  • В локальном JMeter неправильно отображаются запросы на URL-адреса счетов-фактур invoice-id для бизнеса. Похоже, что параметры неправильно обрабатываются между потоками.
  • В BlazeMeter просмотр содержимого контроллера while никогда не срабатывает.

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

1 ответ

Потоки работают одновременно и совместно используют свойства JMeter.

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

Я предлагаю вам сохранить (и получить) в переменных, которые не являются общими для потоков:

 vars.put("USER_IDENTIFIER", vars.get("user_identifier"));

 vars.put("INVOICE_CSV_FOR_USER"," ${USER_IDENTIFIER}_invoices.csv");

Также о бобах, совет JMeter, чтобы перейти на JSR223

Начиная с JMeter 3.1, мы рекомендуем переключаться с BeanShell на тестовые элементы JSR223 (подробнее см. Раздел JSR223 ниже) и переключаться с функции __Beanshell на функцию __groovy.

Другие вопросы по тегам