Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Из этой статьи вы узнаете, как передавать секреты и среды в качестве параметров нагрузочного теста в Azure Load Testing. Параметры можно использовать для изменения поведения нагрузочного теста, не изменяя скрипт Apache JMeter или Locust. Например, чтобы протестировать веб-приложение, укажите URL-адрес конечной точки в качестве параметра для повторного использования тестового скрипта в нескольких средах. Вы также можете использовать параметры, чтобы избежать необходимости жестко прописывать конфиденциальные сведения в тестовом скрипте.
Служба нагрузочного тестирования Azure поддерживает два типа параметров:
секреты: содержат конфиденциальную информацию и безопасно передаются в движок нагрузочного тестирования. Например, секреты предоставляют учетные данные веб-службы вместо жесткого написания кода в тестовом скрипте. Дополнительные сведения см. в разделе "Настройка нагрузочных тестов с секретами".
Переменные среды: содержат не конфиденциальную информацию и доступны в качестве переменных среды в подсистеме нагрузочных тестов. Например, переменные среды делают URL-адрес конечной точки приложения настраиваемым. Дополнительные сведения см. в разделе "Настройка нагрузочных тестов с переменными среды".
Параметры можно указать в конфигурации нагрузочного теста при создании нового теста или обновлении существующего теста. Если вы запускаете нагрузочный тест в рабочем процессе CI/CD, определите параметры в файле конфигурации нагрузочного теста или в определении рабочего процесса CI/CD.
Предпосылки
Учетная запись Azure с активной подпиской. Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Ресурс нагрузочного тестирования Azure. Если вам нужно создать ресурс Нагрузочного тестирования Azure, ознакомьтесь с кратким руководством по созданию и запуску нагрузочного теста.
Настройка нагрузочных тестов с секретами
В этом разделе описано, как передать секреты в скрипт нагрузочного теста в Azure Load Testing. Например, вы можете использовать секрет для передачи ключа API в конечную точку веб-службы, на которую проводится нагрузочное тестирование. Вместо хранения ключа API в конфигурации или жестком кодировании в скрипте его можно сохранить в секретном хранилище, чтобы жестко контролировать доступ к секрету.
Нагрузочное тестирование Azure позволяет хранить секреты в Azure Key Vault. Кроме того, при запуске нагрузочного теста в конвейере CI/CD можно также использовать хранилище секретов, связанное с технологией CI/CD, например Azure Pipelines или GitHub Actions.
Чтобы использовать секреты с нагрузочного тестирования Azure, выполните следующие действия.
- Сохраните значение секрета в хранилище секретов (Azure Key Vault или хранилище секретов CI/CD).
- Передайте ссылку на секрет в скрипт тестирования Apache JMeter.
- Для тестов на основе JMeter используйте значение секрета в скрипте тестирования Apache JMeter с помощью пользовательской
GetSecret
функции. Для тестов на основе Locust используйте секретное значение, считывая его из переменных среды.
Это важно
При использовании нагрузочного тестирования Azure для запуска тестового скрипта JMeter можно применять только настраиваемую функцию GetSecret
. При локальном запуске скрипта тестирования необходимо обновить скрипт теста и считывать значения секретов по-другому.
Использование Azure Key Vault для хранения секретов нагрузочного теста
Azure Key Vault можно использовать для передачи секретных значений в скрипт тестирования в Azure Load Testing. Вы добавите ссылку на секрет в конфигурации нагрузочного тестирования Azure. Затем служба тестирования нагрузок Azure использует указанную ссылку для извлечения секретного значения в тестовом скрипте.
Кроме того, необходимо предоставить Azure Load Testing доступ к Azure Key Vault, чтобы получить значение секрета.
Замечание
Если вы запускаете нагрузочный тест в рамках процесса CI/CD, вы также можете использовать связанное хранилище секретов. Перейдите к использованию хранилища секретов CI/CD.
Создание секрета в Azure Key Vault
Добавьте значение секрета в хранилище ключей, если вы еще этого не сделали.
Это важно
Если доступ к Azure Key Vault ограничен брандмауэром или виртуальной сетью, выполните следующие действия, чтобы предоставить доступ к доверенным службам Azure.
Получите идентификатор секрета из хранилища ключей. Этот секретный идентификатор используется для настройки нагрузочного теста.
Идентификатор секрета — это полный универсальный код ресурса (URI) секрета в Azure Key Vault. При необходимости можно также включить номер версии. Например,
https://myvault.vault.azure.net/secrets/mysecret/
илиhttps://myvault.vault.azure.net/secrets/mysecret/abcdef01-2345-6789-0abc-def012345678
.
Добавьте секрет в ваш нагрузочный тест
Укажите секрет в конфигурации нагрузочного теста.
Вы определяете параметр секрета нагрузочного теста для каждого секрета, на который вы ссылаетесь в скрипте тестирования. Имя параметра должно соответствовать имени секрета, используемому в тестовом скрипте. Значение параметра — это идентификатор безопасности хранилища ключей.
Можно указать параметры секрета, выполнив одно из следующих действий:
На портале Azure выберите нагрузочный тест, выберите "Настроить", перейдите на вкладку "Параметры ", а затем введите сведения о параметрах.
Если вы настраиваете рабочий процесс CI/CD и используете Azure Key Vault, вы можете указать секрет в файле конфигурации YAML с помощью
secrets
свойства. Дополнительные сведения о синтаксисе см. в справочнике по YAML конфигурации тестов.
Укажите удостоверение, которое Azure Load Testing использует для доступа к секретам в Azure Key Vault.
Удостоверение может быть назначаемым системой удостоверением ресурса нагрузочного тестирования или одним из назначаемых пользователем удостоверений. Убедитесь, что вы используете то же удостоверение, к которому вы предоставили доступ ранее.
Вы можете указать идентификатор ссылки на хранилище ключей, в одной из следующих форм:
На портале Azure выберите нагрузочный тест, выберите Настроить, затем выберите вкладку Параметры, а затем настройте удостоверение ссылки Key Vault.
Если вы настраиваете рабочий процесс CI/CD и используете Azure Key Vault, можно указать идентификатор ссылки в файле конфигурации YAML, используя свойство
keyVaultReferenceIdentity
. Дополнительные сведения о синтаксисе см. в справочнике по YAML конфигурации тестов.
Предоставление доступа к Azure Key Vault
При хранении секретов или сертификатов нагрузочного теста в Azure Key Vault ресурс нагрузочного тестирования использует управляемое удостоверение для доступа к хранилищу ключей. После настройки удостоверения управления необходимо предоставить управляемое удостоверение ресурса нагрузочного тестирования для чтения этих значений из хранилища ключей.
Чтобы предоставить ресурсу нагрузочного тестирования Azure разрешения на чтение секретов или сертификатов из Azure Key Vault:
На портале Azure перейдите к ресурсу Azure Key Vault.
Если у вас нет хранилища ключей, следуйте инструкциям в кратком руководстве по созданию хранилища ключей Azure.
На левой панели выберите "Политики доступа" и нажмите кнопку "Создать".
На вкладке "Разрешения" в разделе "Разрешения секрета" выберите "Получить" и нажмите кнопку "Далее".
Замечание
Нагрузочное тестирование Azure извлекает сертификаты в качестве секрета , чтобы обеспечить доступность закрытого ключа сертификата.
На вкладке "Основные" найдите и выберите управляемое удостоверение для ресурса нагрузочного тестирования, а затем нажмите кнопку "Далее".
Если вы используете управляемое удостоверение, назначаемое системой, имя управляемого удостоверения совпадает с именем ресурса нагрузочного тестирования Azure.
Снова выберите Далее.
При выполнении теста управляемое удостоверение, связанное с ресурсом нагрузочного тестирования, теперь может считывать секреты или сертификаты для нагрузочного теста из хранилища ключей.
Теперь, когда вы добавили секрет в Azure Key Vault, настроили секрет для нагрузочного теста, теперь можно перейти к использованию секретов в Apache JMeter.
Использование хранилища секретов CI/CD для сохранения секретов нагрузочного теста
Если вы используете нагрузочное тестирование Azure в рабочем процессе CI/CD, вы также можете использовать связанное хранилище секретов. Например, можно использовать секреты репозитория GitHub или секретные переменные в Azure Pipelines.
Замечание
Если вы уже используете хранилище ключей, вы также можете использовать его для хранения секретов нагрузочного теста. Перейдите к использованию Azure Key Vault.
Чтобы использовать секреты в хранилище секретов CI/CD и передать их в нагрузочный тест в CI/CD:
Добавьте значение секрета в хранилище секретов CI/CD, если оно еще не существует.
В Azure Pipelines можно изменить конвейер и добавить переменную.
В GitHub можно использовать секреты репозитория GitHub.
Замечание
Не забудьте использовать фактическое значение секрета, а не идентификатор секрета хранилища ключей в качестве значения.
Передайте секрет в качестве входного параметра в задачу или действие нагрузочного тестирования в рабочем процессе CI/CD.
В следующем фрагменте кода YAML показано, как передать секрет в действие нагрузочного тестирования GitHub:
- name: 'Azure Load Testing' uses: azure/load-testing@v1 with: loadtestConfigFile: 'SampleApp.yaml' loadtestResource: 'MyTest' resourceGroup: 'loadtests-rg' secrets: | [ { "name": "appToken", "value": "${{ secrets.MY_SECRET }}" } ]
В следующем фрагменте КОДА YAML показано, как передать секрет задаче Azure Pipelines:
- task: AzureLoadTest@1 inputs: azureSubscription: 'MyAzureLoadTestingRG' loadTestConfigFile: 'SampleApp.yaml' loadTestResource: 'MyTest' resourceGroup: 'loadtests-rg' secrets: | [ { "name": "appToken", "value": "$(mySecret)" } ]
Это важно
Имя входного параметра секрета должно соответствовать имени, используемому в скрипте Apache JMeter.
Теперь вы указали секрет в хранилище секретов CI/CD и передали ссылку на нагрузочное тестирование Azure. Теперь вы можете использовать секрет в скрипте Apache JMeter.
Использование секретов в тестовом скрипте
Затем вы обновите тестовый скрипт, чтобы использовать секрет, указанный ранее.
Сначала создается определяемая пользователем переменная, которая извлекает значение секрета. Затем эту переменную можно использовать в тесте (например, для передачи маркера API в заголовке HTTP-запроса).
Создайте определяемую пользователем переменную в файле JMX и назначьте ему значение секрета с помощью
GetSecret
настраиваемой функции.Функция
GetSecret(<my-secret-name>)
принимает имя секрета в качестве аргумента. Это же имя используется при настройке нагрузочного теста на более поздних шагах.Вы можете создать определяемую пользователем переменную с помощью интегрированной среды разработки Apache JMeter, как показано на следующем рисунке:
Кроме того, можно напрямую изменить JMX-файл, как показано в следующем фрагменте кода:
<Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="appToken" elementType="Argument"> <stringProp name="Argument.name">udv_appToken</stringProp> <stringProp name="Argument.value">${__GetSecret(appToken)}</stringProp> <stringProp name="Argument.desc">Value for x-secret header </stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </Arguments>
Ссылка на определяемую пользователем переменную в скрипте теста.
Для ссылки на переменную в скрипте можно использовать синтаксис
${}
. В следующем примере для задания заголовка HTTP используется переменнаяudv_appToken
.<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> <collectionProp name="HeaderManager.headers"> <elementProp name="" elementType="Header"> <stringProp name="Header.name">api-key</stringProp> <stringProp name="Header.value">${udv_appToken}</stringProp> </elementProp> </collectionProp> </HeaderManager>
Настройка нагрузочных тестов с переменными среды
В этом разделе вы используете переменные среды для передачи параметров в нагрузочный тест.
Обновите скрипт Apache JMeter, чтобы использовать переменную среды (например, чтобы настроить имя узла конечной точки приложения).
Настройте нагрузочный тест и передайте переменную среды в скрипт тестирования.
Использование переменных среды в Apache JMeter
В этом разделе описано, как обновить скрипт Apache JMeter, чтобы использовать переменные среды для управления поведением скрипта.
Сначала необходимо определить определяемую пользователем переменную, которая считывает переменную среды, а затем использовать эту переменную в тестовом выполнении (например, для обновления домена HTTP).
Создайте определяемую пользователем переменную в JMX-файле и назначьте ей значение переменной среды с помощью функции
System.getenv
.Функция
System.getenv("<my-variable-name>")
принимает имя переменной среды в качестве аргумента. Это же имя используется при настройке нагрузочного теста.Вы можете создать определяемую пользователем переменную с помощью интегрированной среды разработки Apache JMeter, как показано на следующем рисунке:
Кроме того, можно напрямую изменить JMX-файл, как показано в следующем фрагменте кода:
<Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="appToken" elementType="Argument"> <stringProp name="Argument.name">udv_webapp</stringProp> <stringProp name="Argument.value">${__BeanShell( System.getenv("webapp") )}</stringProp> <stringProp name="Argument.desc">Web app URL</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </Arguments>
Ссылка на определяемую пользователем переменную в скрипте теста.
Для ссылки на переменную в скрипте можно использовать синтаксис
${}
. В следующем примере используется переменнаяudv_webapp
для настройки URL-адреса конечной точки приложения.<stringProp name="HTTPSampler.domain">${udv_webapp}</stringProp>
Настройка переменных среды в Нагрузочном тестировании Azure
Чтобы передать переменные среды в скрипт тестирования, можно настроить нагрузочный тест на портале Azure, в файле конфигурации yamL или непосредственно в рабочем процессе CI/CD.
Это важно
При определении переменной среды для нагрузочного теста его имя должно совпадать с именем переменной, используемой в тестовом скрипте.
Чтобы указать переменную среды для нагрузочного теста с помощью портала Azure, сделайте следующее:
На странице конфигурации теста выберите вкладку "Параметры ".
В разделе "Переменные среды" введите имя и значение переменной среды, а затем нажмите кнопку "Применить".
При запуске нагрузочного теста в рабочем процессе CI/CD можно определить переменные среды в файле конфигурации тестов YAML. Дополнительные сведения о синтаксисе см. в справочнике по YAML конфигурации тестов.
Кроме того, можно напрямую указать переменные среды в определении рабочего процесса CI/CD. Входные параметры используются для действия Azure Load Testing или задачи Azure Pipelines для передачи переменных среды в скрипт тестирования.
В следующем фрагменте кода YAML показан пример GitHub Actions:
- name: 'Azure Load Testing'
uses: azure/load-testing
with:
loadtestConfigFile: 'SampleApp.yaml'
loadtestResource: 'MyTest'
resourceGroup: 'loadtests-rg'
env: |
[
{
"name": "webapp",
"value": "myapplication.contoso.com"
}
]
В следующем фрагменте кода YAML показан пример Azure Pipelines:
- task: AzureLoadTest@1
inputs:
azureSubscription: 'MyAzureLoadTestingRG'
loadTestConfigFile: 'SampleApp.yaml'
loadTestResource: 'MyTest'
resourceGroup: 'loadtests-rg'
env: |
[
{
"name": "webapp",
"value": "myapplication.contoso.com"
}
]
Вопросы и ответы
Хранит ли служба Azure Load Testing мои секретные значения?
Нет. Служба Azure Load Testing не сохраняет значения секретов. При использовании URI секрета хранилища ключей служба сохраняет только URI секрета и получает значение секрета для каждого тестового запуска. Если вы предоставляете значение секретов в рабочем процессе CI/CD, значения секретов недоступны после тестового запуска. Эти значения предоставляются для каждого тестового запуска.
Что произойдет, если у меня есть параметры в файле конфигурации YAML и рабочем процессе CI/CD?
Если параметр существует как в файле конфигурации YAML, так и в действии нагрузочного тестирования Azure или задаче Azure Pipelines, значение рабочего процесса CI/CD используется для тестового запуска.
Я создал и выполнил тест из рабочего процесса CI/CD, передав параметры с помощью задачи или действия Azure Load Testing. Можно ли запустить этот тест на портале Azure с теми же параметрами?
Значения параметров не сохраняются при передаче из рабочего процесса CI/CD. При запуске теста на портале Azure необходимо снова указать значения параметров. Появится запрос на ввод отсутствующих значений. Для секретных значений введите URI секрета в Хранилище ключей. Значения, которые вы вводите на странице тестового запуска или повторного запуска, допустимы только для этого тестового запуска. Чтобы внести изменения на уровне теста, перейдите к разделу "Настройка теста " и введите значения параметров.
Связанный контент
- Используйте секреты для нагрузочного тестирования защищенных конечных точек.
- Дополнительные сведения о чтении CSV-файлов см. в разделе "Чтение CSV-файлов" в нагрузочных тестах.