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:
Välj csv-datauppsättningskonfigurationselementet i testskriptet.
Uppdatera filnamnsinformationen och ta bort alla filsökvägsreferenser.
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.
Upprepa föregående steg för varje CSV-datauppsättningskonfigurationselement i skriptet.
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:
I Azure-portalen går du till din Azure-belastningstestningsresurs.
I den vänstra rutan väljer du Tester för att visa en lista över tester.
Markera testet i listan genom att markera kryssrutan och välj sedan Redigera.
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 .
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.
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.
- Konfigurera JMeter-skriptet så att det använder variabelnamn när du läser CSV-filen.
- 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:
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>