Compartilhar via


Ler dados de um arquivo CSV no JMeter com o Teste de carga do Azure

Neste artigo, você vai aprender como ler os dados de um arquivo de valores separados por vírgula (CSV) em um script de teste com o Teste de carga do Azure. Usar dados de um arquivo CSV externo para tornar o script de teste do JMeter ou do Locust configurável. Por exemplo, você pode iterar sobre todos os clientes em um arquivo CSV para passar os detalhes do cliente em uma solicitação de API.

No JMeter, é possível usar o elemento Configuração do Conjunto de dados CSV no script de teste para ler dados de um arquivo CSV. No Locust, é possível abrir o arquivo CSV no script de teste, ler os dados necessários e passá-los para as solicitações.

Para ler os dados de um arquivo externo no Teste de carga do Azure, é preciso fazer upload do arquivo externo junto com o script de teste no teste de carga. Se você escalar horizontalmente o teste em várias instâncias paralelas do mecanismo de teste, poderá optar por dividir os dados de entrada igualmente entre essas instâncias.

Comece clonando ou baixando o projeto de exemplos do GitHub.

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
  • Um recurso do Teste de Carga do Azure. Para criar um recurso de teste de carga, veja Criar e executar um teste de carga.
  • Um script de teste do Apache JMeter (JMX) ou um script do Locust.
  • (Opcional) GUI do Apache JMeter para criar seu script de teste. Para instalar o Apache JMeter, consulte Introdução ao Apache JMeter.

Atualizar o script de teste para ler dados do CSV

Nesta seção, você vai configurar o script de teste para referenciar o arquivo CSV externo. Usar um elemento Configuração do Conjunto de Dados CSV para ler os dados de um arquivo CSV.

Importante

O Teste de Carga do Azure carrega o arquivo JMX e todos os arquivos relacionados em uma única pasta. Ao referenciar um arquivo externo no script do JMeter, verifique se não há referências de caminho de arquivo no script de teste.

Para testes baseados em JMeter, modifique o script do JMeter usando a GUI do Apache JMeter:

  1. Selecione o elemento Configuração do Conjunto de Dados CSV no script de teste.

  2. Atualize as informações de nome de arquivo e remova qualquer referência de caminho de arquivos.

  3. Opcionalmente, insira os nomes de campo CSV em Nomes de Variáveis quando você dividir o arquivo CSV entre mecanismos de teste.

    O Teste de Carga do Azure não preserva a linha de cabeçalho ao dividir seu arquivo CSV. Forneça os nomes de variável no elemento Config do Conjunto de Dados CSV em vez de usar uma linha de cabeçalho.

    Captura de tela mostrando a interface do JMeter para configurar um elemento de Configuração do Conjunto de Dados CSV.

  4. Repita as etapas anteriores para cada elemento Config do Conjunto de Dados CSV no script.

  5. Salve o script do JMeter e faça upload do script no teste de carga.

Para testes baseados em Locust, atualize o script do Locust abrindo-o em um editor de sua preferência.

  1. Na seção em que o arquivo é aberto, atualize as informações de Filename e remova qualquer referência de caminho de arquivo.

  2. Salve o script do Locust e faça upload do script no teste de carga.

Faça upload do arquivo CSV para o teste de carga

Ao referenciar arquivos externos no script de teste, certifique-se de fazer upload de todos esses arquivos junto com o script de teste. Quando o teste de carga é iniciado, o Teste de carga do Azure copia todos os arquivos para uma única pasta em cada instância do mecanismo de teste.

Importante

O Teste de Carga do Azure não preserva a linha de cabeçalho ao dividir seu arquivo CSV. Antes de adicionar o arquivo CSV ao teste de carga, remova a linha de cabeçalho do arquivo.

Para adicionar um arquivo CSV ao seu teste de carga usando o portal do Azure:

  1. No portal do Azure, acesse seu recurso de teste de carga do Azure.

  2. No painel esquerdo, selecione Testes para exibir uma lista de testes.

  3. Selecione o teste na lista marcando a caixa de seleção e, em seguida, selecione Editar.

    Captura de tela mostrando a lista de testes de carga e o botão 'Editar'.

  4. Na guia Plano de teste, selecione o arquivo CSV do computador e, em seguida, selecione Upload para enviar o arquivo ao Azure.

    Se você estiver usando um teste de carga baseado em URL, poderá inserir os nomes das variáveis como uma lista separada por vírgulas na coluna Variáveis.

    Captura de tela da guia Plano de teste no painel Editar teste.

    Se o tamanho do arquivo CSV for maior que 50 MB, compacte o arquivo em formato ZIP. O tamanho do arquivo zip deve estar abaixo de 50 MB. O Teste de Carga do Azure descompacta automaticamente o arquivo durante a execução do teste. Somente cinco artefatos zip são permitidos com um máximo de 1.000 arquivos em cada zip e um tamanho total descompactado de 1 GB.

  5. Selecione Aplicar para modificar o teste e usar a nova configuração ao executá-lo novamente.

Dica

Se você estiver usando um teste de carga baseado em URL, poderá referenciar os valores do arquivo de dados de entrada CSV nas solicitações HTTP usando a sintaxe $(variable).

Dividir dados de entrada CSV entre mecanismos de teste

Por padrão, o Teste de Carga do Azure copia e processa seus arquivos de entrada não modificados em todas as instâncias do mecanismo de teste. Por padrão, cada mecanismo de teste processa o arquivo CSV inteiro. Como alternativa, o Teste de carga do Azure permite dividir os dados de entrada do CSV igualmente entre todas as instâncias do mecanismo. Se você tiver vários arquivos CSV, cada arquivo será dividido igualmente.

Por exemplo, se você tiver um grande arquivo CSV de clientes e o teste de carga for executado em 10 mecanismos de teste paralelos, cada instância processará um décimo dos clientes.

Importante

O Teste de Carga do Azure não preserva a linha de cabeçalho ao dividir seu arquivo CSV.

  1. Configurar o script de teste para usar nomes de variáveis ao ler o arquivo CSV.
  2. Remova a linha de cabeçalho do arquivo CSV antes de adicioná-la ao teste de carga.

Para configurar o teste de carga para dividir os arquivos CSV de entrada:

  1. Acesse a guia Plano de teste para o teste de carga.

  2. Selecione Dividir CSV uniformemente entre os Mecanismos de teste.

    Captura de tela mostrando a caixa de seleção para habilitar a divisão de arquivos CSV de entrada ao configurar um teste no portal do Azure.

  3. Selecione Aplicar para confirmar as alterações de configuração.

    Na próxima vez que você executar o teste, o Teste de Carga do Azure dividirá e processará o arquivo CSV uniformemente entre os mecanismos de teste.

Resolução de problemas

O status do teste falhou e o log de teste foi File {my-filename} must exist and be readable

Quando o teste de carga for concluído com o status com falha, você poderá baixar os logs de teste.

Quando você receber uma mensagem de erro File {my-filename} must exist and be readable no log do teste, significa que o arquivo CSV de entrada não foi encontrado durante a execução do script de teste.

O Teste de carga do Azure armazena todos os arquivos de entrada junto com o script de teste. Ao fazer referência ao arquivo CSV de entrada no script de teste, certifique-se de não incluir o caminho do arquivo, mas use apenas o nome do arquivo.

O trecho de código a seguir mostra um exemplo de arquivo do JMeter que usa um elemento CSVDataSet para ler o arquivo de entrada. Observe que o filename não inclui o caminho do arquivo.

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