Чтение данных из CSV-файла в JMeter с помощью Нагрузочного тестирования Azure

Из этой статьи вы узнаете, как считывать данные из CSV-файла с разделителем запятых в JMeter с помощью Azure Load Testing. Используйте данные из внешнего CSV-файла для настройки скрипта тестирования JMeter. Например, вы можете выполнить итерацию по всем клиентам в CSV-файле, чтобы передать сведения о клиенте в запрос API.

В JMeter можно использовать элемент конфигурации набора данных CSV в тестовом скрипте для чтения данных из CSV-файла.

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

Начало работы с клонированием или скачиванием проекта примеров из GitHub.

Необходимые компоненты

  • Учетная запись Azure с активной подпиской. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
  • Ресурс нагрузочного тестирования Azure. Сведения о создании ресурса нагрузочного тестирования см. в статье "Создание и запуск нагрузочного теста".
  • Скрипт тестирования Apache JMeter (JMX).
  • (Необязательно) Графический интерфейс Apache JMeter для создания тестового скрипта. Сведения об установке Apache JMeter см. в статье "Начало работы с Apache JMeter".

Обновление скрипта JMeter для чтения данных CSV

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

Важно!

Нагрузочное тестирование Azure отправляет JMX-файл и все связанные файлы в одной папке. При ссылке на внешний файл в скрипте JMeter убедитесь, что в тестовом скрипте нет ссылок на путь к файлам.

Измените скрипт JMeter с помощью графического интерфейса Apache JMeter:

  1. Выберите элемент конфигурации набора данных CSV в тестовом скрипте.

  2. Обновите сведения о имени файла и удалите любую ссылку на путь к файлу.

  3. При необходимости введите имена полей CSV в именах переменных при разбинии CSV-файла по модулям тестирования.

    Нагрузочное тестирование Azure не сохраняет строку заголовка при разбинии CSV-файла. Укажите имена переменных в элементе конфигурации набора данных CSV вместо использования строки заголовка.

    Screenshot that shows the JMeter UI to configure a C S V Data Set Config element.

  4. Повторите предыдущие шаги для каждого элемента конфигурации набора данных CSV в скрипте.

  5. Сохраните скрипт JMeter и отправьте скрипт в нагрузочный тест.

Отправка CSV-файла в нагрузочный тест

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

Важно!

Нагрузочное тестирование Azure не сохраняет строку заголовка при разбинии CSV-файла. Перед добавлением CSV-файла в нагрузочный тест удалите строку заголовка из файла.

Чтобы добавить CSV-файл в нагрузочный тест с помощью портал Azure:

  1. В портал Azure перейдите к ресурсу нагрузочного тестирования Azure.

  2. На левой панели выберите "Тесты ", чтобы просмотреть список тестов.

  3. Выберите тест из списка, выбрав проверка box, а затем нажмите кнопку "Изменить".

    Screenshot that shows the list of load tests and the 'Edit' button.

  4. На вкладке "План тестирования" выберите CSV-файл с компьютера, а затем нажмите кнопку "Отправить ", чтобы отправить файл в Azure.

    Если вы используете нагрузочный тест на основе URL-адресов, можно ввести имена переменных в виде разделенного запятыми списка в столбце "Переменные ".

    Screenshot of the Test plan tab on the Edit test pane.

    Если размер CSV-файла превышает 50 МБ, запакуйте его. Размер ZIP-файла должен быть ниже 50 МБ. Нагрузочное тестирование Azure автоматически распакует файл во время тестового запуска. Допускается только пять zip-артефактов с не более чем 1000 файлами в каждом ZIP-файле и несжатым общим размером 1 ГБ.

  5. Нажмите кнопку "Применить" , чтобы изменить тест и использовать новую конфигурацию при повторном запуске.

Совет

Если вы используете нагрузочный тест на основе URL-адресов, вы можете ссылаться на значения из CSV-файла входных данных в HTTP-запросах с помощью синтаксиса $(variable) .

Разделение входных данных CSV по модулям тестирования

По умолчанию Нагрузочное тестирование Azure копирует и обрабатывает входные файлы, не измененные во всех экземплярах тестового модуля. По умолчанию каждый модуль тестирования обрабатывает весь CSV-файл. Кроме того, нагрузочное тестирование Azure позволяет разделить входные данные CSV по всем экземплярам ядра. Если у вас несколько CSV-файлов, каждый файл распределяется равномерно.

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

Важно!

Нагрузочное тестирование Azure не сохраняет строку заголовка при разбинии CSV-файла.

  1. Настройте скрипт JMeter для использования имен переменных при чтении CSV-файла.
  2. Удалите строку заголовка из CSV-файла перед его добавлением в нагрузочный тест.

Чтобы настроить нагрузочный тест для разделения входных CSV-файлов:

  1. Перейдите на вкладку "План тестирования" для нагрузочного теста.

  2. Выберите "Разделить CSV" равномерно между подсистемами тестирования.

    Screenshot that shows the checkbox to enable splitting input C S V files when configuring a test in the Azure portal.

  3. Нажмите кнопку "Применить" , чтобы подтвердить изменения конфигурации.

    При следующем выполнении теста нагрузочное тестирование Azure разбивается и обрабатывает CSV-файл равномерно по модулям тестирования.

Устранение неполадок

Состояние теста завершается сбоем, и журнал тестирования имеет File {my-filename} must exist and be readable

После завершения нагрузочного теста с состоянием сбоя можно скачать журналы тестов.

При получении сообщения File {my-filename} must exist and be readable об ошибке в журнале тестирования входной CSV-файл не удалось найти при запуске скрипта JMeter.

Нагрузочное тестирование Azure хранит все входные файлы вместе со скриптом JMeter. При ссылке на входной CSV-файл в скрипте JMeter не следует включать путь к файлу, а использовать только имя файла.

В следующем фрагменте кода показано извлечение файла JMeter, использующего CSVDataSet элемент для чтения входного файла. Обратите внимание, что filename путь к файлу не включается.

<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Websites CSV" enabled="true">
    <stringProp name="filename">websites.csv</stringProp>
    <stringProp name="fileEncoding">UTF-8</stringProp>
    <stringProp name="variableNames">CustomerId,CustomerName,Url</stringProp>
    <boolProp name="ignoreFirstLine">true</boolProp>
    <stringProp name="delimiter">,</stringProp>
    <boolProp name="quotedData">false</boolProp>
    <boolProp name="recycle">false</boolProp>
    <boolProp name="stopThread">true</boolProp>
    <stringProp name="shareMode">shareMode.all</stringProp>
    <stringProp name="TestPlan.comments">Read all records from the CSV file -  stop thread at end of file</stringProp>
</CSVDataSet>