Apache JMeter
Параметризация Apache JMeter
Поиск…
Вступление
Параметризация - это создание разных наборов данных для разных пользователей в одном тестовом сценарии. Например, запуск нескольких пользователей с разными учетными данными в одном скрипте. Это делает его одним из основных аспектов создания тестов производительности.
Параметрирование с использованием внешних файлов
Один из распространенных способов параметризации ваших сценариев производительности - использовать CSV-файл. Лучшим примером использования входных файлов CSV является процесс входа в систему. Если вы хотите протестировать приложение у разных пользователей, вам необходимо предоставить список учетных данных пользователя.
Предположим, что у нас есть запрос на вход, который работает для одного конкретного пользователя:
Мы можем легко параметризовать этот запрос с помощью внешнего файла CSV и запуска скрипта для разных пользователей. Чтобы добавить конфигурацию параметризации CSV:
Щелкните правой кнопкой мыши запрос на вход -> Добавить -> Элемент конфигурации -> Конфигурация набора данных CSV
Краткое описание параметров конфигурации CSV Data Set Config:
- Имя - имя элемента, которое будет использоваться в дереве JMeter
- Имя файла - имя входного файла. Относительные имена файлов разрешаются на основе пути активного плана тестирования. Абсолютные имена файлов также поддерживаются
- Кодирование файлов - кодирование входного файла, если это не платформа по умолчанию
- Переменные имена - список разделенных имен переменных, которые будут использоваться в качестве контейнера для анализируемых значений. Если пустым, первая строка файла будет интерпретирована как список имен переменных
- Разделитель - разделитель, который будет использоваться для разделения проанализированных значений из входного файла
- Разрешить цитируемые данные? - true, если вы хотите игнорировать двойные кавычки и позволить таким элементам содержать разделитель.
- Перерабатывать на EOF? - true в случае, если план тестирования файла должен перебирать файл более одного раза. Он будет инструктировать JMeter перемещать курсор в начале файла
- Остановить поток на EOF? - false в случае итерации цикла над CDC-файлом и true, если вы хотите остановить поток после прочтения всего файла
- Режим обмена:
- Все потоки - файл разделяется между всеми виртуальными пользователями (по умолчанию)
- Текущая группа потоков - файл будет открыт один раз для каждой группы потоков
- Текущий поток - каждый файл будет открыт отдельно для каждого из потоков
- Идентификатор - все потоки, имеющие один и тот же идентификатор, также имеют один и тот же файл
Давайте создадим файл csv, содержащий разных пользователей с именами и паролями:
Теперь мы можем использовать этот файл с конфигурацией набора данных CSV. В нашем случае достаточно добавить значения конфигурации «Имя файла» и «Переменные имена»:
Последним шагом, который мы должны предпринять, является параметризация запроса на вход с переменными CSV. Это можно сделать, заменив исходные значения соответствующими переменными из поля конфигурации «Переменные имена» в CSV Data Set Config, например: Если мы запустим наш тестовый скрипт, JMeter заменит эти переменные на значения из файла TestUsers.csv. Каждый виртуальный пользователь JMeter получит учетные данные из следующей строки файла csv.
Запрос на вход первого пользователя:
Запрос на вход второго пользователя:
Параметрирование с использованием баз данных
Другим способом параметризации ваших сценариев производительности является использование данных базы данных через JDBC. JDBC - это интерфейс прикладного программирования, который определяет, как клиент может получить доступ к базе данных.
Прежде всего, загрузите драйвер JDBC в свою базу данных (обратитесь к поставщику базы данных). Например, драйвер mysql можно найти здесь. Затем вы можете добавить его, добавив файл .jar в план тестирования, используя следующую форму:
Но лучше добавить Jar-файл в папку lib и перезапустить JMeter.
После этого настройте соединение с базой данных, используя элемент «Конфигурация соединения JDBC». Пример: Щелкните правой кнопкой мыши на группе потоков -> Добавить -> Элемент конфигурации -> Конфигурация соединения JDBC
Параметры конфигурации подключения JDBC:
- Имя - имя конфигурации подключения, которое будет отображаться в дереве групп потоков
- Variable Name - имя, которое будет использоваться как уникальный идентификатор для соединения db (можно использовать несколько соединений, и каждый из них будет привязан к другому имени)
- Максимальное количество подключений - максимальное количество подключений, разрешенных в пуле подключений. В случае 0 каждый поток будет иметь свой собственный пул с одним соединением в нем
- Max Wait (ms) - пул выдаёт ошибку, если указанный тайм-аут превышен при подключении db
- Время между прогонами (ms) - количество миллисекунд для паузы между прогонами потока, который выдает неиспользуемые соединения из пула db
- Auto Commit - да, чтобы включить автоматическую фиксацию для связанных подключений db
- Test While Idle - проверять соединения на холостом ходу перед обнаружением эффективного запроса. Дополнительные сведения: BasicDataSource.html # getTestWhileIdle
- Soft Min Evictable Idle Time (ms) - период времени, в течение которого указанное соединение может простаивать в пуле db, прежде чем оно может быть выведено. Подробнее: BasicDataSource.html # getSoftMinEvictableIdleTimeMillis
- Запрос проверки - запрос на проверку работоспособности, который будет использоваться для проверки того, отвечает ли база данных
- URL-адрес базы данных - строка подключения JDBC для базы данных. См. Здесь примеры
- Класс JDBC Driver - соответствующее имя класса драйвера (для каждого db). Например, «com.mysql.jdbc.Driver» для MySql db
- Имя пользователя - имя пользователя базы данных
- Пароль - пароль базы данных (будет сохранен незашифрованным в плане тестирования)
В нашем случае нам нужно только установить обязательные поля:
- Имя переменной Bound to Pool.
- URL базы данных
- Класс JDBC Driver
- имя пользователя
- пароль
Остальные поля на экране можно оставить по умолчанию:
Предположим, что мы храним тестовые учетные данные пользователя в базе данных:
Теперь, когда настроено соединение с базой данных, мы можем добавить сам запрос JDBC и использовать его запрос для получения всех учетных данных из базы данных: Щелкните правой кнопкой мыши на группе потоков -> Добавить -> Пример -> Запрос JDBC
Используя запрос 'Select Statement' и 'Variable Names', мы можем проанализировать ответ на пользовательские переменные.
Теперь мы будем иметь переменные JMeter, которые могут быть использованы далее в последующих запросах. Указанные переменные будут созданы с добавочным суффиксом (email_1, email_2, email_3 ... ..).
Чтобы использовать эти переменные в «Запросе на вход», нам нужно добавить счетчик, который будет использоваться для доступа к правильным значениям из ответа на запрос JDBC. Чтобы добавить элемент «Счетчик» в JMeter: щелкните правой кнопкой мыши на группе потоков -> Добавить -> Элемент конфигурации -> Счетчик
После этого мы можем обновить «запрос на вход» с помощью функции __V. Это возвращает результат оценки выражения имени переменной и может использоваться для оценки ссылок вложенных переменных:
Указанной конфигурации достаточно, чтобы использовать значения базы данных для запуска скрипта для разных пользователей:
Параметрирование с использованием плагина Parameterized Controller
Если вам нужно выполнить повторяющуюся последовательность одного и того же действия с разными параметрами, используйте плагин стороннего разработчика «Parameterized Controller» из проекта JMeter-Plugins .
Сначала вам необходимо установить этот плагин, выполнив процедуру установки.
Предположим, что мы хотим параметризовать рабочий процесс входа в систему:
Прежде всего, вам нужно установить плагин «Parameterized Controller», поскольку он не включен в ядро JMeter. Этапы установки этого процесса можно найти здесь.
Давайте переместим «Запрос на вход» в отдельный контроллер и отключим его (щелкните его правой кнопкой мыши и выберите «Отключить»). Это наиболее предпочтительный способ иметь контейнер модулей внутри вашего плана тестирования и избегать использования Workbench как такового. По завершении установки вы можете добавить два контроллера «Parameterized Controller» с разными учетными данными пользователя: Щелкните правой кнопкой мыши на группе потоков -> Добавить -> Логический контроллер -> Параметрированный контроллер
Параметрированные контроллеры содержат раздел «Определенные пользователем переменные», где вы можете указать свои параметры. Поместите учетные данные первого пользователя в первом параметризованном контроллере и вторых учетных данных пользователя во втором параметризованном контроллере.
Внутри обоих параметризованных контроллеров добавьте ссылки на «Многоразовый контроллер», чтобы вызвать «запрос на вход» с различными параметрами. Это можно сделать так:
Щелкните правой кнопкой мыши «Параметрированный контроллер» -> «Добавить» -> «Логический контроллер» -> «Контроллер модуля»
При запуске скрипта вы увидите, что «запрос на вход» запускает каждый из параметризованных контроллеров отдельно. Это может быть очень полезно, если вам нужно запустить скрипт в разных комбинациях входных параметров.