Compartir a través de


Biblioteca cliente de Azure Load Testing para Python, versión 1.0.0

Azure Load Testing proporciona biblioteca cliente en Python al usuario mediante la cual puede interactuar de forma nativa con el servicio Azure Load Testing. Azure Load Testing es un servicio de prueba de carga totalmente administrado que permite generar una carga a gran escala. El servicio simula el tráfico de las aplicaciones, independientemente del lugar en que se hospeden. Los desarrolladores, evaluadores e ingenieros de control de calidad (QA) pueden usarlo para optimizar el rendimiento, la escalabilidad o la capacidad de las aplicaciones.

Documentación

Hay varias documentación disponibles para ayudarle a empezar.

Introducción

Instalación del paquete

python -m pip install azure-developer-loadtesting

Requisitos previos

  • Se requiere Python 3.7 o posterior para usar este paquete.
  • Necesita una suscripción de Azure para usar este paquete.
  • Una instancia existente de Azure Developer LoadTesting.

Creación con una credencial de Azure Active Directory

Para usar una credencial de token de Azure Active Directory (AAD), proporcione una instancia del tipo de credencial deseado obtenido de la biblioteca azure-identity .

Para autenticarse con AAD, primero debe instalar pip . azure-identity

Después de la instalación, puede elegir el tipo de credencial de azure.identity que se va a usar.

Por ejemplo, inicie sesión mediante el comando de la CLI az login de Azure y DefaultAzureCredential se autenticará como ese usuario.

Use la credencial de token devuelta para autenticar al cliente.

Creación del cliente

El SDK de LoadTesting para desarrolladores de Azure tiene dos sub-clientes del cliente principal (LoadTestingClient) para interactuar con el servicio, "administración" y "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://learn.microsoft.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> hace referencia al punto de conexión o dirección URL del plano de datos del recurso.

Conceptos clave

La biblioteca cliente de Azure Load Test para Python permite interactuar con cada uno de estos componentes mediante el uso de clientes. Hay dos clientes de nivel superior que son los puntos de entrada principales de la biblioteca.

  • LoadTestAdministrationClient (azure.developer.loadtesting.LoadTestAdministrationClient)
  • LoadTestRunClient (azure.developer.loadtesting.LoadTestRunClient)

Estos dos clientes también tienen homólogos asincrónicos, que son

  • LoadTestAdministrationClient (azure.developer.loadtesting.aio.LoadTestAdministrationClient)
  • LoadTestRunClient (azure.developer.loadtesting.aio.LoadTestRunClient)

Cliente de administración de pruebas de carga

LoadTestAdministrationClient se usa para administrar y configurar las pruebas de carga, los componentes y las métricas de la aplicación.

Prueba

Una prueba especifica el script de prueba y las opciones de configuración para ejecutar una prueba de carga. Puede crear una o varias pruebas en un recurso de Azure Load Testing.

Componente de aplicación

Al ejecutar una prueba de carga para una aplicación hospedada en Azure, puede supervisar las métricas de recursos de los distintos componentes de la aplicación de Azure (métricas del lado servidor). Mientras se ejecuta la prueba de carga y después de la finalización de la prueba, puede supervisar y analizar las métricas de recursos en el panel Azure Load Testing.

Métricas

Durante una prueba de carga, Azure Load Testing recopila métricas sobre la ejecución de pruebas. Existen dos tipos de métricas:

  1. Las métricas del cliente proporcionan los detalles notificados por el motor de prueba. Estas métricas incluyen el número de usuarios virtuales, el tiempo de respuesta de la solicitud, el número de solicitudes con error o el número de solicitudes por segundo.

  2. Las métricas del lado servidor están disponibles para las aplicaciones hospedadas en Azure y proporcionan información sobre los componentes de las aplicaciones de Azure. Las métricas pueden ser para el número de lecturas de base de datos, el tipo de respuestas HTTP o el consumo de recursos de contenedor.

Probar el cliente de ejecución

LoadTestRunClient se usa para iniciar y detener las ejecuciones de pruebas correspondientes a una prueba de carga. Una serie de pruebas representa la ejecución de una prueba de carga. Recopila los registros asociados a la ejecución del script de Apache JMeter, la configuración de YAML de prueba de carga, la lista de componentes de la aplicación que se va a supervisar y los resultados de la prueba.

punto de conexión de Data-Plane

El plano de datos de los recursos de Azure Load Testing se puede direccionable mediante el siguiente formato de dirección URL:

00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com

El primer GUID 00000000-0000-0000-0000-000000000000 es el identificador único que se usa para acceder al recurso de Azure Load Testing. Esto va seguido de aaa la región de Azure del recurso.

El punto de conexión del plano de datos se obtiene de las API del plano de control.

Ejemplo:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com

En el ejemplo anterior, eus representa la región East USde Azure .

Ejemplos

Creación de una prueba de carga

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()))

Carga del archivo .jmx en una prueba

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()))

Ejecución de una prueba

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()))

Pasos siguientes

Puede encontrar más ejemplos aquí.

Contribuciones

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más detalles, visite https://cla.microsoft.com.

Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo será necesario que lo haga una vez en todos los repositorios con nuestro CLA.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para obtener más información, vea las preguntas más frecuentes sobre el código de conducta o póngase en contacto con opencode@microsoft.com si tiene preguntas o comentarios.

Solución de problemas

Más información sobre él está disponible próximamente...