Dela via


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

I den här artikeln får du lära dig hur du läser data från en CSV-fil (kommaavgränsat värde) i testskriptet med Azure Load Testing. Använd data från en extern CSV-fil för att göra ditt JMeter- eller Locust-testskript 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. I Locust kan du öppna CSV-filen i testskriptet, läsa nödvändiga data och skicka den till begäranden.

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 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 en Azure-prenumeration, skapa ett gratis 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) eller ett Locust-skript.
  • (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 testskriptet för att läsa CSV-data

I det här avsnittet konfigurerar du testskriptet 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.

För JMeter-baserade tester ändrar du 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.

    Skärmbild som visar JMeter-användargränssnittet för att konfigurera ett C S V-datauppsättningskonfigurationselement.

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

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

För Locust-baserade tester uppdaterar du Locust-skriptet genom att öppna det som valfri redigerare.

  1. I avsnittet där du öppnar filen uppdaterar du filnamnsinformationen och tar bort alla filsökvägsreferenser.

  2. Spara Locust-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 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 Portal 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.

    Skärmbild som visar listan över belastningstester och knappen Redigera.

  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 .

    Skärmbild av fliken Testplan i fönstret Redigera test.

    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.

Tips/Råd

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

    Skärmbild som visar kryssrutan för att aktivera delning av C S V-indatafiler när du konfigurerar ett test i Azure-portalen.

  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 gick det inte att hitta csv-indatafilen när du körde testskriptet.

Azure Load Testing lagrar alla indatafiler tillsammans med testskriptet. När du refererar till CSV-indatafilen i testskriptet 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>