Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Dans cet article, vous allez apprendre à lire des données à partir d’un fichier de valeurs séparées par des virgules (CSV) dans un script de test avec le Test de charge Azure. Utilisez les données d’un fichier CSV externe pour configurer votre script de test JMeter ou Locust. Par exemple, vous pouvez itérer sur tous les clients d’un fichier CSV pour transmettre les détails du client à la demande d’API.
Dans JMeter, vous pouvez utiliser l’élément CSV Data Set Config dans votre script de test pour lire les données d’un fichier CSV. Dans Locust, vous pouvez ouvrir le fichier CSV dans votre script de test, lire les données requises et les transmettre aux demandes.
Pour lire les données d’un fichier externe dans le Test de charge Azure, vous devez charger le fichier externe en même temps que le script de test dans votre test de charge. Si vous effectuez un scale-out de votre test sur plusieurs instances de moteur de test parallèles, vous pouvez choisir de fractionner uniformément les données d’entrée entre ces instances.
Démarrage en clonant ou en téléchargeant le projet d’exemples à partir de GitHub.
Conditions préalables
- Un compte Azure avec un abonnement actif. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Une ressource de test de charge Azure. Pour créer une ressource de test de charge, consultez Créer et exécuter un test de charge.
- Un script de test Apache JMeter (JMX) ou un script Locust.
- (Facultatif) Interface utilisateur graphique (GUI) Apache JMeter pour créer votre script de test. Pour installer Apache JMeter, consultez Bien démarrer avec Apache JMeter.
Mettre à jour votre script de test pour lire les données CSV
Dans cette section, vous configurez votre script de test pour référencer le fichier CSV externe. Vous utilisez un élément CSV Data Set Config pour lire les données d’un fichier CSV.
Important
Le Test de charge Azure charge le fichier JMX et tous les fichiers associés dans un dossier unique. Lorsque vous référencez un fichier externe dans votre script JMeter, vérifiez que vous n’avez aucune référence de chemin de fichier dans votre script de test.
Pour les tests basés sur JMeter, modifiez le script JMeter à l’aide de l’interface graphique utilisateur Apache JMeter :
Sélectionnez l’élément CSV Data Set Config dans votre script de test.
Mettez à jour les informations de Nom de fichier et supprimez toutes les références de chemin de fichier.
Si vous le souhaitez, entrez les noms de champs CSV dans Noms de variables lorsque vous fractionnez le fichier CSV entre les moteurs de test.
Le service Test de charge Azure ne conserve pas la ligne d’en-tête lors du fractionnement de votre fichier CSV. Fournissez les noms des variables dans l’élément de Configuration du jeu de données CSV au lieu d’utiliser une ligne d’en-tête.
Répétez les étapes précédentes pour chaque élément de configuration du jeu de données CSV.
Enregistrez le script JMeter et chargez-le dans votre test de charge.
Pour les tests basés sur Locust, mettez à jour le script Locust en l’ouvrant dans l’éditeur de votre choix.
Dans la section où vous ouvrez le fichier, mettez à jour les informations de nom de fichier et supprimez toute référence de chemin d’accès au fichier.
Enregistrez le script Locust et chargez-le dans votre test de charge.
Charger le fichier CSV dans votre test de charge
Lorsque vous référencez des fichiers externes à partir de votre script de test, veillez à charger tous ces fichiers en même temps que le script de test. Lorsque le test de charge démarre, Le Test de charge Azure copie tous les fichiers dans un dossier unique sur chacune des instances du moteur de test.
Important
Le service Test de charge Azure ne conserve pas la ligne d’en-tête lors du fractionnement de votre fichier CSV. Avant d’ajouter le fichier CSV au test de charge, supprimez la ligne d’en-tête du fichier.
Pour ajouter un fichier CSV à votre test de charge à l’aide du portail Azure :
Dans le portail Azure, accédez à votre ressource de test de charge Azure.
Dans le volet gauche, sélectionnez Tests pour afficher un liste de tests.
Sélectionnez votre test dans la liste en cochant la case, puis sélectionnez Modifier.
Sous l’onglet Plan de test, sélectionnez le fichier CSV à partir de votre ordinateur, puis sélectionnez Charger pour charger le fichier sur Azure.
Si vous utilisez un test de charge basé sur une URL, vous pouvez entrer les noms des variables sous forme de liste séparée par des virgules dans la colonne Variables.
Si la taille du fichier CSV est supérieure à 50 Mo, compressez le fichier. La taille du fichier zip doit être inférieure à 50 Mo. Test de charge Azure décompresse automatiquement le fichier pendant la série de tests. Seuls cinq artefacts zip sont autorisés avec un maximum de 1 000 fichiers dans chaque fichier zip et une taille totale décompressée de 1 Go.
Sélectionnez Appliquer pour modifier le test et utiliser la nouvelle configuration lorsque vous le réexécutez.
Conseil / Astuce
Si vous utilisez un test de charge basé sur une URL, vous pouvez référencer les valeurs du fichier de données d’entrée CSV dans les requêtes HTTP à l’aide de la syntaxe $(variable).
Fractionnez les données d’entrée CSV entre les moteurs de test
Par défaut le test de charge copie et traite vos fichiers d’entrée non modifiés sur toutes les instances de moteur de test. Par défaut, chaque moteur de test traite l’intégralité du fichier CSV. Sinon, le Test de charge Azure vous permet de fractionner uniformément les données d’entrée CSV entre toutes les instances du moteur. Si vous avez plusieurs fichiers CSV, chaque fichier est divisé de manière égale.
Par exemple, si vous disposez d’un fichier CSV d’entrée contenant un grand nombre de clients et que le test de charge s’exécute sur 10 moteurs de test parallèles, chaque instance traite alors 1/10e des clients.
Important
Le service Test de charge Azure ne conserve pas la ligne d’en-tête lors du fractionnement de votre fichier CSV.
- Configurez votre script de test pour utiliser des noms de variables lors de la lecture du fichier CSV.
- Supprimez la ligne d’en-tête du fichier CSV avant de l’ajouter au test de charge.
Pour configurer votre test de charge pour fractionner les fichiers CSV d’entrée :
Accédez à l’onglet Plan de test pour votre test de charge.
Sélectionnez Fractionner csv uniformément entre les moteurs de test.
Sélectionnez Appliquer pour confirmer les modifications de configuration.
La prochaine fois que vous exécutez le test, le test de charge Azure fractionne et traite le fichier CSV uniformément sur les moteurs de test.
Résolution des problèmes
L’état du test a échoué et le journal des tests a File {my-filename} must exist and be readable
Une fois le test de charge terminé avec l’état Échec, vous pouvez télécharger les journaux de test.
Lorsque vous recevez un message d’erreur File {my-filename} must exist and be readable dans le journal des tests, le fichier CSV d’entrée est introuvable lors de l’exécution du script de test.
Le Test de charge Azure stocke tous les fichiers d’entrée en même temps que le script de test. Lorsque vous référencez le fichier CSV d’entrée dans le script de test, veillez à ne pas inclure le chemin d’accès au fichier, mais utilisez uniquement le nom de fichier.
L’extrait de code suivant montre un extrait d’un fichier JMeter qui utilise un élément CSVDataSet pour lire le fichier d’entrée. Notez que filename n’inclut pas le chemin d’accès au fichier.
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Websites CSV" enabled="true">
<stringProp name="filename">websites.csv</stringProp>
<stringProp name="fileEncoding">UTF-8</stringProp>
<stringProp name="variableNames">CustomerId,CustomerName,Url</stringProp>
<boolProp name="ignoreFirstLine">true</boolProp>
<stringProp name="delimiter">,</stringProp>
<boolProp name="quotedData">false</boolProp>
<boolProp name="recycle">false</boolProp>
<boolProp name="stopThread">true</boolProp>
<stringProp name="shareMode">shareMode.all</stringProp>
<stringProp name="TestPlan.comments">Read all records from the CSV file - stop thread at end of file</stringProp>
</CSVDataSet>