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) in JMeter mit Azure Load Testing lesen. Verwenden Sie Daten aus einer externen CSV-Datei, um das JMeter-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.

Um Daten aus einer externen Datei in Azure Load Testing zu lesen, müssen Sie die externe Datei zusammen mit dem JMeter-Testskript in Ihrem Ladetest 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 kein Azure-Abonnement besitzen, 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).
  • (Optional) Apache JMeter GUI zum Erstellen Ihres Testskripts. Informationen zum Installieren von Apache JMeter finden Sie unter Apache JMeter Erste Schritte.

Aktualisieren Ihres JMeter-Skripts zum Lesen von CSV-Daten

In diesem Abschnitt konfigurieren Sie Ihr Apache JMeter-Skript, um auf die externe CSV-Datei zu verweisen. Sie verwenden ein CSV Data Set Config-Element , um Daten aus einer CSV-Datei zu lesen.

Wichtig

Azure Load Testing lädt die JMX-Datei und alle zugehörigen Dateien in einen einzelnen 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 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 Dateinamen-Information und entfernen Sie jegliche Pfad-Referenz.

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

    Azure Load Testing behält die Kopfzeile beim Aufteilen der CSV-Datei nicht bei. Geben Sie die Variablennamen im CSV Data Set Config-Element anstelle einer Kopfzeile an.

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

  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.

Hochladen der CSV-Datei in Den Ladetest

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

Wichtig

Azure Load Testing behält die Kopfzeile beim Aufteilen der CSV-Datei nicht bei. Bevor Sie die CSV-Datei dem Auslastungstest hinzufügen, entfernen Sie die Kopfzeile aus der Datei.

So fügen Sie dem Auslastungstest mithilfe des Azure-Portal 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 klicken Sie dann auf Bearbeiten.

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

  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 of the Test plan tab on the Edit test pane.

    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 Anwenden, um den Test zu modifizieren und die neue Konfiguration bei der Wiederholung anzuwenden.

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.

Aufteilen von CSV-Eingabedaten auf Testmodule

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

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

Wichtig

Azure Load Testing behält die Kopfzeile beim Aufteilen der CSV-Datei nicht bei.

  1. Konfigurieren Sie Ihr JMeter-Skript so, dass es Variablennamen beim Lesen der CSV-Datei verwendet.
  2. Entfernen Sie die Kopfzeile aus der CSV-Datei, bevor Sie sie dem Auslastungstest hinzufügen.

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

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

  2. Wählen Sie CSV gleichmäßig auf Testmodule aufteilen aus.

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

  3. Wählen Sie Anwenden aus, um die Konfigurationsänderungen zu bestätigen.

    Wenn Sie den Test das nächste Mal ausführen, teilt Azure Load Testing die CSV-Datei gleichmäßig auf die Testmodule auf und verarbeitet sie.

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 JMeter-Skripts nicht gefunden werden.

Azure Load Testing speichert alle Eingabedateien zusammen mit dem JMeter-Skript. Wenn Sie auf die CSV-Eingabedatei im JMeter-Skript 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>