Configurer un test de charge dans YAML

Découvrez comment configurer votre test de charge dans Azure Load Testing à l’aide de YAML. Vous utilisez le fichier de configuration de test YAML pour créer et exécuter des tests de charge à partir de votre flux de travail d’intégration continue et de livraison continue (CI/CD).

Syntaxe YAML du test de charge

Une configuration de test de charge utilise les clés suivantes :

Clé Type Obligatoire Valeur par défaut Description
version string O Version de la spécification du test de charge. La seule valeur possible est v0.1.
testId string O Identificateur unique du test de charge. La valeur doit être comprise entre 2 et 50 caractères ([a-z0-9_-]). Pour un test existant, vous pouvez obtenir le testId depuis la page des détails du test dans le Portail Microsoft Azure.
testName string N Déconseillé. Identificateur unique du test de charge. Ce paramètre est remplacé par testId. Vous pouvez toujours exécuter des tests existants avec le champ testName.
displayName string N Nom d’affichage du test. Cette valeur est affichée dans la liste des tests du Portail Microsoft Azure. S’il n’est pas fourni, testId est utilisé comme nom d’affichage.
description string N Brève description du test. Le valeur est limitée à 100 caractères.
testType string O Type de test. Valeurs possibles :
  • URL : Test de charge basé sur l’URL
  • JMX : Test de charge basé sur JMeter
  • Locust: test de charge basé sur locust
testPlan string O Référence au fichier du plan de test.
  • Si testType: JMX : chemin relatif du script de test JMeter.
  • Si testType: Locust: chemin relatif du script de test Locust.
  • Si testType: URL: chemin relatif au fichier JSON des demandes.
engineInstances entier O Nombre d’instances de moteurs de test parallèles pour l’exécution du plan de test. En savoir plus sur la configuration de la charge à grande échelle.
configurationFiles tableau de chaînes N Liste des fichiers externes requis par le script de test. Par exemple, des fichiers de données CSV, des images ou tout autre fichier de données.
Test de charge Azure télécharge tous les fichiers dans le même dossier que le script de test. Dans le script JMeter ou le script Locust, reportez-vous uniquement aux fichiers externes à l’aide du nom de fichier et supprimez les informations de chemin d’accès de fichier.
failureCriteria object N Liste des critères d’échec des tests de charge. Pour plus d’informations, consultez failureCriteria .
autoStop chaîne ou objet N Arrêter automatiquement le test de charge lorsque le pourcentage d’erreur dépasse une certaine valeur.
Valeurs possibles :
- disable : n’arrêtez pas automatiquement un test de charge.
- objet : consultez la configuration autostop pour plus d’informations.
properties object N
  • Si : références testType: JMXde fichier de propriété utilisateur JMeter.
  • Si testType: Locust: références de fichier de configuration locust.
Pour plus d’informations, consultez les propriétés .
zipArtifacts tableau de chaînes N Spécifie la liste des fichiers d’artefacts zip. Pour les fichiers autres que les scripts JMeter et les propriétés utilisateur des tests JMeter et des fichiers de script locust et de configuration pour les tests locust, si la taille de fichier dépasse 50 Mo, compressez-les dans un fichier ZIP. Vérifiez à ce que la taille du fichier ZIP soit inférieure à 50 Mo. Seuls 5 artefacts ZIP sont autorisés avec un maximum de 1 000 fichiers dans chaque fichier et une taille non compressée de 1 Go. S’applique uniquement pour testType: JMX et testType: Locust.
splitAllCSVs booléen N False Répartissez uniformément les fichiers CSV d’entrée sur toutes les instances du moteur de test. Pour plus d’informations, consultez Lire un fichier CSV dans les tests de charge.
secrets object N Liste des secrets référencés par le script Apache JMeter ou Locust. Pour plus d’informations, consultez les secrets .
env object N Liste des variables d’environnement référencées par le script Apache JMeter ou locust. Pour plus d’informations, consultez les variables d’environnement.
certificates object N Liste des certificats clients pour l’authentification avec des points de terminaison d’application dans le script JMeter ou Locust. Pour plus d’informations, consultez les certificats .
keyVaultReferenceIdentity string N ID de ressource de l’identité managée affectée par l’utilisateur pour accéder aux secrets à partir de votre coffre de clés Azure. Si vous utilisez une identité managée par le système, ces informations ne sont pas nécessaires. Veillez à accorder à cette identité affectée par l’utilisateur l’accès à votre coffre de clés Azure. En savoir plus sur les identités managées dans le test de charge Azure.
subnetId string N ID de ressource du sous-réseau du réseau virtuel pour tester les points de terminaison hébergés en privé. Ce sous-réseau héberge les machines virtuelles du moteur de test injecté. Pour plus d’informations, consultez comment charger des points de terminaison hébergés en privé.
publicIPDisabled booléen N Désactiver le déploiement d'une adresse IP publique, d'un équilibreur de charge et d'un groupe de sécurité réseau tout en testant un point de terminaison privé. Pour plus d’informations, consultez comment charger des points de terminaison hébergés en privé.
regionalLoadTestConfig object N Répartir la charge entre les régions pour simuler le trafic utilisateur à partir de plusieurs régions. Pour plus d’informations, consultez la configuration du test de charge régional pour plus d’informations.

Exemple de configuration de test de charge

L’extrait YAML suivant contient un exemple de configuration de test de charge.

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

Configuration failureCriteria

Les critères d’échec de test vous permettent de définir des conditions pour déterminer si une exécution de test de charge a réussi ou non. Si un ou plusieurs critères d’échec sont remplis, le test obtient un résultat de test ayant échoué. En savoir plus sur l’utilisation des critères d’échec de test de charge.

Vous pouvez définir des critères d’échec qui s’appliquent à l’ensemble du test de charge ou qui s’appliquent à une demande spécifique. Les critères d’échec ont la structure suivante :

  • Critères de test au niveau du test de charge : Aggregate_function (client_metric) condition threshold.
  • Critères de test appliqués à des requêtes JMeter spécifiques : Request: Aggregate_function (client_metric) condition threshold.

Métriques clientes prises en charge

Le service Test de charge Azure prend en charge les métriques suivantes :

Mesure Fonction d'agrégation Seuil Condition Description
response_time_ms avg (moyenne)
min (minimum)
max (maximum)
pxx (percentile), xx peut être 50, 75, 90, 95, 96, 97, 98, 99, 999 et 9999
Valeur entière représentant un nombre de millisecondes (ms). > (supérieur à)
< (inférieur à)
Temps de réponse ou temps écoulé, en millisecondes. Pour plus d’informations sur le temps écoulé, consultez la documentation Apache JMeter.
latency avg (moyenne)
min (minimum)
max (maximum)
pxx (centile), xx peut être 50, 90, 95, 99
Valeur entière représentant un nombre de millisecondes (ms). > (supérieur à)
< (inférieur à)
Latence, en millisecondes. Pour plus d’informations sur la latence, consultez la documentation Apache JMeter.
error percentage Valeurs numériques comprises dans une plage allant de 0 à 100 et représentant un pourcentage. > (supérieur(e) à) Pourcentage de demandes ayant échoué.
requests_per_sec avg (moyenne) Valeur numérique avec jusqu’à deux décimales. > (supérieur à)
< (inférieur à)
Nombre de demandes par seconde.
requests count Valeur de type entier. > (supérieur à)
< (inférieur à)
Nombre total de requêtes.

Exemple de configuration des critères d’échec

L’extrait de code suivant montre une configuration de test de charge, qui a trois critères d’échec de test de charge.

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

Configuration autoStop

La fonctionnalité de démarrage automatique du test de charge vous permet d’arrêter automatiquement un test de charge lorsque le pourcentage d’erreur dépasse un seuil spécifique pendant une fenêtre de temps donnée. En savoir plus sur la fonctionnalité de démarrage automatique du test de charge.

Clé Type Valeur par défaut Description
errorPercentage entier 90 Seuil du pourcentage d’erreur, pendant le timeWindow. Si le pourcentage d’erreur dépasse ce pourcentage pendant une fenêtre de temps donnée, l’exécution du test s’arrête automatiquement.
timeWindow entier 60 Fenêtre de temps en secondes pour calculer le errorPercentage.

Exemple de configuration autostop

L’extrait de code suivant montre une configuration de test de charge, qui a trois critères d’échec de test de charge.

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

Configuration properties

Vous pouvez spécifier un fichier de propriétés utilisateur JMeter pour votre test de charge. Le fichier de propriétés utilisateur est chargé en même temps que le plan de test et d’autres fichiers. En savoir plus sur l’utilisation des propriétés utilisateur JMeter dans Azure Load Testing.

Clé Type Valeur par défaut Description
userPropertyFile string Fichier à utiliser en tant que fichier de propriétés utilisateur Apache JMeter ou fichier de configuration Locust. Pour Locust, les fichiers avec extensions .conf, .ini et .toml sont pris en charge en tant que fichier de configuration. Le fichier est chargé dans la ressource Test de charge Azure en même temps que le script de test et d’autres fichiers de configuration. Si le fichier se trouve dans un sous-dossier sur votre ordinateur local, utilisez un chemin d’accès relatif à l’emplacement du script de test.

Exemple de configuration de fichier de propriété utilisateur

L’extrait de code suivant montre une configuration de test de charge, qui spécifie un fichier de propriétés utilisateur.

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'

L’extrait de code suivant montre une configuration de test de charge, qui spécifie un fichier de configuration 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'

Configuration secrets

Vous pouvez stocker des valeurs secrètes dans Azure Key Vault et les référencer dans votre plan de test. En savoir plus sur l’utilisation des secrets avec Azure Load Testing.

Clé Type Valeur par défaut Description
name string Nom du secret. Ce nom doit correspondre au nom du secret que vous utilisez dans les demandes de plan de test.
value string URI (identificateur secret) correspondant au secret Azure Key Vault.

Exemple de configuration des secrets

L’extrait de code suivant montre une configuration de test de charge, qui fait référence à un secret my-secret dans 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

Configuration env

Vous pouvez spécifier des variables d’environnement et les référencer dans votre plan de test. En savoir plus sur l’utilisation de variables d’environnement avec Azure Load Testing.

Clé Type Valeur par défaut Description
name string Nom de la variable d’environnement. Ce nom doit correspondre au nom de variable que vous utilisez dans les demandes de plan de test.
value string Valeur de la variable d’environnement.

Exemple de configuration de variable d’environnement

L’extrait de code suivant montre une configuration de test de charge, qui spécifie une variable my-variable d’environnement et une valeur 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

Configuration certificates

Vous pouvez passer des certificats clients à votre test de charge. Le certificat est stocké dans Azure Key Vault. En savoir plus sur l’utilisation de certificats clients avec Azure Load Testing.

Clé Type Valeur par défaut Description
name string Nom du certificat.
value string URI (identificateur secret) du certificat dans Azure Key Vault.

Exemple de configuration de certificat

L’extrait de code suivant montre une configuration de test de charge, qui fait référence à un certificat client dans 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

Demande un fichier JSON

Si vous utilisez un test basé sur une URL, vous pouvez spécifier les requêtes HTTP dans un fichier JSON au lieu d’utiliser un script de test JMeter. Veillez à définir la testType valeur URL dans le fichier YAML de configuration de test et référencez le fichier JSON des demandes.

Des requêtes HTTP

Le fichier JSON des requêtes utilise les propriétés suivantes pour définir les requêtes dans la requests propriété :

Propriété Type Description
requestName string Nom de la demande unique. Vous pouvez référencer le nom de la demande lorsque vous configurez des critères d’échec de test.
responseVariables tableau Liste des variables de réponse. Utilisez des variables de réponse pour extraire une valeur de la requête et la référencer dans une requête ultérieure. En savoir plus sur les variables de réponse.
responseVariables.extractorType string Mécanisme permettant d’extraire une valeur de la sortie de la réponse. Les valeurs prises en charge sont XPathExtractor, JSONExtractor et RegularExpression.
responseVariables.expression string Expression pour récupérer la sortie de la réponse. L’expression dépend de la valeur de type extracteur.
responseVariables.variableName string Nom de variable de réponse unique. Vous pouvez référencer cette variable dans une requête suivante à l’aide de la {$variable-name} syntaxe.
queryParameters tableau Liste des paramètres de chaîne de requête à passer au point de terminaison.
queryParameters.key string Nom du paramètre de chaîne de requête.
queryParameters.value string Valeur du paramètre de chaîne de requête.
requestType string Type de requête. Les valeurs prises en charge sont : URL ou CURL.
endpoint string URL du point de terminaison d’application à tester.
headers tableau Liste des en-têtes HTTP à transmettre au point de terminaison de l’application. Spécifiez une paire clé-valeur pour chaque en-tête.
body string Texte du corps de la requête HTTP. Vous pouvez utiliser la requestBodyFormat méthode pour spécifier le format du contenu du corps.
requestBodyFormat string Format du contenu du corps. Les valeurs prises en charge sont Text, JSON, JavaScript, HTML et XML.
method string Méthode HTTP pour appeler le point de terminaison. Les valeurs prises en charge sont les suivantes : GET, , POSTPUT, DELETEPATCH, , HEADet OPTIONS.
curlCommand string Commande cURL à exécuter. Exige que l’objet requestType est CURL.

L’extrait de code JSON suivant contient un exemple de fichier JSON :

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

Configuration de chargement

Le fichier JSON de requêtes utilise les propriétés suivantes pour définir la configuration de charge dans la testSetup propriété :

Propriété Type Type de charge Description
loadType string Type de modèle de charge. Les valeurs prises en charge sont les suivantes : linear, stepet spike.
scenario string Référence au groupe de requêtes, spécifiée dans la scenarios propriété.
virtualUsersPerEngine entier Tous Nombre d’utilisateurs virtuels par instance de moteur de test.
durationInSeconds entier Tous Durée totale du test de charge en secondes.
rampUpTimeInSeconds entier Linéaire, étape Durée en secondes pour augmenter le nombre cible d’utilisateurs virtuels.
rampUpSteps entier Étape Nombre d’étapes à suivre pour atteindre le nombre cible d’utilisateurs virtuels.
spikeMultiplier entier Pic Facteur de multiplication du nombre d’utilisateurs cibles avec pendant la durée de pic.
spikeHoldTimeInSeconds entier Pic Durée totale en secondes pour maintenir la charge de pic.

Configuration du test de charge régional

Vous pouvez répartir la charge entre les régions pour mieux simuler des modèles de trafic réels. Vous pouvez spécifier les régions à partir de lesquelles vous souhaitez générer la charge et la quantité de charge que vous souhaitez simuler à partir de chaque région. Pour ce faire, spécifiez le nom de la région et le nombre d’instances de moteur souhaitées dans cette région. En savoir plus sur la génération de la charge à partir de plusieurs régions.

Clé Type Valeur par défaut Description
region string Nom de la région Azure.
engineInstances entier Nombre d’instances de moteur pour cette région Azure.

Exemple de configuration de test de charge régional

L’extrait de code suivant montre une configuration de test de charge, qui spécifie deux régions eastus Azure et eastasia le nombre d’instances de moteur pour chaque région.

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