Чтение данных из 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:
Выберите элемент конфигурации набора данных CSV в тестовом скрипте.
Обновите сведения о имени файла и удалите любую ссылку на путь к файлу.
При необходимости введите имена полей CSV в именах переменных при разбинии CSV-файла по модулям тестирования.
Нагрузочное тестирование Azure не сохраняет строку заголовка при разбинии CSV-файла. Укажите имена переменных в элементе конфигурации набора данных CSV вместо использования строки заголовка.
Повторите предыдущие шаги для каждого элемента конфигурации набора данных CSV в скрипте.
Сохраните скрипт JMeter и отправьте скрипт в нагрузочный тест.
Отправка CSV-файла в нагрузочный тест
При ссылке на внешние файлы из тестового скрипта обязательно передайте все эти файлы вместе со скриптом тестирования JMeter. При запуске нагрузочного теста Azure Load Testing копирует все файлы в одну папку на каждом экземпляре тестовых модулей.
Важно!
Нагрузочное тестирование Azure не сохраняет строку заголовка при разбинии CSV-файла. Перед добавлением CSV-файла в нагрузочный тест удалите строку заголовка из файла.
Чтобы добавить CSV-файл в нагрузочный тест с помощью портал Azure:
В портал Azure перейдите к ресурсу нагрузочного тестирования Azure.
На левой панели выберите "Тесты ", чтобы просмотреть список тестов.
Выберите тест из списка, выбрав проверка box, а затем нажмите кнопку "Изменить".
На вкладке "План тестирования" выберите CSV-файл с компьютера, а затем нажмите кнопку "Отправить ", чтобы отправить файл в Azure.
Если вы используете нагрузочный тест на основе URL-адресов, можно ввести имена переменных в виде разделенного запятыми списка в столбце "Переменные ".
Если размер CSV-файла превышает 50 МБ, запакуйте его. Размер ZIP-файла должен быть ниже 50 МБ. Нагрузочное тестирование Azure автоматически распакует файл во время тестового запуска. Допускается только пять zip-артефактов с не более чем 1000 файлами в каждом ZIP-файле и несжатым общим размером 1 ГБ.
Нажмите кнопку "Применить" , чтобы изменить тест и использовать новую конфигурацию при повторном запуске.
Совет
Если вы используете нагрузочный тест на основе URL-адресов, вы можете ссылаться на значения из CSV-файла входных данных в HTTP-запросах с помощью синтаксиса $(variable)
.
Разделение входных данных CSV по модулям тестирования
По умолчанию Нагрузочное тестирование Azure копирует и обрабатывает входные файлы, не измененные во всех экземплярах тестового модуля. По умолчанию каждый модуль тестирования обрабатывает весь CSV-файл. Кроме того, нагрузочное тестирование Azure позволяет разделить входные данные CSV по всем экземплярам ядра. Если у вас несколько CSV-файлов, каждый файл распределяется равномерно.
Например, если у вас есть большой csv-файл ввода клиента, а нагрузочный тест выполняется на 10 параллельных тестовых модулях, то каждый экземпляр обрабатывает 1/10-е число клиентов.
Важно!
Нагрузочное тестирование Azure не сохраняет строку заголовка при разбинии CSV-файла.
- Настройте скрипт JMeter для использования имен переменных при чтении CSV-файла.
- Удалите строку заголовка из CSV-файла перед его добавлением в нагрузочный тест.
Чтобы настроить нагрузочный тест для разделения входных CSV-файлов:
Перейдите на вкладку "План тестирования" для нагрузочного теста.
Выберите "Разделить CSV" равномерно между подсистемами тестирования.
Нажмите кнопку "Применить" , чтобы подтвердить изменения конфигурации.
При следующем выполнении теста нагрузочное тестирование 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>