Čtení dat ze souboru CSV v JMeteru pomocí azure Load Testing

V tomto článku se dozvíte, jak číst data ze souboru hodnot oddělených čárkami (CSV) v JMeteru pomocí služby Azure Load Testing. Data z externího souboru CSV použijte k tomu, aby byl testovací skript JMeter konfigurovatelný. Můžete například iterovat všechny zákazníky v souboru CSV a předat podrobnosti o zákaznících do požadavku rozhraní API.

V JMeteru můžete pomocí elementu CSV Data Set Config v testovacím skriptu číst data ze souboru CSV.

Pokud chcete číst data z externího souboru v zátěžovém testování Azure, musíte do zátěžového testu nahrát externí soubor společně s testovacím skriptem JMeter. Pokud test škálujete na více instancí paralelního testovacího modulu, můžete se rozhodnout rozdělit vstupní data rovnoměrně napříč těmito instancemi.

Začněte klonováním nebo stažením ukázkového projektu z GitHubu.

Požadavky

  • Účet Azure s aktivním předplatným. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
  • Prostředek zátěžového testování Azure. Pokud chcete vytvořit prostředek zátěžového testování, přečtěte si téma Vytvoření a spuštění zátěžového testu.
  • Testovací skript Apache JMeter (JMX).
  • (Volitelné) Grafické uživatelské rozhraní Apache JMeter pro vytvoření testovacího skriptu Pokud chcete nainstalovat Apache JMeter, přečtěte si téma Začínáme s Apache JMeterem.

Aktualizace skriptu JMeter pro čtení dat CSV

V této části nakonfigurujete skript Apache JMeter tak, aby odkazovat na externí soubor CSV. Ke čtení dat ze souboru CSV použijete konfigurační prvek datové sady CSV.

Důležité

Azure Load Testing nahraje soubor JMX a všechny související soubory do jedné složky. Při odkazování na externí soubor ve skriptu JMeter ověřte, že v testovacím skriptu nemáte žádné odkazy na cestu k souboru.

Upravte skript JMeter pomocí grafického uživatelského rozhraní Apache JMeter:

  1. V testovacím skriptu vyberte konfigurační prvek sady dat CSV.

  2. Aktualizujte informace o názvu souboru a odeberte všechny odkazy na cestu k souboru.

  3. Volitelně můžete zadat názvy polí CSV v názvech proměnných, když rozdělíte soubor CSV mezi testovací moduly.

    Azure Load Testing při rozdělení souboru CSV nezachová řádek záhlaví. Zadejte názvy proměnných v elementu CSV Data Set Config místo použití řádku záhlaví.

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

  4. Opakujte předchozí kroky pro každý prvek konfigurace sady dat CSV ve skriptu.

  5. Uložte skript JMeter a nahrajte skript do zátěžového testu.

Nahrání souboru CSV do zátěžového testu

Při odkazování na externí soubory z testovacího skriptu nezapomeňte všechny tyto soubory nahrát společně s testovacím skriptem JMeter. Když se zátěžový test spustí, Azure Load Testing zkopíruje všechny soubory do jedné složky v každé instanci testovacích modulů.

Důležité

Azure Load Testing při rozdělení souboru CSV nezachová řádek záhlaví. Před přidáním souboru CSV do zátěžového testu odeberte řádek záhlaví ze souboru.

Přidání souboru CSV do zátěžového testu pomocí webu Azure Portal:

  1. Na webu Azure Portal přejděte k prostředku zátěžového testování Azure.

  2. V levém podokně vyberte Testy a zobrazte seznam testů.

  3. Vyberte test ze seznamu tak, že zaškrtnete políčko a pak vyberete Upravit.

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

  4. Na kartě Testovací plán vyberte soubor CSV z počítače a pak vyberte Nahrát, aby se soubor nahrál do Azure.

    Pokud používáte zátěžový test založený na adrese URL, můžete do sloupce Proměnné zadat názvy proměnných jako seznam oddělený čárkami.

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

    Pokud je velikost souboru CSV větší než 50 MB, zazipujte soubor. Velikost souboru ZIP by měla být nižší než 50 MB. Azure Load Testing automaticky rozbalí soubor během testovacího běhu. V každém souboru ZIP je povoleno pouze pět artefaktů zip s maximálně 1 000 soubory a nekomprimovanou celkovou velikostí 1 GB.

  5. Vyberte Použít , chcete-li upravit test a použít novou konfiguraci při opětovném spuštění.

Tip

Pokud používáte zátěžový test založený na adrese URL, můžete pomocí syntaxe odkazovat na hodnoty ze vstupního datového souboru CSV v požadavcích $(variable) HTTP.

Rozdělení vstupních dat CSV mezi testovací moduly

Ve výchozím nastavení Azure Load Testing kopíruje a zpracovává vstupní soubory beze změny ve všech instancích testovacího modulu. Ve výchozím nastavení každý testovací modul zpracovává celý soubor CSV. Azure Load Testing také umožňuje rovnoměrně rozdělit vstupní data sdíleného svazku clusteru mezi všechny instance modulu. Pokud máte více souborů CSV, rozdělí se každý soubor rovnoměrně.

Pokud máte například velký vstupní soubor CSV zákazníka a zátěžový test běží na 10 paralelních testovacích modulech, každá instance zpracuje 1/10th zákazníků.

Důležité

Azure Load Testing při rozdělení souboru CSV nezachová řádek záhlaví.

  1. Nakonfigurujte skript JMeter tak, aby při čtení souboru CSV používal názvy proměnných.
  2. Před přidáním do zátěžového testu odeberte řádek záhlaví ze souboru CSV.

Konfigurace zátěžového testu pro rozdělení vstupních souborů CSV:

  1. Přejděte na kartu Testovací plán pro zátěžový test.

  2. Vyberte Rozdělit sdílený svazek clusteru rovnoměrně mezi testovací moduly.

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

  3. Výběrem možnosti Použít potvrďte změny konfigurace.

    Při příštím spuštění testu se Azure Load Testing rozdělí a zpracuje soubor CSV rovnoměrně napříč testovacími moduly.

Řešení problému

Stav testu se nezdařil a protokol testů má File {my-filename} must exist and be readable

Po dokončení zátěžového testu se stavem Selhání si můžete stáhnout testovací protokoly.

Když se v testovacím protokolu zobrazí chybová zpráva File {my-filename} must exist and be readable , při spuštění skriptu JMeter se vstupní soubor CSV nenašel.

Azure Load Testing ukládá všechny vstupní soubory společně se skriptem JMeter. Při odkazování na vstupní soubor CSV ve skriptu JMeter nezapomeňte zahrnout cestu k souboru, ale použijte pouze název souboru.

Následující fragment kódu ukazuje extrakci souboru JMeter, který používá CSVDataSet element ke čtení vstupního souboru. Všimněte si, že filename cesta k souboru neobsahuje.

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