Клиентская библиотека нагрузочного тестирования Azure для Python версии 1.0.0
Нагрузочное тестирование Azure предоставляет пользователю клиентская библиотека в Python, с помощью которой он может взаимодействовать со службой нагрузочного тестирования Azure. Нагрузочное тестирование Azure — это полностью управляемая служба нагрузочного тестирования, которая позволяет создавать высокомасштабную нагрузку. Служба имитирует трафик для ваших приложений, независимо от того, где они размещены. Разработчики, тестировщики и инженеры контроля качества (QA) могут использовать его для оптимизации производительности, масштабируемости или емкости приложений.
Документация
Вы можете приступить к работе с различными документами.
Начало работы
Установка пакета
python -m pip install azure-developer-loadtesting
Предварительные требования
- Для использования этого пакета требуется Python 3.7 или более поздней версии.
- Для использования этого пакета требуется подписка Azure .
- Существующий экземпляр Azure Developer LoadTesting.
Создание с помощью учетных данных Azure Active Directory
Чтобы использовать учетные данные маркера Azure Active Directory (AAD), укажите экземпляр нужного типа учетных данных, полученных из библиотеки azure-identity .
Для проверки подлинности с помощью AAD необходимо сначала установить pipazure-identity
После настройки можно выбрать тип учетных данных из azure.identity для использования.
Например, войдите с помощью команды Azure CLI az login
, и DefaultAzureCredential выполнит проверку подлинности от имени этого пользователя.
Используйте возвращенные учетные данные маркера для проверки подлинности клиента.
Создание клиента
Пакет SDK для azure Developer LoadTesting содержит 2 вложенных клиента основного клиента (LoadTestingClient
) для взаимодействия со службой , "администрирование" и "test_run".
from azure.developer.loadtesting import LoadTestAdministrationClient
# for managing authentication and authorization
# can be installed from pypi, follow: https://pypi.org/project/azure-identity/
# using DefaultAzureCredentials, read more at: https://video2.skills-academy.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python
from azure.identity import DefaultAzureCredential
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
<endpoint>
ссылается на конечную точку или URL-адрес плоскости данных ресурса.
Основные понятия
Клиентская библиотека нагрузочного теста Azure для Python позволяет взаимодействовать с каждым из этих компонентов с помощью клиентов. Существует два клиента верхнего уровня, которые являются основными точками входа для библиотеки.
LoadTestAdministrationClient
(azure.developer.loadtesting.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.LoadTestRunClient
)
Эти два клиента также имеют асинхронные аналоги, которые являются
LoadTestAdministrationClient
(azure.developer.loadtesting.aio.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.aio.LoadTestRunClient
)
Клиент администрирования нагрузочных тестов
LoadTestAdministrationClient
используется для администрирования и настройки нагрузочных тестов, компонентов приложений и метрик.
Тест
Тест задает скрипт теста и параметры конфигурации для запуска нагрузочного теста. Вы можете создать один или несколько тестов в ресурсе нагрузочного тестирования Azure.
Компонент приложения
При запуске нагрузочного теста для приложения, размещенного в Azure, можно отслеживать метрики ресурсов для различных компонентов приложения Azure (метрики на стороне сервера). Во время выполнения нагрузочного теста и после его завершения вы можете отслеживать и анализировать метрики ресурсов на панели мониторинга нагрузочного тестирования Azure.
Метрики
Во время нагрузочного теста Azure Load Testing собирает метрики о выполнении теста. Есть два типа метрик:
Метрики на стороне клиента предоставляют сведения, сообщаемые подсистемой тестирования. Эти метрики включают количество виртуальных пользователей, время ответа на запрос, количество неудачных запросов или количество запросов в секунду.
Метрики на стороне сервера доступны для приложений, размещенных в Azure, и предоставляют сведения о компонентах приложений Azure. Метрики могут быть для количества операций чтения базы данных, типа HTTP-ответов или потребления ресурсов контейнера.
Клиент тестового запуска
LoadTestRunClient
используется для запуска и остановки тестовых запусков, соответствующих нагрузочному тесту. Тестовый запуск представляет одно выполнение нагрузочного теста. Он собирает журналы, связанные с выполнением скрипта Apache JMeter, конфигурацию YAML нагрузочного теста, список отслеживаемых компонентов приложения и результаты теста.
Конечная точка Data-Plane
Плоскость данных ресурсов нагрузочного тестирования Azure доступна в следующем формате URL-адреса:
00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com
Первый GUID 00000000-0000-0000-0000-000000000000
— это уникальный идентификатор, используемый для доступа к ресурсу Нагрузочного тестирования Azure. За ним следует aaa
регион Azure ресурса.
Конечная точка плоскости данных получается из API уровня управления.
Пример1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com
В приведенном выше примере eus
представляет регион East US
Azure .
Примеры
Создание нагрузочного теста
from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
import os
TEST_ID = "some-test-id"
DISPLAY_NAME = "my-load-test"
# set SUBSCRIPTION_ID as an environment variable
SUBSCRIPTION_ID = os.environ["SUBSCRIPTION_ID"]
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
result = client.create_or_update_test(
TEST_ID,
{
"description": "",
"displayName": "My New Load Test",
"loadTestConfig": {
"engineInstances": 1,
"splitAllCSVs": False,
},
"passFailCriteria": {
"passFailMetrics": {
"condition1": {
"clientmetric": "response_time_ms",
"aggregate": "avg",
"condition": ">",
"value": 300
},
"condition2": {
"clientmetric": "error",
"aggregate": "percentage",
"condition": ">",
"value": 50
},
"condition3": {
"clientmetric": "latency",
"aggregate": "avg",
"condition": ">",
"value": 200,
"requestName": "GetCustomerDetails"
}
}
},
"secrets": {
"secret1": {
"value": "https://sdk-testing-keyvault.vault.azure.net/secrets/sdk-secret",
"type": "AKV_SECRET_URI"
}
},
"environmentVariables": {
"my-variable": "value"
}
}
)
print(result)
except HttpResponseError as e:
print('Service responded with error: {}'.format(e.response.json()))
Отправка JMX-файла в тест
from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
TEST_ID = "some-test-id"
FILE_NAME = "some-file-name.jmx"
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
# uploading .jmx file to a test
resultPoller = client.begin_upload_test_file(TEST_ID, FILE_NAME, open("sample.jmx", "rb"))
# getting result of LRO poller with timeout of 600 secs
validationResponse = resultPoller.result(600)
print(validationResponse)
except HttpResponseError as e:
print("Failed with error: {}".format(e.response.json()))
Запуск теста
from azure.developer.loadtesting import LoadTestRunClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
TEST_ID = "some-test-id"
TEST_RUN_ID = "some-testrun-id"
DISPLAY_NAME = "my-load-test-run"
client = LoadTestRunClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
testRunPoller = client.begin_test_run(
TEST_RUN_ID,
{
"testId": TEST_ID,
"displayName": "My New Load Test Run",
}
)
#waiting for test run status to be completed with timeout = 3600 seconds
result = testRunPoller.result(3600)
print(result)
except HttpResponseError as e:
print("Failed with error: {}".format(e.response.json()))
Дальнейшие действия
Дополнительные примеры можно найти здесь.
Участие
На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Для получения подробных сведений посетите веб-страницу https://cla.microsoft.com.
При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения: Вопросы и ответы по правилам поведения. С любыми другими вопросами или комментариями обращайтесь по адресу opencode@microsoft.com.
Устранение неполадок
Подробнее об этом ожидается в ближайшее время...
Azure SDK for Python