Настройка нагрузочного теста в YAML
Узнайте, как настроить нагрузочный тест в Azure Load Testing с помощью YAML. Для создания и запуска нагрузочных тестов из рабочего процесса непрерывной интеграции и непрерывной доставки (CI/CD) используется файл конфигурации YAML.
Синтаксис YAML нагрузочного теста
Конфигурация нагрузочного теста использует следующие ключи:
Ключ | Тип | Обязательное поле | Значение по умолчанию | Description |
---|---|---|---|---|
version |
строка | Y | Версия спецификации нагрузочного теста. Единственным поддерживаемым значением является v0.1 . |
|
testId |
строка | Y | Уникальный идентификатор нагрузочного теста. Значение должно быть от 2 до 50 символов ([a-z0-9_]). Для существующего теста можно получить testId на странице сведений о тесте в портал Azure. |
|
testName |
строка | N | Устарело. Уникальный идентификатор нагрузочного теста. Этот параметр заменяется testId . Вы по-прежнему можете выполнять существующие testName тесты с помощью поля. |
|
displayName |
строка | N | Отображаемое имя теста. Это значение отображается в списке тестов в портал Azure. Если оно не указано, testId используется в качестве отображаемого имени. |
|
description |
строка | N | Краткое описание теста. Значение имеет максимальную длину 100 символов. | |
testType |
строка | Y | Тип теста. Возможные значения:
|
|
testPlan |
строка | Y | Ссылка на файл плана тестирования. |
|
engineInstances |
integer | Y | Число экземпляров параллельного тестового модуля для выполнения тестового плана. Узнайте больше о настройке высокомасштабируемой нагрузки. | |
configurationFiles |
Массив строк | N | Список внешних файлов, необходимых для тестового скрипта. Например, CSV-файлы данных, изображения или любой другой файл данных. Нагрузочное тестирование Azure отправляет все файлы в ту же папку, что и скрипт тестирования. В скрипте JMeter или скрипте Locust ссылаются только на внешние файлы, используя имя файла, и удалите все сведения о пути к файлу. |
|
failureCriteria |
объект | N | Список критериев сбоя нагрузочного теста. Дополнительные сведения см. в разделе failureCriteria . | |
autoStop |
Строка или объект | N | Автоматически остановите нагрузочный тест, когда процент ошибок превышает значение. Возможные значения: - disable : не остановите нагрузочный тест автоматически.- объект: дополнительные сведения см . в конфигурации автостопирования . |
|
properties |
объект | N |
|
|
zipArtifacts |
Массив строк | N | Указывает список zip-артефактов. Для файлов, отличных от скриптов JMeter и свойств пользователя для тестов на основе JMeter, а также файлов скрипта и конфигурации Locust для тестов на основе Локуста, если размер файла превышает 50 МБ, сжать их в ZIP-файл. Убедитесь, что ZIP-файл остается ниже 50 МБ в размере. Допускается только 5 ZIP-артефактов с не более чем 1000 файлами в каждом и несжатом размере 1 ГБ. Применяется только для testType: JMX и testType: Locust . |
|
splitAllCSVs |
boolean | N | False | Разбиение входных CSV-файлов по всем экземплярам тестового модуля. Дополнительные сведения см. в статье "Чтение CSV-файла" в нагрузочных тестах. |
secrets |
объект | N | Список секретов, на которые ссылается скрипт Apache JMeter или Locust. Дополнительные сведения см . в секретах . | |
env |
объект | N | Список переменных среды, на которые ссылается скрипт Apache JMeter или Locust. Дополнительные сведения см . в переменных среды. | |
certificates |
объект | N | Список сертификатов клиента для проверки подлинности с помощью конечных точек приложения в скрипте JMeter или Locust. Дополнительные сведения см . в сертификатах . | |
keyVaultReferenceIdentity |
строка | N | Идентификатор ресурса управляемого удостоверения, назначаемого пользователем, для доступа к секретам из Azure Key Vault. Если вы используете управляемое системой удостоверение, эти сведения не требуются. Обязательно предоставьте этому пользователю доступ к хранилищу ключей Azure. Дополнительные сведения об управляемых удостоверениях см. в службе "Нагрузочное тестирование Azure". | |
subnetId |
строка | N | Идентификатор ресурса подсети виртуальной сети для тестирования частных конечных точек. Эта подсеть размещает внедренные виртуальные машины модуль тестирования. Дополнительные сведения см. в статье о том, как нагрузить частные конечные точки, размещенные в частном режиме. | |
publicIPDisabled |
boolean | N | Отключите развертывание общедоступного IP-адреса, подсистемы балансировки нагрузки и группы безопасности сети при тестировании частной конечной точки. Дополнительные сведения см. в статье о том, как нагрузить частные конечные точки, размещенные в частном режиме. | |
regionalLoadTestConfig |
объект | N | Распределяйте нагрузку между регионами, чтобы имитировать трафик пользователей из нескольких регионов. Дополнительные сведения см . в конфигурации регионального нагрузочного теста. |
Пример конфигурации нагрузочного теста
Следующий фрагмент кода YAML содержит пример конфигурации нагрузочного теста.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
subnetId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Network/virtualNetworks/load-testing-vnet/subnets/load-testing
configurationFiles:
- 'sampledata.csv'
zipArtifacts:
- bigdata.zip
splitAllCSVs: True
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop:
errorPercentage: 80
timeWindow: 60
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
keyVaultReferenceIdentity: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
failureCriteria
Конфигурация
Критерии сбоя теста позволяют определить условия, чтобы определить, успешно ли выполнен нагрузочный тест. Если выполняется один или несколько критериев сбоя, тест получает результат теста с ошибкой. Дополнительные сведения об использовании критериев сбоя нагрузочного теста.
Можно определить критерии сбоя, которые применяются ко всему нагрузочному тесту или применяются к конкретному запросу. Критерии сбоя имеют следующую структуру:
- Критерии тестирования на уровне нагрузочного теста:
Aggregate_function (client_metric) condition threshold
- Критерии тестирования, применяемые к определенным запросам JMeter:
Request: Aggregate_function (client_metric) condition threshold
Поддерживаемые клиентские метрики
Нагрузочное тестирование Azure поддерживает следующие метрики клиента:
Метрика | Агрегатная функция | За пороговое значение | Условие | Description |
---|---|---|---|---|
response_time_ms |
avg (среднее)min (минимум)max (максимум)pxx (процентиль), xx может быть 50, 75, 90, 95, 96, 97, 98, 99, 999 и 9999 |
Целочисленное значение, представляющее число миллисекунда (мс). | > (больше чем);< (меньше чем); |
Время отклика или истекшее время в миллисекундах. Дополнительные сведения о истекаемом времени см. в документации по Apache JMeter. |
latency |
avg (среднее)min (минимум)max (максимум)pxx (процентиль), xx может быть 50, 90, 95, 99 |
Целочисленное значение, представляющее число миллисекунда (мс). | > (больше чем);< (меньше чем); |
Задержка в миллисекундах. Дополнительные сведения о задержке см. в документации по Apache JMeter. |
error |
percentage |
Числовое значение в диапазоне 0–100, представляющее процент. | > (больше чем); |
Процент неудачных запросов. |
requests_per_sec |
avg (среднее) |
Числовое значение с двумя десятичными разрядами. | > (больше) < (меньше чем); |
Количество запросов в секунду. |
requests |
count |
Целое значение. | > (больше) < (меньше чем); |
Общее количество запросов. |
Пример конфигурации условий сбоя
В следующем фрагменте кода показана конфигурация нагрузочного теста, которая имеет три критерия сбоя нагрузочного теста.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop
Конфигурация
Функция автостопирования нагрузочного теста позволяет автоматически останавливать нагрузочный тест, когда процент ошибок превышает определенное пороговое значение в течение заданного периода времени. Дополнительные сведения о функции автостопирования нагрузочного теста.
Ключ | Тип | Default value | Description |
---|---|---|---|
errorPercentage |
integer | 90 | Пороговое значение для процента ошибок во время timeWindow . Если процент ошибок превышает этот процент в течение любого заданного периода времени, тестовый запуск останавливается автоматически. |
timeWindow |
integer | 60 | Время в секундах errorPercentage для вычисления. |
Пример конфигурации автостопок
В следующем фрагменте кода показана конфигурация нагрузочного теста, которая имеет три критерия сбоя нагрузочного теста.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
autoStop:
errorPercentage: 80
timeWindow: 60
properties
Конфигурация
Вы можете указать файл свойств пользователя JMeter для нагрузочного теста. Файл свойств пользователя передается вместе с планом тестирования и другими файлами. Дополнительные сведения об использовании свойств пользователя JMeter в Azure Load Testing.
Ключ | Тип | Default value | Description |
---|---|---|---|
userPropertyFile |
строка | Файл для использования в качестве файла свойств пользователя Apache JMeter или файла конфигурации Locust. Для Locust файлы с расширениями .conf, .ini и TOML поддерживаются в виде файла конфигурации. Файл передается в ресурс Azure Load Testing вместе со скриптом теста и другими файлами конфигурации. Если файл находится в подпапке на локальном компьютере, используйте путь относительно расположения тестового скрипта. |
Пример конфигурации файла свойств пользователя
В следующем фрагменте кода показана конфигурация нагрузочного теста, указывающая файл свойств пользователя.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
properties:
userPropertyFile: 'user.properties'
В следующем фрагменте кода показана конфигурация нагрузочного теста, которая задает файл конфигурации Locust.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.py
testType: Locust
engineInstances: 1
properties:
userPropertyFile: 'locust.conf'
secrets
Конфигурация
Вы можете хранить секретные значения в Azure Key Vault и ссылаться на них в тестовом плане. Дополнительные сведения об использовании секретов с azure Load Testing.
Ключ | Тип | Default value | Description |
---|---|---|---|
name |
строка | Имя секрета. Это имя должно соответствовать имени секрета, используемому в запросах тестового плана. | |
value |
строка | URI (секретный идентификатор) для секрета Azure Key Vault. |
Пример конфигурации секретов
В следующем фрагменте кода показана конфигурация нагрузочного теста, которая ссылается на секрет my-secret
в Azure Key Vault.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
env
Конфигурация
Переменные среды можно указать и ссылаться на них в плане тестирования. Дополнительные сведения об использовании переменных среды с помощью нагрузочного тестирования Azure.
Ключ | Тип | Default value | Description |
---|---|---|---|
name |
строка | Имя переменной среды. Это имя должно совпадать с именем переменной, используемой в запросах тестового плана. | |
value |
строка | Значение переменной среды. |
Пример конфигурации переменной среды
В следующем фрагменте кода показана конфигурация нагрузочного теста, которая указывает переменную my-variable
среды и значение my-value
.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
env:
- name: my-variable
value: my-value
certificates
Конфигурация
Вы можете передать сертификаты клиента в нагрузочный тест. Сертификат хранится в Azure Key Vault. Дополнительные сведения об использовании сертификатов клиента с помощью нагрузочного тестирования Azure.
Ключ | Тип | Default value | Description |
---|---|---|---|
name |
строка | Имя сертификата. | |
value |
строка | URI (секретный идентификатор) для сертификата в Azure Key Vault. |
Пример конфигурации сертификата
В следующем фрагменте кода показана конфигурация нагрузочного теста, которая ссылается на сертификат клиента в Azure Key Vault.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
certificates:
- name: my-certificate
value: https://akv-contoso.vault.azure.net/certificates/MyCertificate/abc1234567890def12345
Запросы JSON-файла
При использовании теста на основе URL-адресов можно указать HTTP-запросы в JSON-файле вместо использования скрипта тестирования JMeter. Обязательно установите testType
URL
значение в файле YAML конфигурации теста и составьте ссылку на JSON-файл.
HTTP-запросы;
В файле JSON запросов используются следующие свойства для определения запросов в свойстве requests
:
Свойство | Type | Описание: |
---|---|---|
requestName |
строка | Уникальное имя запроса. При настройке условий сбоя теста можно ссылаться на имя запроса. |
responseVariables |
array | Список переменных ответа. Используйте переменные ответа для извлечения значения из запроса и ссылки на него в последующем запросе. Дополнительные сведения о переменных ответа. |
responseVariables.extractorType |
строка | Механизм извлечения значения из выходных данных ответа. Поддерживаются значения XPathExtractor , JSONExtractor и RegularExpression . |
responseVariables.expression |
строка | Выражение для получения выходных данных ответа. Выражение зависит от значения типа извлекателя. |
responseVariables.variableName |
строка | Уникальное имя переменной ответа. Вы можете ссылаться на эту переменную в последующем запросе с помощью синтаксиса {$variable-name} . |
queryParameters |
array | Список параметров строки запроса для передачи в конечную точку. |
queryParameters.key |
строка | Имя параметра строки запроса. |
queryParameters.value |
строка | Значение параметра строки запроса. |
requestType |
строка | тип запроса; Поддерживаемые значения: URL или CURL . |
endpoint |
строка | URL-адрес конечной точки приложения для тестирования. |
headers |
array | Список заголовков HTTP для передачи в конечную точку приложения. Укажите пару "ключ-значение" для каждого заголовка. |
body |
строка | Текст http-запроса. Можно использовать для requestBodyFormat указания формата содержимого текста. |
requestBodyFormat |
строка | Формат содержимого текста. Поддерживаемые значения: Text , , JavaScript JSON , HTML и XML . |
method |
строка | Метод HTTP для вызова конечной точки. Поддерживаемые значения: GET , POST , , DELETE PUT , PATCH , HEAD и OPTIONS . |
curlCommand |
строка | Команда cURL для выполнения. Требует, чтобы он requestType был CURL . |
Следующий фрагмент JSON содержит пример запроса JSON-файла:
{
"version": "1.0",
"scenarios": {
"requestGroup1": {
"requests": [
{
"requestName": "add",
"responseVariables": [],
"queryParameters": [
{
"key": "param1",
"value": "value1"
}
],
"requestType": "URL",
"endpoint": "https://www.contoso.com/orders",
"headers": {
"api-token": "my-token"
},
"body": "{\r\n \"customer\": \"Contoso\",\r\n \"items\": {\r\n\t \"product_id\": 321,\r\n\t \"count\": 50,\r\n\t \"amount\": 245.95\r\n }\r\n}",
"method": "POST",
"requestBodyFormat": "JSON"
},
{
"requestName": "get",
"responseVariables": [],
"requestType": "CURL",
"curlCommand": "curl --request GET 'https://www.contoso.com/orders'"
},
],
"csvDataSetConfigList": []
}
},
"testSetup": [
{
"virtualUsersPerEngine": 1,
"durationInSeconds": 600,
"loadType": "Linear",
"scenario": "requestGroup1",
"rampUpTimeInSeconds": 30
}
]
}
Конфигурация загрузки
В файле JSON запросов используются следующие свойства для определения конфигурации загрузки в свойстве testSetup
:
Свойство | Тип | Тип загрузки | Description |
---|---|---|---|
loadType |
строка | Тип шаблона загрузки. Поддерживаемые значения: linear , step и spike . |
|
scenario |
строка | Ссылка на группу запросов, указанную в свойстве scenarios . |
|
virtualUsersPerEngine |
integer | Все | Количество виртуальных пользователей на экземпляр подсистемы тестирования. |
durationInSeconds |
integer | Все | Общая длительность нагрузочного теста в секундах. |
rampUpTimeInSeconds |
integer | Линейный, шаг | Длительность в секундах для увеличения целевого числа виртуальных пользователей. |
rampUpSteps |
integer | Этап | Количество шагов для достижения целевого числа виртуальных пользователей. |
spikeMultiplier |
integer | Пик | Фактор умножения числа целевых пользователей с периодом пикового периода. |
spikeHoldTimeInSeconds |
integer | Пик | Общая длительность в секундах для поддержания пиковой нагрузки. |
Конфигурация регионального нагрузочного теста
Вы можете распределять нагрузку между регионами, чтобы лучше имитировать шаблоны трафика в реальной жизни. Можно указать регионы, из которых нужно создать нагрузку, и объем нагрузки, которую вы хотите имитировать из каждого региона. Это можно сделать, указав имя региона и количество экземпляров подсистемы, которые требуется в этом регионе. Дополнительные сведения о создании нагрузки из нескольких регионов.
Ключ | Тип | Default value | Description |
---|---|---|---|
region |
строка | Имя региона Azure. | |
engineInstances |
integer | Количество экземпляров подсистемы для этого региона Azure. |
Пример конфигурации регионального нагрузочного теста
В следующем фрагменте кода показана конфигурация нагрузочного теста, указывающая два региона eastus
Azure и eastasia
количество экземпляров подсистемы для каждого региона.
displayName: Sample Test
testPlan: sampleScript.jmx
description: 'Load test website home page'
engineInstances: 4
testId: SampleTest
testType: Locust
splitAllCSVs: False
regionalLoadTestConfig:
- region: eastus
engineInstances: 2
- region: eastasia
engineInstances: 2
failureCriteria:
- p90(response_time_ms) > 10000
autoStop:
errorPercentage: 90
timeWindow: 60
Связанный контент
- Узнайте, как создать автоматическое тестирование регрессии в рабочем процессе CI/CD.
- Узнайте, как параметризировать нагрузочные тесты с помощью секретов и переменных среды.
- Узнайте, как нагрузить защищенные конечные точки нагрузочного теста.