Ler dados de um arquivo CSV no JMeter com o Teste de Carga do Azure
Neste artigo, você aprenderá a ler dados de um arquivo CSV (valor separado por vírgula) no JMeter com o Teste de Carga do Azure. Use dados de um arquivo CSV externo para tornar o script de teste do JMeter configurável. Por exemplo, você pode iterar todos os clientes em um arquivo CSV para passar os detalhes do cliente para a solicitação da API.
No JMeter, você pode usar o elemento CSV Data Set Config no script de teste para ler dados de um arquivo CSV.
Para ler dados de um arquivo externo no Teste de Carga do Azure, você precisa carregar o arquivo externo junto com o script de teste do JMeter no teste de carga. Se você dimensionar seu teste em várias instâncias paralelas do mecanismo de teste, poderá optar por dividir os dados de entrada uniformemente entre essas instâncias.
Comece clonando ou baixando o projeto de amostras 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 de teste de carga do Azure. Para criar um recurso de teste de carga, consulte Criar e executar um teste de carga.
- Um script de teste do JMX (Apache JMeter).
- (Opcional) GUI do Apache JMeter para criar seu script de teste. Para instalar o Apache JMeter, consulte Introdução ao Apache JMeter.
Atualize seu script JMeter para ler dados CSV
Nesta seção, você configura o script Apache JMeter para fazer referência ao arquivo CSV externo. Use um elemento CSV Data Set Config para ler 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 fazer referência a um arquivo externo no script JMeter, verifique se você não tem referências de caminho de arquivo no script de teste.
Modifique o script JMeter usando a GUI do Apache JMeter:
Selecione o elemento CSV Data Set Config no script de teste.
Atualize as informações de nome de arquivo e remova qualquer referência de caminho de arquivos.
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.
Repita as etapas anteriores para cada elemento Config do Conjunto de Dados CSV no script.
Salve o script JMeter e carregue o script para o teste de carga.
Carregue o arquivo CSV para o teste de carga
Quando você fizer referência a arquivos externos do script de teste, certifique-se de carregar todos esses arquivos junto com o script de teste do JMeter. Quando o teste de carga é iniciado, o Teste de Carga do Azure copia todos os arquivos para uma única pasta em cada uma das instâncias dos mecanismos 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:
No portal do Azure, acesse o recurso de teste de carga do Azure.
No painel esquerdo, selecione Testes para exibir uma lista de testes.
Selecione o teste na lista marcando a caixa de seleção e, em seguida, selecione Editar.
Na guia Plano de teste, selecione o arquivo CSV do seu computador e selecione Carregar para carregar o arquivo no 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 .
Se o tamanho do arquivo CSV for maior que 50 MB, compacte o arquivo. O tamanho do arquivo zip deve ser inferior a 50 MB. O Teste de Carga do Azure descompacta automaticamente o arquivo durante a execução de teste. Apenas cinco artefatos zip são permitidos com um máximo de 1000 arquivos em cada zip e um tamanho total descompactado de 1 GB.
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á fazer referência aos valores do arquivo de dados de entrada CSV nas solicitações HTTP usando a $(variable)
sintaxe.
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 todo o arquivo CSV. Como alternativa, o Teste de Carga do Azure permite dividir os dados de entrada CSV uniformemente em todas as instâncias do mecanismo. Se você tiver vários arquivos CSV, cada arquivo será dividido uniformemente.
Por exemplo, se você tiver um arquivo de entrada CSV de cliente grande e o teste de carga for executado em 10 mecanismos de teste paralelos, cada instância processará 1/10 dos clientes.
Importante
O Teste de Carga do Azure não preserva a linha de cabeçalho ao dividir seu arquivo CSV.
- Configure seu script JMeter para usar nomes de variáveis ao ler o arquivo CSV.
- 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:
Vá para a guia Plano de teste para seu teste de carga.
Selecione Dividir CSV uniformemente entre os Mecanismos de teste.
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.
Solução de problemas
O status do teste falhou e o log de teste File {my-filename} must exist and be readable
Quando o teste de carga for concluído com o status Falha, você poderá baixar os logs de teste.
Quando você recebe uma mensagem File {my-filename} must exist and be readable
de erro no log de teste, o arquivo CSV de entrada não pôde ser encontrado ao executar o script JMeter.
O Teste de Carga do Azure armazena todos os arquivos de entrada junto com o script JMeter. Ao fazer referência ao arquivo CSV de entrada no script JMeter, certifique-se de não incluir o caminho do arquivo, mas usar apenas o nome do arquivo.
O trecho de código a seguir mostra uma extração de um arquivo JMeter que usa um CSVDataSet
elemento para ler o arquivo de entrada. Observe que o não inclui o filename
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>