Freigeben über


Lesen von Daten aus einer CSV-Datei in JMeter mit Azure Load Testing

In diesem Artikel erfahren Sie, wie Sie Daten aus einer CSV-Datei (Kommagetrennten Wert) im Testskript mit Azure Load Testing lesen. Verwenden Sie Daten aus einer externen CSV-Datei, um Ihr JMeter- oder Locust-Testskript konfigurierbar zu machen. Sie können beispielsweise alle Kunden in einer CSV-Datei durchlaufen, um die Kundendetails an API-Anforderung zu übergeben.

In JMeter können Sie das CSV Data Set Config-Element in Ihrem Testskript verwenden, um Daten aus einer CSV-Datei zu lesen. In Locust können Sie die CSV-Datei in Ihrem Testskript öffnen, die erforderlichen Daten lesen und an die Anforderungen übergeben.

Um Daten aus einer externen Datei in Azure Load Testing zu lesen, müssen Sie die externe Datei zusammen mit dem Testskript in Ihrem Auslastungstest hochladen. Wenn Sie den Test auf mehrere parallele Testmodulinstanzen skalieren, können Sie die Eingabedaten gleichmäßig auf diese Instanzen aufteilen.

Beginnen Sie, indem Sie das Beispielprojekt von GitHub klonen oder herunterladen.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie noch kein Azure-Abonnement haben, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.
  • Eine Azure Load Testing-Ressource. Informationen zum Erstellen einer Azure Load Testing-Ressource finden Sie unter Erstellen und Ausführen eines Auslastungstests.
  • Ein Apache JMeter-Testskript (JMX) oder ein Locust-Skript.
  • (Optional) Apache JMeter GUI zum Erstellen Ihres Testskripts. Informationen zum Installieren von Apache JMeter finden Sie unter Apache JMeter Erste Schritte.

Aktualisieren Des Testskripts zum Lesen von CSV-Daten

In diesem Abschnitt konfigurieren Sie Ihr Testskript so, dass auf die externe CSV-Datei verwiesen wird. Sie verwenden ein CSV Data Set Config-Element , um Daten aus einer CSV-Datei zu lesen.

Von Bedeutung

Azure Load Testing lädt die JMX-Datei und alle zugehörigen Dateien in einem einzigen Ordner hoch. Wenn Sie auf eine externe Datei in Ihrem JMeter-Skript verweisen, stellen Sie sicher, dass in Ihrem Testskript keine Dateipfadverweise vorhanden sind.

Ändern Sie für JMeter-basierte Tests das JMeter-Skript mithilfe der Apache JMeter-GUI:

  1. Wählen Sie das CSV Data Set Config-Element in Ihrem Testskript aus.

  2. Aktualisieren Sie die Dateinameninformationen , und entfernen Sie einen Beliebigen Dateipfadverweis.

  3. Geben Sie optional die CSV-Feldnamen in Variablennamen ein, wenn Sie die CSV-Datei in Testmodule aufteilen.

    Azure Load Testing behält die Kopfzeile beim Teilen Der CSV-Datei nicht bei. Geben Sie die Variablennamen im CSV Data Set Config-Element an, anstatt eine Kopfzeile zu verwenden.

    Screenshot der JMeter-Benutzeroberfläche zum Konfigurieren eines C S V Data Set Config-Elements.

  4. Wiederholen Sie die vorherigen Schritte für jedes CSV Data Set Config-Element im Skript.

  5. Speichern Sie das JMeter-Skript, und laden Sie das Skript in Ihren Ladetest hoch.

Aktualisieren Sie für Locust-basierte Tests das Locust-Skript, indem Sie es einen Editor Ihrer Wahl öffnen.

  1. Aktualisieren Sie im Abschnitt, in dem Sie die Datei öffnen, die Dateinameninformationen , und entfernen Sie einen Beliebigen Dateipfadverweis.

  2. Speichern Sie das Locust-Skript, und laden Sie das Skript in Ihren Ladetest hoch.

Hochladen der CSV-Datei in Den Ladetest

Wenn Sie auf externe Dateien aus Ihrem Testskript verweisen, müssen Sie alle diese Dateien zusammen mit dem Testskript hochladen. Wenn der Auslastungstest gestartet wird, kopiert Azure Load Testing alle Dateien in einen einzelnen Ordner auf jedem der Testmodulinstanzen.

Von Bedeutung

Azure Load Testing behält die Kopfzeile beim Teilen Der CSV-Datei nicht bei. Bevor Sie die CSV-Datei zum Ladetest hinzufügen, entfernen Sie die Kopfzeile aus der Datei.

So fügen Sie Ihrem Auslastungstest mithilfe des Azure-Portals eine CSV-Datei hinzu:

  1. Wechseln Sie im Azure-Portal zu Ihrer Azure Load Testing-Ressource.

  2. Im linken Bereich, wählen Sie Tests, um eine Liste der Tests aufzurufen.

  3. Wählen Sie Ihren Test aus der Liste aus, indem Sie das Kontrollkästchen aktivieren und dann "Bearbeiten" auswählen.

    Screenshot: Liste der Auslastungstest und die Schaltfläche „Bearbeiten“

  4. Wählen Sie auf der Registerkarte "Testplan " die CSV-Datei von Ihrem Computer aus, und wählen Sie dann "Hochladen " aus, um die Datei in Azure hochzuladen.

    Wenn Sie einen URL-basierten Auslastungstest verwenden, können Sie die Variablennamen als durch Trennzeichen getrennte Liste in die Spalte "Variablen " eingeben.

    Screenshot der Registerkarte

    Wenn die Größe der CSV-Datei größer als 50 MB ist, zippen Sie die Datei. Die Größe der ZIP-Datei sollte unter 50 MB liegen. Azure Load Testing entpackt die Datei während der Testausführung automatisch. Es sind nur fünf ZIP-Artefakte mit maximal 1000 Dateien in jeder ZIP-Datei und einer nicht komprimierten Gesamtgröße von 1 GB zulässig.

  5. Wählen Sie "Übernehmen" aus, um den Test zu ändern und die neue Konfiguration zu verwenden, wenn Sie ihn erneut ausführen.

Tipp

Wenn Sie einen URL-basierten Ladetest verwenden, können Sie mithilfe der Syntax auf die Werte aus der CSV-Eingabedatendatei in den HTTP-Anforderungen $(variable) verweisen.

Teilen von CSV-Eingabedaten über Testmodule hinweg

Standardmäßig kopiert und verarbeitet Azure Load Testing Ihre Eingabedateien unverändert in allen Testmodulinstanzen. Standardmäßig verarbeitet jedes Testmodul die gesamte CSV-Datei. Alternativ können Sie mit Azure Load Testing die CSV-Eingabedaten gleichmäßig auf alle Modulinstanzen aufteilen. Wenn Sie über mehrere CSV-Dateien verfügen, wird jede Datei gleichmäßig aufgeteilt.

Wenn Sie beispielsweise über eine große CSV-Eingabedatei mit Kunden verfügen und der Auslastungstest auf 10 parallelen Testmodulen ausgeführt wird, verarbeitet jede Instanz 1/10 der Kunden.

Von Bedeutung

Azure Load Testing behält die Kopfzeile beim Teilen Der CSV-Datei nicht bei.

  1. Konfigurieren Sie das Testskript so, dass variablen Namen beim Lesen der CSV-Datei verwendet werden.
  2. Entfernen Sie die Kopfzeile aus der CSV-Datei, bevor Sie sie zum Ladetest hinzufügen.

So konfigurieren Sie Ihren Auslastungstest zum Teilen von CSV-Eingabedateien:

  1. Wechseln Sie zur Registerkarte "Testplan " für den Ladetest.

  2. Wählen Sie "CSV gleichmäßig teilen" zwischen Testmodulen aus.

    Screenshot des Kontrollkästchens zum Aufteilen von C S V-Dateien beim Konfigurieren eines Tests im Azure-Portal.

  3. Wählen Sie "Übernehmen" aus, um die Konfigurationsänderungen zu bestätigen.

    Beim nächsten Ausführen des Tests teilt Azure Load Testing die CSV-Datei gleichmäßig über die Testmodule.

Problembehandlung

Der Teststatus ist fehlgeschlagen, und das Testprotokoll weist File {my-filename} must exist and be readable

Wenn der Ladetest mit dem Status "Fehlgeschlagen" abgeschlossen ist, können Sie die Testprotokolle herunterladen.

Wenn Sie eine Fehlermeldung File {my-filename} must exist and be readable im Testprotokoll erhalten, konnte die CSV-Eingabedatei beim Ausführen des Testskripts nicht gefunden werden.

Azure Load Testing speichert alle Eingabedateien zusammen mit dem Testskript. Wenn Sie auf die CSV-Eingabedatei im Testskript verweisen, müssen Sie nicht den Dateipfad einschließen, sondern nur den Dateinamen verwenden.

Der folgende Codeausschnitt zeigt einen Extrakt einer JMeter-Datei, die ein CSVDataSet Element zum Lesen der Eingabedatei verwendet. Beachten Sie, dass der filename Dateipfad nicht enthalten ist.

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