Gegevens lezen uit een CSV-bestand in JMeter met Azure Load Testing
In dit artikel leert u hoe u gegevens kunt lezen uit een CSV-bestand (door komma's gescheiden waarden) in JMeter met Azure Load Testing. Gebruik gegevens uit een extern CSV-bestand om uw JMeter-testscript te configureren. U kunt bijvoorbeeld alle klanten in een CSV-bestand herhalen om de klantgegevens door te geven aan een API-aanvraag.
In JMeter kunt u het configuratieelement CSV-gegevensset in uw testscript gebruiken om gegevens uit een CSV-bestand te lezen.
Als u gegevens uit een extern bestand in Azure Load Testing wilt lezen, moet u het externe bestand uploaden naast het JMeter-testscript in uw belastingstest. Als u de test uitschaalt over meerdere exemplaren van parallelle testengines, kunt u ervoor kiezen om de invoergegevens gelijkmatig over deze exemplaren te splitsen.
Ga aan de slag door het voorbeeldproject te klonen of te downloaden vanuit GitHub.
Vereisten
- Een Azure-account met een actief abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
- Een Azure Load Testing-resource. Zie Een belastingstest maken en uitvoeren om een resource voor belastingstests te maken.
- Een Apache JMeter-testscript (JMX).
- (Optioneel) Apache JMeter-GUI om uw testscript te ontwerpen. Zie Aan de slag met Apache JMeter om Apache JMeter te installeren.
Uw JMeter-script bijwerken om CSV-gegevens te lezen
In deze sectie configureert u uw Apache JMeter-script om te verwijzen naar het externe CSV-bestand. U gebruikt een configuratie-element van een CSV-gegevensset om gegevens uit een CSV-bestand te lezen.
Belangrijk
Azure Load Testing uploadt het JMX-bestand en alle gerelateerde bestanden in één map. Wanneer u naar een extern bestand in uw JMeter-script verwijst, controleert u of er geen bestandspadverwijzingen in uw testscript zijn.
Wijzig het JMeter-script met behulp van de Apache JMeter-GUI:
Selecteer het configuratie-element csv-gegevensset in uw testscript.
Werk de bestandsnaamgegevens bij en verwijder alle bestandspadreferenties.
Voer desgewenst de namen van csv-velden in variabelenamen in wanneer u het CSV-bestand splitst tussen testengines.
Azure Load Testing behoudt de veldnamenrij niet bij het splitsen van uw CSV-bestand. Geef de namen van de variabelen op in het configuratie-element csv-gegevensset in plaats van een veldnamenrij te gebruiken.
Herhaal de vorige stappen voor elk configuratie-element van de CSV-gegevensset in het script.
Sla het JMeter-script op en upload het script naar uw belastingstest.
Het CSV-bestand uploaden naar uw belastingstest
Wanneer u verwijst naar externe bestanden uit uw testscript, moet u al deze bestanden uploaden naast het JMeter-testscript. Wanneer de belastingtest wordt gestart, kopieert Azure Load Testing alle bestanden naar één map op elk van de testengineexemplaren.
Belangrijk
Azure Load Testing behoudt de veldnamenrij niet bij het splitsen van uw CSV-bestand. Voordat u het CSV-bestand aan de belastingstest toevoegt, verwijdert u de veldnamenrij uit het bestand.
Ga als volgende te werk om een CSV-bestand toe te voegen aan uw belastingstest met behulp van Azure Portal:
Ga in Azure Portal naar uw Azure Load Testing-resource.
Selecteer in het linkerdeelvenster Tests om een lijst met tests weer te geven.
Selecteer uw test in de lijst door het selectievakje in te schakelen en selecteer vervolgens Bewerken.
Selecteer op het tabblad Plan testen het CSV-bestand van uw computer en selecteer vervolgens Uploaden om het bestand te uploaden naar Azure.
Als u een op URL gebaseerde belastingstest gebruikt, kunt u de namen van variabelen invoeren als een door komma's gescheiden lijst in de kolom Variabelen .
Als de grootte van het CSV-bestand groter is dan 50 MB, zipt u het bestand. De grootte van het zip-bestand moet kleiner zijn dan 50 MB. Azure Load Testing pakt het bestand automatisch uit tijdens de testuitvoering. Slechts vijf zip-artefacten zijn toegestaan met maximaal 1000 bestanden in elke zip en een niet-gecomprimeerde totale grootte van 1 GB.
Selecteer Toepassen om de test te wijzigen en de nieuwe configuratie te gebruiken wanneer u deze opnieuw uitvoert.
Tip
Als u een op URL gebaseerde belastingstest gebruikt, kunt u verwijzen naar de waarden uit het CSV-invoergegevensbestand in de HTTP-aanvragen met behulp van de $(variable)
syntaxis.
CSV-invoergegevens splitsen in testengines
Azure Load Testing kopieert en verwerkt standaard uw invoerbestanden die niet zijn gewijzigd in alle exemplaren van de testengine. Standaard verwerkt elke testengine het hele CSV-bestand. Als alternatief kunt u met Azure Load Testing de CSV-invoergegevens gelijkmatig verdelen over alle engine-exemplaren. Als u meerdere CSV-bestanden hebt, wordt elk bestand gelijkmatig gesplitst.
Als u bijvoorbeeld een groot CSV-invoerbestand van de klant hebt en de belastingtest wordt uitgevoerd op 10 parallelle testengines, verwerkt elk exemplaar 1/10e van de klanten.
Belangrijk
Azure Load Testing behoudt de veldnamenrij niet bij het splitsen van uw CSV-bestand.
- Configureer uw JMeter-script om variabelenamen te gebruiken bij het lezen van het CSV-bestand.
- Verwijder de veldnamenrij uit het CSV-bestand voordat u deze toevoegt aan de belastingstest.
Uw belastingstest configureren voor het splitsen van CSV-invoerbestanden:
Problemen oplossen
De teststatus is mislukt en het testlogboek heeft File {my-filename} must exist and be readable
Wanneer de belastingstest is voltooid met de status Mislukt, kunt u de testlogboeken downloaden.
Wanneer u een foutbericht File {my-filename} must exist and be readable
ontvangt in het testlogboek, is het CSV-invoerbestand niet gevonden bij het uitvoeren van het JMeter-script.
Met Azure Load Testing worden alle invoerbestanden naast het JMeter-script opgeslagen. Wanneer u verwijst naar het CSV-invoerbestand in het JMeter-script, moet u ervoor zorgen dat u het bestandspad niet opneemt, maar alleen de bestandsnaam gebruikt.
Het volgende codefragment toont een extract van een JMeter-bestand dat gebruikmaakt van een CSVDataSet
element om het invoerbestand te lezen. U ziet dat het filename
bestandspad niet is opgenomen.
<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>