Dela via


Läsa data från en CSV-fil i JMeter med Azure Load Testing

I den här artikeln lär du dig att läsa data från en CSV-fil (kommaavgränsad) i JMeter med Azure Load Testing. Använd data från en extern CSV-fil för att göra JMeter-testskriptet konfigurerbart. Du kan till exempel iterera över alla kunder i en CSV-fil för att skicka kundinformationen till API-begäran.

I JMeter kan du använda CSV Data Set Config-elementet i testskriptet för att läsa data från en CSV-fil.

Om du vill läsa data från en extern fil i Azure Load Testing måste du ladda upp den externa filen tillsammans med JMeter-testskriptet i belastningstestet. Om du skalar ut testet över flera parallella testmotorinstanser kan du välja att dela indata jämnt mellan dessa instanser.

Kom igång genom att klona eller ladda ned exempelprojektet från GitHub.

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration. Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
  • En Azure-belastningstestningsresurs. Information om hur du skapar en belastningstestresurs finns i Skapa och köra ett belastningstest.
  • Ett Apache JMeter-testskript (JMX).
  • (Valfritt) Apache JMeter GUI för att skapa testskriptet. Information om hur du installerar Apache JMeter finns i Komma igång med Apache JMeter.

Uppdatera JMeter-skriptet för att läsa CSV-data

I det här avsnittet konfigurerar du Apache JMeter-skriptet så att det refererar till den externa CSV-filen. Du använder ett CSV-datauppsättningskonfigurationselement för att läsa data från en CSV-fil.

Viktigt!

Azure Load Testing laddar upp JMX-filen och alla relaterade filer i en enda mapp. När du refererar till en extern fil i JMeter-skriptet kontrollerar du att du inte har några filsökvägsreferenser i testskriptet.

Ändra JMeter-skriptet med hjälp av Apache JMeter GUI:

  1. Välj csv-datauppsättningskonfigurationselementet i testskriptet.

  2. Uppdatera filnamnsinformationen och ta bort alla filsökvägsreferenser.

  3. Du kan också ange CSV-fältnamnen i Variabelnamn när du delar upp CSV-filen mellan testmotorerna.

    Azure Load Testing bevarar inte rubrikraden när du delar csv-filen. Ange variabelnamnen i CSV Data Set Config-elementet i stället för att använda en rubrikrad.

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

  4. Upprepa föregående steg för varje CSV-datauppsättningskonfigurationselement i skriptet.

  5. Spara JMeter-skriptet och ladda upp skriptet till belastningstestet.

Ladda upp CSV-filen till belastningstestet

När du refererar till externa filer från testskriptet måste du ladda upp alla dessa filer tillsammans med JMeter-testskriptet. När belastningstestet startar kopierar Azure Load Testing alla filer till en enda mapp på var och en av testmotorinstanserna.

Viktigt!

Azure Load Testing bevarar inte rubrikraden när du delar csv-filen. Innan du lägger till CSV-filen i belastningstestet tar du bort rubrikraden från filen.

Så här lägger du till en CSV-fil i belastningstestet med hjälp av Azure-portalen:

  1. I Azure-portalen går du till din Azure-belastningstestningsresurs.

  2. I den vänstra rutan väljer du Tester för att visa en lista över tester.

  3. Markera testet i listan genom att markera kryssrutan och välj sedan Redigera.

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

  4. På fliken Testplan väljer du CSV-filen från datorn och väljer sedan Ladda upp för att ladda upp filen till Azure.

    Om du använder ett URL-baserat belastningstest kan du ange variabelnamnen som en kommaavgränsad lista i kolumnen Variabler .

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

    Om storleken på CSV-filen är större än 50 MB zippar du filen. Zip-filens storlek bör vara lägre än 50 MB. Azure Load Testing packar automatiskt upp filen under testkörningen. Endast fem zip-artefakter tillåts med högst 1 000 filer i varje zip och en okomprimerad total storlek på 1 GB.

  5. Välj Använd för att ändra testet och använd den nya konfigurationen när du kör det igen.

Dricks

Om du använder ett URL-baserat belastningstest kan du referera till värdena från CSV-indatafilen i HTTP-begäranden med hjälp av syntaxen $(variable) .

Dela csv-indata mellan testmotorer

Som standard kopierar och bearbetar Azure Load Testing dina indatafiler oförändrade i alla testmotorinstanser. Som standard bearbetar varje testmotor hela CSV-filen. Alternativt kan du med Azure Load Testing dela upp CSV-indata jämnt över alla motorinstanser. Om du har flera CSV-filer delas varje fil jämnt.

Om du till exempel har en stor CSV-indatafil för kunden och belastningstestet körs på 10 parallella testmotorer, bearbetar varje instans 1/10 av kunderna.

Viktigt!

Azure Load Testing bevarar inte rubrikraden när du delar csv-filen.

  1. Konfigurera JMeter-skriptet så att det använder variabelnamn när du läser CSV-filen.
  2. Ta bort rubrikraden från CSV-filen innan du lägger till den i belastningstestet.

Så här konfigurerar du belastningstestet för att dela indata-CSV-filer:

  1. Gå till fliken Testplan för belastningstestet.

  2. Välj Dela CSV jämnt mellan testmotorer.

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

  3. Välj Använd för att bekräfta konfigurationsändringarna.

    Nästa gång du kör testet delar Azure Load Testing upp och bearbetar CSV-filen jämnt mellan testmotorerna.

Felsökning

Teststatusen misslyckades och testloggen har File {my-filename} must exist and be readable

När belastningstestet har slutförts med statusen Misslyckades kan du ladda ned testloggarna.

När du får ett felmeddelande File {my-filename} must exist and be readable i testloggen hittades inte csv-indatafilen när JMeter-skriptet kördes.

Azure Load Testing lagrar alla indatafiler tillsammans med JMeter-skriptet. När du refererar till CSV-indatafilen i JMeter-skriptet ska du se till att inte inkludera filsökvägen, utan endast använda filnamnet.

Följande kodfragment visar ett extrahering av en JMeter-fil som använder ett CSVDataSet element för att läsa indatafilen. Observera att filename inte innehåller filsökvägen.

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