Leggere i dati da un file CSV in JMeter con Test di carico di Azure

Questo articolo illustra come leggere i dati da un file con valori delimitati da virgole (CSV) in JMeter con Test di carico di Azure. Usare i dati di un file CSV esterno per rendere configurabile lo script di test di JMeter. Ad esempio, è possibile eseguire l'iterazione su tutti i clienti in un file CSV per passare i dettagli del cliente alla richiesta API.

In JMeter è possibile usare l'elemento Config del set di dati CSV nello script di test per leggere i dati da un file CSV.

Per leggere i dati da un file esterno in Test di carico di Azure, è necessario caricare il file esterno insieme allo script di test JMeter nel test di carico. Se si aumenta il numero di istanze del test in più istanze del motore di test parallele, è possibile scegliere di suddividere uniformemente i dati di input in queste istanze.

Iniziare clonando o scaricando il progetto di esempi da GitHub.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
  • Una risorsa di test di carico di Azure. Per creare una risorsa di test di carico, vedere Creare ed eseguire un test di carico.
  • Script di test di Apache JMeter (JMX).
  • (Facoltativo) Interfaccia utente grafica di Apache JMeter per creare lo script di test. Per installare Apache JMeter, vedere Introduzione ad Apache JMeter.

Aggiornare lo script JMeter per leggere i dati CSV

In questa sezione viene configurato lo script Apache JMeter per fare riferimento al file CSV esterno. Usare un elemento Config del set di dati CSV per leggere i dati da un file CSV.

Importante

Test di carico di Azure carica il file JMX e tutti i file correlati in una singola cartella. Quando si fa riferimento a un file esterno nello script JMeter, verificare di non avere riferimenti al percorso del file nello script di test.

Modificare lo script JMeter usando l'interfaccia utente grafica di Apache JMeter:

  1. Selezionare l'elemento CSV Data Set Config nello script di test.

  2. Aggiornare le informazioni sul nome file e rimuovere qualsiasi riferimento al percorso del file.

  3. Facoltativamente, immettere i nomi dei campi CSV in Nomi variabili quando si suddivide il file CSV tra i motori di test.

    Test di carico di Azure non mantiene la riga di intestazione durante la suddivisione del file CSV. Specificare i nomi delle variabili nell'elemento Config del set di dati CSV anziché usare una riga di intestazione.

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

  4. Ripetere i passaggi precedenti per ogni elemento Config del set di dati CSV nello script.

  5. Salvare lo script JMeter e caricare lo script nel test di carico.

Caricare il file CSV nel test di carico

Quando si fa riferimento a file esterni dallo script di test, assicurarsi di caricare tutti questi file insieme allo script di test JMeter. All'avvio del test di carico, Test di carico di Azure copia tutti i file in una singola cartella in ognuna delle istanze dei motori di test.

Importante

Test di carico di Azure non mantiene la riga di intestazione durante la suddivisione del file CSV. Prima di aggiungere il file CSV al test di carico, rimuovere la riga di intestazione dal file.

Per aggiungere un file CSV al test di carico usando il portale di Azure:

  1. Nella portale di Azure passare alla risorsa test di carico di Azure.

  2. Nel riquadro sinistro selezionare Test per visualizzare un elenco di test.

  3. Selezionare il test dall'elenco selezionando la casella di controllo e quindi selezionare Modifica.

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

  4. Nella scheda Piano di test selezionare il file CSV dal computer e quindi selezionare Carica per caricare il file in Azure.

    Se si usa un test di carico basato su URL, è possibile immettere i nomi delle variabili come elenco delimitato da virgole nella colonna Variabili .

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

    Se le dimensioni del file CSV sono maggiori di 50 MB, comprimere il file. Le dimensioni del file ZIP devono essere inferiori a 50 MB. Test di carico di Azure decomprime automaticamente il file durante l'esecuzione del test. Solo cinque artefatti ZIP sono consentiti con un massimo di 1000 file in ogni zip e una dimensione totale non compressa di 1 GB.

  5. Selezionare Applica per modificare il test e usare la nuova configurazione quando viene rieseguita.

Suggerimento

Se si usa un test di carico basato su URL, è possibile fare riferimento ai valori del file di dati di input CSV nelle richieste HTTP usando la $(variable) sintassi .

Dividere i dati di input CSV tra i motori di test

Per impostazione predefinita, Test di carico di Azure copia ed elabora i file di input non modificato in tutte le istanze del motore di test. Per impostazione predefinita, ogni motore di test elabora l'intero file CSV. In alternativa, Test di carico di Azure consente di suddividere i dati di input CSV in modo uniforme in tutte le istanze del motore. Se sono presenti più file CSV, ogni file viene suddiviso in modo uniforme.

Ad esempio, se si dispone di un file di input CSV del cliente di grandi dimensioni e il test di carico viene eseguito su 10 motori di test paralleli, ogni istanza elabora 1/10th dei clienti.

Importante

Test di carico di Azure non mantiene la riga di intestazione durante la suddivisione del file CSV.

  1. Configurare lo script JMeter per usare i nomi delle variabili durante la lettura del file CSV.
  2. Rimuovere la riga di intestazione dal file CSV prima di aggiungerla al test di carico.

Per configurare il test di carico per suddividere i file CSV di input:

  1. Passare alla scheda Piano di test per il test di carico.

  2. Selezionare Split CSV uniformemente tra i motori di test.

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

  3. Selezionare Applica per confermare le modifiche alla configurazione.

    Al successivo esecuzione del test, Test di carico di Azure suddivide ed elabora il file CSV in modo uniforme tra i motori di test.

Risoluzione dei problemi

Lo stato del test non è riuscito e il log dei test ha File {my-filename} must exist and be readable

Al termine del test di carico con lo stato Non riuscito, è possibile scaricare i log di test.

Quando viene visualizzato un messaggio File {my-filename} must exist and be readable di errore nel log di test, non è stato possibile trovare il file CSV di input durante l'esecuzione dello script JMeter.

Test di carico di Azure archivia tutti i file di input insieme allo script JMeter. Quando si fa riferimento al file CSV di input nello script JMeter, assicurarsi di non includere il percorso del file, ma usare solo il nome file.

Il frammento di codice seguente mostra un estratto di un file JMeter che usa un CSVDataSet elemento per leggere il file di input. Si noti che non filename include il percorso del file.

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