Realizando um teste de API com JMeter: do Teste ao Relatório

Embora o JMeter seja uma ferramenta inicialmente criada para realizar testes de performance, ele também permite realizar testes em API, sem que você tenha que utilizar uma ferramenta diferente para realizar esse tipo de teste. Se você ainda não conhece o JMeter, dê uma olhada no post Teste de carga com JMeter – Instalação e configuração para conhecer a aplicação.

1. Mão na massa!

Vamos abrir o JMeter e criar um Grupo de Usuário (Clique no botão direito do mouse em Plano de Teste > Adicionar > Threads (Users) > Grupo de Usuários). Como o objetivo desse tutorial é apresentar a conexão do JMeter com a API, deixarei o grupo de usuários com apenas um usuário.

Dentro do Grupo de Usuários, vamos colocar um gerenciador de Cabeçalhos HTTP (Clique no botão direito do mouse em Grupo de Usuários > Adicionar > Elementos de Configuração > Gerenciador de Cabeçalhos HTTP).

Agora, vamos colocar duas Requisições HTTP dentro desse grupo de Usuários (Clique no botão direito do mouse em Plano de Teste > Adicionar > Testador > Requisição HTTP). Para ficar mais didático, criarei uma requisição chamada POST e outra chamada GET. Temos então a seguinte estrutura:

Apresentação do Plano de Teste no JMeter após colocar os componentes necessários para realizar a chamada da API.

Agora precisamos configurar nossas requisições para realizarem as chamadas na API. Vamos começar pelo POST. Para esse tutorial, vou utilizar uma API de teste fornecida pelo Reqres.

1.1. Configurando a conectividade entre o JMeter e a API

Na nossa requisição POST, vamos preencher o Protocolo de acordo com o protocolo do site: “https”. O nome do Servidor ou IP refere-se ao site, logo, “regres.in”. O método que vamos utilizar é o POST, e o Caminho será “/api/users”. Esse caminho é referente ao endereço que permite a criação de um usuário.

Para criar um usuário, precisamos de passar alguns parâmetros que a API solicita. Então, na aba Body Data, eu passei a estrutura JSON conforme a imagem abaixo:

Apresentação da tela da opção de Requisição HTTP no JMeter após realizar a configuração necessária do método POST para realizar a chamada da API.

Feito isso, vamos configurar o GET. Você pode duplicar o POST e apenas editar o nome e os demais campos. Nessa requisição, vamos alterar o método para GET e o caminho para “/api/users/2”. O campo body data ficará vazio.

Para testarmos, precisamos de uma forma de ver os resultados do teste. A nossa Árvore de Resultados, nesse caso, não faz diferença se estiver dentro ou não do Grupo de Usuários. Se estivéssemos dois Grupos de Usuários seria diferente, pois a Árvore de Usuários só iria exibir os resultados dos dois grupos caso estivesse fora deles.

Voltando para o nosso teste, temos então o Plano de Teste com a seguinte estrutura:

Apresentação do Plano de Teste no JMeter após colocar os componentes necessários para realizar a chamada da API e visualizar o resultado do teste.

É importante sabermos qual resultado estamos esperando para validarmos o nosso teste, isso também se encontra na documentação da API. No Método POST esperamos o Código de Resposta 201, se o usuário for criado corretamente. No Método GET esperamos o Código de Resposta 200, se o usuário que for pesquisado existir.

Então vamos testar. Salve seu Plano de Testes, clique em “Ver Árvore de Resultados” e inicie o teste (atalho: Crtl + r).

1.2. Visualizando os resultados

Visualização do resultado do teste na interface gráfica do JMeter

O método POST retornou o Código de Resposta esperado e nos Dados da resposta, podemos observar o que foi criado na imagem abaixo:

Resposta da requisição do método POST feita no JMeter

No método GET, o Código de Resposta também teve sucesso. Nos Dados da Resposta, podemos ver o usuário listado:

Resposta da requisição do método GET feita no JMeter

1.3. Rodando o teste na linha de comando

Um ponto-chave do teste de API é conectividade com a internet, que pode oscilar bastante o teste. Além disso, a interface do JMeter não economiza quando o assunto é memória. No nosso teste, simulamos um usuário realizando um acesso, um teste básico e útil para verificar a conectividade da API. Então, caso a sua necessidade seja avaliar a performance da sua API e realizar testes mais robustos, para minimizar esse ponto negativo no seu teste, recomendo que você utilize a linha de comando.

Vamos utilizar os seguintes comandos:

  • -n: indica que o JMeter não precisa inicializar sua interface gráfica;
  • -t: indica qual o Plano de Teste vai ser utilizado (.jmx);
  • -l: indica qual arquivo irá salvar o resultado do teste (.jtl);
  • -e: gera um relatório após a execução do teste;
  • -o: indica onde o relatório será salvo (esta pasta precisa estar vazia ou não existir).

Com o CMD aberto, navegue até a pasta bin do JMeter. Feito isso, vamos utilizar a seguinte estrutura:

jmeter -n -t “LOCAL_DO_PLANO_DE_TESTE\plano.jmx” -l “LOCAL_PARA_SALVAR_RESULTADO\resultado.jtl” -e -o “LOCAL_CRIAR_RELATÓRIO\Relatório”

Traduzindo…

Comando no cmd para rodar o teste e gerar o relatório

O resultado disso será um arquivo .jtl com o resultado do teste, que você pode visualizar na interface gráfica do JMeter, e uma pasta contendo um arquivo em HTML com gráficos e tabelas com informações detalhadas sobre o seu teste.

Arquivos formados após rodar o teste na linha de comando

Primeira página do relatório formado após rodar o teste na linha de comando

É importante ressaltar que o JMeter tem outros comandos, e para trabalhar dessa forma, devemos primeiramente construir o Plano de Testes com a interface gráfica, para depois rodarmos o teste (.jmx) na linha de comando.

Espero ter ajudado, até a próxima! 🙂