Créer un fichier de configuration YAML de test de charge

Effectué

Découvrez comment configurer votre test de charge dans Azure Load Testing à l’aide de YAML. Vous utilisez le fichier YAML de configuration de test pour créer et exécuter des tests de charge à partir de votre workflow GitHub Actions.

Syntaxe YAML pour le test de charge

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

Clé Type Obligatoire Valeur par défaut Descriptif
version chaîne O Version de la spécification du test de charge. La seule valeur prise en charge est v0.1.
testId chaîne 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 à partir de la page de détails du test dans le portail Azure.
testName chaîne N Option déconseillée. 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 chaîne N Nom d’affichage du test. Cette valeur est affichée dans la liste des tests dans le portail Azure. S’il n’est pas fourni, testId est utilisé comme nom d'affichage.
description chaîne N Brève description du test. La valeur a une longueur maximale de 100 caractères.
testType chaîne O Type de test. Valeurs possibles :
  • URL: test de charge basé sur l’URL
  • JMX: test de charge basé sur JMeter
testPlan chaîne O Référence au fichier de plan de test.
  • Si testType: JMX : chemin relatif du script de test JMeter.
  • Si testType: URL : chemin relatif au fichier JSON des demandes.
engineInstances entier O Nombre d’instances de moteur de test parallèles pour l’exécution du plan de test.
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, ne faites référence aux fichiers externes qu'en utilisant le nom du fichier et supprimez toutes les informations relatives au chemin d'accès.
failureCriteria objet N Liste des critères d’échec du test de charge.
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.
properties objet N Références du fichier de propriétés de l’utilisateur JMeter.
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, 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 quand testType: JMX.
splitAllCSVs booléen N Faux Fractionnez uniformément les fichiers CSV d’entrée sur toutes les instances du moteur de test.
secrets objet N Liste des secrets référencés par le script Apache JMeter.
env objet N Liste des variables d’environnement référencées par le script Apache JMeter.
certificates objet N Liste des certificats clients pour l’authentification avec les points de terminaison d’application dans le script JMeter.
keyVaultReferenceIdentity chaîne 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.
subnetId chaîne 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.
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é.

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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity

Configurer les paramètres de chargement

Pour simuler le trafic utilisateur pour votre application, vous pouvez configurer le modèle de charge et le nombre d’utilisateurs virtuels pour utilisant lequel vous souhaitez simuler la charge. Azure Load Testing peut effectuer un scale-out du nombre d’utilisateurs virtuels qui simulent le trafic vers votre application en exécutant le test de charge sur de nombreuses instances de moteur de test parallèles. Le modèle de charge détermine la façon dont la charge est distribuée pendant la durée du test de charge. Des exemples de modèles de charge sont linéaires, pas à pas ou charge de pic.

Selon le type de test de charge, basé sur l’URL ou JMeter, vous avez différentes options pour configurer la charge cible et le modèle de charge. Le tableau suivant répertorie les différences entre les deux types de test.

Type de test Nombre d’utilisateurs virtuels Modèle de charge
Basé sur l’URL (de base) Spécifiez le nombre cible d’utilisateurs virtuels dans la configuration du test de charge. Modèle de charge linéaire, basé sur le temps d’accélération et le nombre d’utilisateurs virtuels.
Basé sur l’URL (avancé) Spécifiez le nombre de moteurs de test et le nombre d’utilisateurs virtuels par instance dans la configuration du test de charge. Configurez le modèle de charge (linéaire, étape, pic).
Basé sur JMeter Spécifiez le nombre de moteurs de test dans la configuration du test de charge. Spécifiez le nombre d’utilisateurs virtuels dans le script de test. Configurez le modèle de charge dans le script de test.

Configurer les paramètres de charge pour les tests basés sur JMeter

Pour les flux de travail GitHub Action, vous configurez le nombre d’instances de moteur dans le fichier de configuration de test YAML. Vous stockez le fichier de configuration de test de charge en même temps que le fichier de script de test JMeter dans le référentiel de contrôle de code source.

L’exemple suivant configure un test de charge qui s’exécute sur 10 instances de moteur de test parallèles.

Configurez le nombre d’instances de moteur de test dans le paramètre engineInstances.

    version: v0.1
    testId: SampleTestCICD
    displayName: Sample test from CI/CD
    testPlan: SampleTest.jmx
    description: Load test website home page
    engineInstances: 10