Configuración de una prueba de carga en YAML

Aprenda a configurar la prueba de carga en Azure Load Testing mediante YAML. Use el archivo YAML de configuración de prueba para crear y ejecutar pruebas de carga desde el flujo de trabajo de integración continua y entrega continua (CI/CD).

Sintaxis de YAML de prueba de carga

Una configuración de prueba de carga usa las siguientes claves:

Clave Tipo Obligatorio Default value Descripción
version string Y Versión de la especificación de prueba de carga. El único valor admitido es v0.1.
testId string Y Identificador único de la prueba de carga. El valor debe tener entre 2 y 50 caracteres ([a-z0-9_-]). Para una prueba existente, puede obtener el testId en la página de detalles de la prueba en Azure Portal.
testName string N Obsoleto. Identificador único de la prueba de carga. Esta configuración se reemplaza por testId. Todavía puede ejecutar pruebas existentes con el campo testName.
displayName string N Nombre para mostrar de la prueba. Este valor se muestra en la lista de pruebas de Azure Portal. Si no se proporciona, testId se usa como nombre para mostrar.
description string N Breve descripción de la prueba. El valor tiene una longitud máxima de 100 caracteres.
testType string Y Tipo de prueba. Valores posibles:
  • URL: prueba de carga basada en dirección URL
  • JMX: prueba de carga basada en JMeter
  • Locust: prueba de carga basada en locust
testPlan string Y Referencia al archivo del plan de pruebas.
  • Si testType: JMX: ruta de acceso relativa al script de prueba de JMeter.
  • If testType: Locust: ruta de acceso relativa al script de prueba de Locust.
  • If testType: URL: ruta de acceso relativa al archivo JSON de solicitudes.
engineInstances integer Y Número de instancias del motor de pruebas en paralelo para ejecutar el plan de pruebas. Obtenga más información sobre cómo configurar la carga a gran escala.
configurationFiles matriz de cadena N Lista de archivos externos, que requiere el script de prueba. Por ejemplo, archivos de datos CSV, imágenes o cualquier otro archivo de datos.
Azure Load Testing carga todos los archivos de la misma carpeta que el script de prueba. En el script JMeter o el script Locust, solo haga referencia a archivos externos con el nombre de archivo y quite cualquier información de ruta de acceso de archivo.
failureCriteria objeto N Lista de criterios de error de prueba de carga. Consulte failureCriteria para obtener más detalles.
autoStop cadena u objeto N Detenga automáticamente la prueba de carga cuando el porcentaje de error supere un valor.
Valores posibles:
- disable: no detenga automáticamente una prueba de carga.
- object: consulte La configuración de la configuración automática para obtener más detalles.
properties objeto N
  • If testType: JMX: referencias al archivo de propiedades de usuario de JMeter.
  • Si testType: Locust: referencias al archivo de configuración de locust.
Consulte las propiedades para obtener más detalles.
zipArtifacts matriz de cadena N Especifica la lista de archivos de artefacto zip. En el caso de archivos distintos de scripts y propiedades de usuario de JMeter para pruebas basadas en JMeter y archivos de configuración y script locust para pruebas basadas en locust, si el tamaño del archivo supera los 50 MB, comprima en un archivo ZIP. Asegúrese de que el archivo ZIP se mantiene por debajo del tamaño de 50 MB. Solo se permiten 5 artefactos ZIP con un máximo de 1000 archivos en cada uno y un tamaño sin comprimir de 1 GB. Solo se aplica a testType: JMX y testType: Locust.
splitAllCSVs boolean N False Divida los archivos CSV de entrada uniformemente en todas las instancias del motor de prueba. Para obtener más información, consulte Leer un archivo CSV en pruebas de carga.
secrets objeto N Lista de secretos a los que hace referencia el script Apache JMeter o Locust. Consulte secretos para obtener más detalles.
env objeto N Lista de variables de entorno a las que hace referencia el script de Apache JMeter o Locust. Consulte Variables de entorno para obtener más detalles.
certificates objeto N Lista de certificados de cliente para autenticarse con puntos de conexión de aplicación en el script JMeter o Locust. Consulte certificados para obtener más información.
keyVaultReferenceIdentity string N Id. de recurso de la identidad administrada asignada por el usuario para acceder a los secretos desde Azure Key Vault. Si usa una identidad administrada por el sistema, esta información no es necesaria. Asegúrese de conceder a esta identidad asignada por el usuario acceso al almacén de claves de Azure. Obtenga más información sobre las identidades administradas en Azure Load Testing.
subnetId string N Id. de recurso de la subred de red virtual para probar puntos de conexión hospedados de forma privada. Esta subred hospeda las máquinas virtuales del motor de pruebas insertadas. Para obtener más información, consulte cómo cargar pruebas de puntos de conexión hospedados de forma privada.
publicIPDisabled boolean N Deshabilite la implementación de una dirección IP pública, un equilibrador de carga y un grupo de seguridad de red al probar un punto de conexión privado. Para obtener más información, consulte cómo cargar pruebas de puntos de conexión hospedados de forma privada.
regionalLoadTestConfig objeto N Distribuya la carga entre regiones para simular el tráfico de usuario desde varias regiones. Para obtener más información, consulte Configuración de pruebas de carga regionales para obtener más detalles.

Ejemplo de configuración de pruebas de carga

El fragmento de código YAML siguiente contiene una configuración de prueba de carga de ejemplo.

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

Configuración de failureCriteria

Los criterios de error de prueba permiten definir condiciones para determinar si una ejecución de prueba de carga se realizó correctamente o no. Si se cumplen uno o varios criterios de error, la prueba obtiene un resultado de prueba con error. Obtenga más información sobre el uso de criterios de error de prueba de carga.

Puede definir criterios de error que se aplican a toda la prueba de carga o que se aplican a una solicitud específica. Los criterios de error tienen la siguiente estructura:

  • Criterios de prueba en el nivel de prueba de carga: Aggregate_function (client_metric) condition threshold.
  • Criterios de prueba aplicados a solicitudes de JMeter específicas: Request: Aggregate_function (client_metric) condition threshold.

Métricas de cliente admitidas

Azure Load Testing admite las siguientes métricas de cliente:

Métrica Aggregate, función Umbral Condición Descripción
response_time_ms avg (promedio)
min (mínima)
max (máxima)
pxx (percentil), xx puede ser 50, 75, 90, 95, 96, 97, 98, 99, 999 y 9999
Valor entero que representa el número de milisegundos (ms). > (mayor que)
< (menor que)
Tiempo de respuesta o tiempo transcurrido, en milisegundos. Obtenga más información sobre el tiempo transcurrido en la documentación de Apache JMeter.
latency avg (promedio)
min (mínima)
max (máxima)
pxx (percentil), xx puede ser 50, 90, 95, 99
Valor entero que representa el número de milisegundos (ms). > (mayor que)
< (menor que)
Latencia, en milisegundos. Obtenga más información sobre la latencia en la documentación de Apache JMeter.
error percentage Valores numéricos en el intervalo de 0 a 100, que representan un porcentaje. > (mayor que) Porcentaje de solicitudes con error.
requests_per_sec avg (promedio) Valor numérico con hasta dos posiciones decimales. > (mayor que)
< (menor que)
Número de solicitudes por segundo
requests count Valor entero. > (mayor que)
< (menor que)
Número total de solicitudes.

Ejemplo de configuración de criterios de error

El fragmento de código siguiente muestra una configuración de prueba de carga, que tiene tres criterios de error de prueba de carga.

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

Configuración de autoStop

La funcionalidad de autotop de prueba de carga permite detener automáticamente una prueba de carga cuando el porcentaje de error supera un umbral específico durante un período de tiempo determinado. Obtenga más información sobre la funcionalidad de autotop de pruebas de carga.

Clave Tipo Valor predeterminado Descripción
errorPercentage integer 90 Umbral para el porcentaje de error, durante .timeWindow Si el porcentaje de error supera este porcentaje durante cualquier período de tiempo determinado, la ejecución de pruebas se detiene automáticamente.
timeWindow integer 60 Período de tiempo en segundos para calcular .errorPercentage

Ejemplo de configuración de autotop

El fragmento de código siguiente muestra una configuración de prueba de carga, que tiene tres criterios de error de prueba de carga.

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

Configuración de properties

Puede especificar un archivo de propiedades de usuario de JMeter para la prueba de carga. El archivo de propiedades de usuario se carga junto con el plan de prueba y otros archivos. Obtenga más información sobre el uso de las propiedades de usuario de JMeter en Azure Load Testing.

Clave Tipo Valor predeterminado Descripción
userPropertyFile string Archivo que se va a usar como un archivo de propiedades de usuario de Apache JMeter o un archivo de configuración de Locust. Para Locust, los archivos con extensiones .conf, .ini y .toml se admiten como un archivo de configuración. El archivo se carga en el recurso azure Load Testing junto con el script de prueba y otros archivos de configuración. Si el archivo está en una subcarpeta de la máquina local, use una ruta de acceso relativa a la ubicación del script de prueba.

Ejemplo de configuración de archivo de propiedad de usuario

El siguiente fragmento de código muestra una configuración de prueba de carga, que especifica un archivo de propiedades de usuario.

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'

El siguiente fragmento de código muestra una configuración de prueba de carga, que especifica un archivo de configuración de 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'

Configuración de secrets

Puede almacenar valores secretos en Azure Key Vault y hacer referencia a ellos en el plan de prueba. Obtenga más información sobre el uso de secretos con Azure Load Testing.

Clave Tipo Valor predeterminado Descripción
name string Nombre del secreto. Este nombre debe coincidir con el nombre del secreto que se usa en las solicitudes del plan de prueba.
value string URI (identificador del secreto) del secreto de Azure Key Vault.

Ejemplo de configuración de secretos

El siguiente fragmento de código muestra una configuración de prueba de carga, que hace referencia a un secreto my-secret en 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

Configuración de env

Puede especificar variables de entorno y hacer referencia a ellas en el plan de prueba. Obtenga más información sobre el uso de variables de entorno con Azure Load Testing.

Clave Tipo Valor predeterminado Descripción
name string Nombre de la variable de entorno. Este nombre debe coincidir con el nombre de variable que se usa en las solicitudes del plan de prueba.
value string Valor de la variable de entorno.

Ejemplo de configuración de variables de entorno

El fragmento de código siguiente muestra una configuración de prueba de carga, que especifica una variable my-variable de entorno y un valor 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

Configuración de certificates

Puede pasar certificados de cliente a la prueba de carga. El certificado se almacena en Azure Key Vault. Obtenga más información sobre el uso de certificados de cliente con Azure Load Testing.

Clave Tipo Valor predeterminado Descripción
name string Nombre del certificado.
value string URI (identificador del secreto) del certificado en Azure Key Vault.

Ejemplo de configuración de certificado

El siguiente fragmento de código muestra una configuración de prueba de carga, que hace referencia a un certificado de cliente en 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

Solicitudes de archivo JSON

Si usa una prueba basada en direcciones URL, puede especificar las solicitudes HTTP en un archivo JSON en lugar de usar un script de prueba de JMeter. Asegúrese de establecer en testType URL en el archivo YAML de configuración de prueba y haga referencia al archivo JSON de solicitudes.

Solicitudes HTTP

El archivo JSON de solicitudes usa las siguientes propiedades para definir solicitudes en la requests propiedad :

Propiedad Tipo Description
requestName string Nombre de solicitud único. Puede hacer referencia al nombre de la solicitud al configurar criterios de error de prueba.
responseVariables array Lista de variables de respuesta. Use variables de respuesta para extraer un valor de la solicitud y hacer referencia a él en una solicitud posterior. Obtenga más información sobre las variables de respuesta.
responseVariables.extractorType string Mecanismo para extraer un valor de la salida de la respuesta. Los valores admitidos son XPathExtractor, JSONExtractor y RegularExpression.
responseVariables.expression string Expresión para recuperar la salida de la respuesta. La expresión depende del valor de tipo extractor.
responseVariables.variableName string Nombre único de la variable de respuesta. Puede hacer referencia a esta variable en una solicitud posterior mediante la {$variable-name} sintaxis .
queryParameters array Lista de parámetros de cadena de consulta que se van a pasar al punto de conexión.
queryParameters.key string Nombre del parámetro de cadena de consulta.
queryParameters.value string Valor del parámetro de cadena de consulta.
requestType string Tipo de solicitud. Los valores admitidos son: URL o CURL.
endpoint string Dirección URL del punto de conexión de la aplicación que se va a probar.
headers array Lista de encabezados HTTP que se van a pasar al punto de conexión de la aplicación. Especifique un par clave-valor para cada encabezado.
body string Texto del cuerpo de la solicitud HTTP. Puede usar requestBodyFormat para especificar el formato del contenido del cuerpo.
requestBodyFormat string Formato del contenido del cuerpo. Los valores admitidos son Text, JSON, JavaScript, HTML y XML.
method string Método HTTP para invocar el punto de conexión. Los valores admitidos son: GET, POST, PUT, DELETE, PATCH, HEADy OPTIONS.
curlCommand string Comando cURL que se va a ejecutar. Requiere que requestType sea CURL.

El siguiente fragmento de código JSON contiene un archivo JSON de solicitud de ejemplo:

{
    "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
        }
    ]
}

Configuración de carga

El archivo JSON de solicitudes usa las siguientes propiedades para definir la configuración de carga en la testSetup propiedad :

Propiedad Tipo Tipo de carga Descripción
loadType string Tipo de patrón de carga. Los valores admitidos son: linear, stepy spike.
scenario string Referencia al grupo de solicitudes, especificado en la scenarios propiedad .
virtualUsersPerEngine integer All Número de usuarios virtuales por instancia del motor de prueba.
durationInSeconds integer All Duración total de la prueba de carga en segundos.
rampUpTimeInSeconds integer Lineal, Paso Duración en segundos para aumentar el número de usuarios virtuales de destino.
rampUpSteps integer Paso Número de pasos para alcanzar el número de usuarios virtuales de destino.
spikeMultiplier integer Pico Factor para multiplicar el número de usuarios de destino con durante la duración del pico.
spikeHoldTimeInSeconds integer Pico Duración total en segundos para mantener la carga de pico.

Configuración de pruebas de carga regional

Puede distribuir la carga entre regiones para simular mejor los patrones de tráfico de la vida real. Puede especificar las regiones desde las que desea generar la carga y la cantidad de carga desde la que desea simular desde cada región. Para ello, especifique el nombre de la región y el número de instancias de motor que desee en esa región. Obtenga más información sobre cómo generar la carga desde varias regiones.

Clave Tipo Valor predeterminado Descripción
region string Nombre de la región de Azure.
engineInstances integer Número de instancias de motor para esa región de Azure.

Ejemplo de configuración de prueba de carga regional

El siguiente fragmento de código muestra una configuración de prueba de carga, que especifica dos regiones eastus de Azure y eastasia el número de instancias de motor para cada región.

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