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 de 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 spécification de 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 à testId partir de la page des détails du test dans la Portail 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 testName champ. |
|
displayName |
string | N | Nom complet du test. Cette valeur est affichée dans la liste des tests de la Portail Azure. S’il n’est pas fourni, testId il est utilisé comme nom d’affichage. |
|
description |
string | N | Brève description du test. La valeur a une longueur maximale de 100 caractères. | |
testType |
string | O | Type de test. Valeurs possibles :
|
|
testPlan |
string | O | Référence au fichier de plan de test.
|
|
engineInstances |
entier | Y | Nombre d’instances de moteur 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, les fichiers de données CSV, les images ou tout autre fichier de données. Azure Load Testing charge tous les fichiers dans le même dossier que le script de test. Dans le script JMeter, reportez-vous uniquement aux fichiers externes à l’aide du nom de fichier et supprimez les informations de chemin d’accès du fichier. |
|
failureCriteria |
object | N | Liste des critères d’échec du test de charge. Pour plus d’informations, consultez failureCriteria . | |
autoStop |
chaîne ou objet | N | Arrêtez automatiquement le test de charge lorsque le pourcentage d’erreur dépasse une 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 | Références de fichier de propriété utilisateur JMeter. Pour plus d’informations, consultez les propriétés . | |
zipArtifacts |
tableau de chaînes | N | Spécifie la liste des fichiers d’artefact zip. Pour les fichiers autres que les scripts JMeter et les propriétés utilisateur, si la taille du fichier dépasse 50 Mo, compressez-les dans un fichier ZIP. Vérifiez que le fichier ZIP reste inférieur à 50 Mo de taille. 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 lorsque testType: JMX . |
|
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. Pour plus d’informations, consultez les secrets . | |
env |
object | N | Liste de variables d’environnement auxquelles le script Apache JMeter fait référence. Pour plus d’informations, consultez les variables d’environnement. | |
certificates |
object | N | Liste des certificats clients utilisés pour l’authentification auprès des points de terminaison d’application dans le script JMeter. 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 de 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ées. Pour plus d’informations, consultez comment charger des points de terminaison hébergés en privé. | |
publicIPDisabled |
booléen | N | Désactivez le déploiement d’une adresse IP publique, d’un équilibreur de charge et d’un groupe de sécurité réseau lors du test d’un point de terminaison privé. Pour plus d’informations, consultez comment charger des points de terminaison hébergés en privé. |
Exemple de configuration de test de charge
L’extrait de code 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 (centile), xx peut être 50, 90, 95, 99 |
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. Le fichier est chargé dans la ressource Azure Load Testing en même temps que le script de test JMeter 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'
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 , , POST PUT , DELETE PATCH , , HEAD et 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 , step et 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 | Step | 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. |
Contenu connexe
- Découvrez comment créer des tests de régression automatisés dans votre flux de travail CI/CD.
- Découvrez comment paramétriser des tests de charge configurables avec des secrets et des variables d’environnement.
- Découvrez comment effectuer un test de charge des points de terminaison sécurisés.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour