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:
|
|
testPlan |
string | Y | Referencia al archivo del plan de pruebas.
|
|
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 |
|
|
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 , HEAD y 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 , step y 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
Contenido relacionado
- Obtenga información sobre cómo crear pruebas de regresión automatizadas en los flujos de trabajo de CI/CD.
- Obtenga información sobre cómo parametrizar pruebas de carga con secretos y variables de entorno.
- Obtenga información sobre cómo realizar una prueba de carga de puntos de conexión protegidos.