Поделиться через


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

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

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

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

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

Предпосылки

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

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

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

Это важно

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

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

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

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

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

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

    Снимок экрана: пользовательский интерфейс JMeter для настройки элемента конфигурации набора данных C V.

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

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

Для тестов на основе Локуста обновите скрипт Locust, открыв его редактор вашего выбора.

  1. В разделе, в котором вы открываете файл, обновите сведения о имени файла и удалите любую ссылку на путь к файлу.

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

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

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

Это важно

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

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

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

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

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

    Снимок экрана: список нагрузочных тестов и кнопка

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

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

    Снимок экрана: вкладка

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

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

Подсказка

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

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

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

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

Это важно

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

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

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

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

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

    Снимок экрана: флажок для включения разделения входных файлов C S V при настройке теста на портале Azure.

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

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

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

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

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

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

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

В следующем фрагменте кода показано извлечение файла 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>