Lire des données à partir d’un fichier CSV dans JMeter avec Azure Load Testing

Dans cet article, vous allez apprendre à lire des données à partir d’un fichier de valeurs séparées par des virgules (CSV) dans JMeter avec Azure Load Testing. Utilisez des données à partir d’un fichier CSV externe pour rendre votre script de test JMeter configurable. 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 des données à partir d’un fichier CSV.

Pour lire des données à partir d’un fichier externe dans Azure Load Testing, vous devez charger le fichier externe en même temps que le script de test JMeter dans votre test de charge. Si vous effectuez un scale-out de votre test sur plusieurs instances de moteur de test parallèle, vous pouvez choisir de fractionner uniformément les données d’entrée entre ces instances.

Commencez par cloner ou télécharger le projet d’exemples à partir de GitHub.

Prérequis

  • 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).
  • (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 JMeter pour lire les données CSV

Dans cette section, vous allez configurer votre script Apache JMeter pour référencer le fichier CSV externe. Vous utilisez un élément CSV Data Set Config pour lire des données à partir 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 d’accès de fichier dans votre script de test.

Modifiez le script JMeter à l’aide de l’interface utilisateur graphique Apache JMeter :

  1. Sélectionnez l’élément CSV Data Set Config dans votre script de test.

  2. Mettez à jour les informations de Nom de fichier et supprimez toutes les références de chemin de fichier.

  3. 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.

    Screenshot that shows the JMeter UI to configure a C S V Data Set Config element.

  4. Répétez les étapes précédentes pour chaque élément de configuration du jeu de données CSV.

  5. Enregistrez le script JMeter et chargez le script 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 JMeter. Au démarrage du test de charge, Azure Load Testing copie tous les fichiers dans un dossier unique sur chacune des instances de moteurs 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 :

  1. Dans le portail Azure, accédez à votre ressource de test de charge Azure.

  2. Dans le volet gauche, sélectionnez Tests pour afficher un liste de tests.

  3. Sélectionnez votre test dans la liste en cochant la case, puis sélectionnez Modifier.

    Screenshot that shows the list of load tests and the 'Edit' button.

  4. Sous l’onglet Plan de test, sélectionnez le fichier CSV à partir de votre ordinateur, puis sélectionnez Charger pour charger le fichier dans Azure.

    Si vous utilisez un test de charge basé sur l’URL, vous pouvez entrer les noms des variables sous forme de liste séparées par des virgules dans la colonne Variables .

    Screenshot of the Test plan tab on the Edit test pane.

    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. Azure Load Testing décompresse automatiquement le fichier pendant l’exécution du test. Seuls cinq artefacts zip sont autorisés avec un maximum de 1 000 fichiers dans chaque fichier zip et une taille totale non compressée de 1 Go.

  5. Sélectionnez Appliquer pour modifier le test et utiliser la nouvelle configuration lorsque vous le réexécutez.

Conseil

Si vous utilisez un test de charge basé sur l’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 $(variable) syntaxe.

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. Vous pouvez également fractionner uniformément les données d’entrée CSV sur toutes les instances du moteur. Si vous avez plusieurs fichiers CSV, chaque fichier est divisé uniformément.

Par exemple, si vous avez un fichier d’entrée CSV client volumineux et que le test de charge s’exécute sur 10 moteurs de test parallèles, chaque instance traite 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.

  1. Configurez votre script JMeter pour utiliser des noms de variables lors de la lecture du fichier CSV.
  2. 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 :

  1. Accédez à l’onglet Plan de test pour votre test de charge.

  2. Sélectionnez Fractionner csv uniformément entre les moteurs de test.

    Screenshot that shows the checkbox to enable splitting input C S V files when configuring a test in the Azure portal.

  3. 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.

Dépannage

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 File {my-filename} must exist and be readable d’erreur dans le journal des tests, le fichier CSV d’entrée est introuvable lors de l’exécution du script JMeter.

Azure Load Testing stocke tous les fichiers d’entrée en même temps que le script JMeter. Lorsque vous référencez le fichier CSV d’entrée dans le script JMeter, veillez à ne pas inclure le chemin du fichier, mais utilisez uniquement le nom de fichier.

L’extrait de code suivant montre un extrait de fichier JMeter qui utilise un CSVDataSet élément pour lire le fichier d’entrée. Notez que le filename chemin d’accès du fichier n’est pas inclus.

<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>