Utilizando o JMeter para realizar testes de carga com requisições HTTP

Em nosso cenário atual de utilização do Manager Edoc sentimos a necessidade de realizarmos testes cada vez mais próximos da sua realidade de uso. Esse tipo de cenário exige que o Manager Edoc seja capaz de responder a um grande número de requisições Http simultâneas, sem aumentar a memória a ponto de causar um “estouro de memória”.

Uma suite de testes normal não consegue simular situações de grande demanda por determinada funcionalidade, como por exemplo a impressão. Para casos como esse utilizamos uma ferramente chamada Apache JMeter .

O Apache JMeter é uma aplicação desktop desenvolvida para realizar testes de desempenho e estresse em aplicações cliente/servidor tais como aplicações Web. Ele pode ser usado para simular cargas de trabalho de determinada funcionalidade do Manager Edoc, testando sua robustez.

Por ser uma ferramenta livre e inteiramente escrita em Java, o JMeter é compatível com qualquer ambiente capaz de suportar a máquina virtual Java versão 1.4 ou superior. O JMeter permite a criação de testes para diversos protocolos, como HTTP, JDBC, FTP e SOAP.

A execução dos testes com o JMeter, pode ser feita de duas formas: em uma máquina só ou de forma distribuída, onde o esforço do teste de determinada funcionalidade é dividido entre diversas máquinas. A partilha do esforço do teste de uma funcionalidade é uma característica necessária e muito importante para a correta execução dos testes de desempenho e estresse, pois através dela os testadores podem conseguir uma maior fidelidade na recriação de determinado cenário de teste. A divisão do esforço de teste vai evitar gargalos tanto de processamento quando de caminhos na rede do sistema sob teste.

No JMeter a estrutura dos testes e de seus elementos é feita através de uma estrutura de árvore hierárquica, onde a raiz é o Plano de Teste. Na figura 1 é mostrada a interface inicial do Apache JMeter. E na figura 1.2 é possível visualizar a estrutura em árvore hierárquica.

Figura 1.

Figura 1.2

Na figura 1.2 podemos observar a estrutura em árvore onde a raiz é o “Plano de Teste WorkFlows NFe” (Test Plan) e os Grupos (Thread Group) que pertencem a esse plano de teste.

  • Plano de Teste (Test Plan): representa o cenário global do plano de teste.
  • Grupo de Usuários (Thread Group): armazena as configurações do grupo de usuários virtuais, onde cada usuário corresponde a uma Thread que simula a navegação de um usuário utilizando determinada funcionalidade.
  • Área de trabalho: utilizada somente como uma área de armazenamento temporário para elementos dos testes que não serão executados.

Cada grupo é especifico para uma funcionalidade do Manager Edoc.

Dentro de cada Grupo temos os elementos:

  • Gerenciador de Cabeçalhos HTTP: armazena o cabeçalho da requisição Http. No cenário do Manager Edoc ele salva o campo authorization para fazer a autenticação básica do Edoc. (Figura 2)

Figura 2.

  • Requisição Http (Exporta NF-e HTTP): armazena as configurações gerais da requisição HTTP. Nesse componente colocamos o ip do servidor onde está o Manger Edoc, a porta, o método POST ou GET, o caminho a interface Web e no campo Parameters, colocamos os parâmetros necessários para a requisição que desejamos fazer, conforme figura 3.

Figura 3.

  • Ver Árvore de Resultados (Ouvintes ou Listeners): armazenam o resultado das requisições do grupo de usuários. Armazenam requisições com falha quanto as corretas. Conforme figura 4 e 5 podemos ver dois tipos de ouvintes. O ouvinte da figura 4 possui um estrutura em árvore para visualização dos resultados, enquanto o da figura 5 possui um estrutura em tabela.

Figura 4.

Figura 5.

O JMeter possui uma gama muito grande de componentes e controladores. Foi explicado somente os componentes que estão sendo utilizados no momento para fazer os testes de desempenho e estresse do Manager Edoc.

Criando um plano de testes para a função Modo do Manager Edoc

Primeiramente vamos fazer o download do Apache JMeter no site da Apache, no seguinte link: http://jmeter.apache.org/download_jmeter.cgi conforme figura 6. E faça o download do arquivo .zip. Lembrando que é necessário ter o Java instalado antes de executar esses passos a seguir.

Figura 6.

Após fazer o download do arquivo, faça a descompactação do seu conteúdo em uma pasta de sua preferência. Dentro do arquivo estará a pasta contendo todos os arquivos do JMeter. Figura 7.

Figura 7.

Com a pasta do JMeter extraida, localiza a pasta “bin” dentro da pasta raiz do JMeter. Figura 8.

Figura 8.

Entre na pasta bin e localize o arquivo ApacheJMeter.jar e execute. Assim o JMeter será aberto e podemos começar a criar um plano de testes contendo um grupo de usuários que irá testar a funcionalidade do Modo do Manager Edoc.

Com a interface aberta click com o botão direito no Plano de Teste e escolha a opção Adicionar/Threads(Users)/Grupo de Usuários conforme figura 9.

Figura 9.

Com o grupo de usuários criados podemos visualizar suas propriedades, vamos alterar o nome para Grupo de Usuários Modo. Temos as seguintes propriedades:

  • Número de Usuários Virtuais (threads): indica o número de usuários virtuais que irão utilizar a funcionalidade em questão.
  • Tempo de inicialização (em segundos): indica o intervalo de tempo onde cada usuário vai iniciar o uso da funcionalidade.
  • Contador de Iteração: indica quantas vezes a funcionalidade em questão será disparada.

Por exemplo, se deixarmos os valores padrões para as três propriedades conforme Figura 10, estaremos dizendo que: um usuário vai iniciar a cada 1 segundo e irá repetir a operação 1 vez.

Figura 10.

Caso as configurações sejam trocadas para Threads 10, Tempo inicialização 5 e contador 100, estaremos dizendo que: 10 usuários irão iniciar a cada 5 segundos e irá acontecer 100 repetições da funcionalidade. Caso deixamos o check box Infinito marcado a funcionalidade será executada com 10 usuários iniciando a cada 5 segundos até o testado parar a execução do JMeter pelo botão “Stop” no menu principal. Conforme figura 11.

Figura 11.

Como grupo de usuários criado click com o botão direito sobre ele e escolha Adicionar/Elemento de Configuração/Gerenciador de Cabeçalhos HTTP conforme figura 12. Na tela de configurações do gerenciador de cabeçalho click no botão adicionar e coloque o nome e valor conform abaixo:

Nome = authorization

Valor = Basic YWRtaW46MTIzbXVkYXI=

Com a autenticação básica do Edoc preenchida click novamente no grupo de usuários com o botão direito e click em Adicionar/Testador/Requisição HTTP conforme figura 13.

Figura 13.

Com a tela das configurações da requisição HTTP aberta, configure as propriedades conforme 14. Com os seguintes valores:

  • Servidor ou IP: configure com o ip da máquina onde o Edoc está rodando.

  • Número da Porta: configure com o porta configurada no Edoc

  • Método: Será POST ou GET de acordo com a rota da APIWeb do Edoc. No caso será GET para Rota do MODO.

  • Caminho: caminho da rota da APIWebo do Edoc. Valor para rota MODO NFCe: /ManagerAPIWeb/nfce/modo

  • Na Aba Parameters click no botão Adicionar para incluir os parâmetros da requisição de acordo com manual do Manager Edoc. Nesse exemplo vamos alterar a propriedade AtualizaDataHoraEnvio que pode ter os valores ‘0’ e ‘1’. Preencha os parâmetros conforme abaixo

    Nome Valor

    AtualizaDataHoraEnvio 1

         cnpj                                        00819201004455            
    
         grupo                                      edoc
    

Figura 14.

Após a configuração da requisição HTTP vamos adicionar dois Ouvintes ou Listeners para visualizarmos as requisições e suas respostas. Click com o botão direito no grupo de usuário e escolha Adicionar/Ouvintes/Var Árvore de Resultados e depois da mesma forma escolha Adicionar/Ouvintes/Ver Resultados em Tabela conforme Figura 15.

Figura 15.

Após esses passos teremos o seguinte grupo:

2015-03-30 15_07_59-Grupo de Usuários Modo.jmx (C__apache-jmeter-2.11_bin_Grupo de Usuários Modo.jmx.png|354px;x162px;

Para iniciar os testes basta dar um click no botão Play conforme abaixo.

Figura 16.

Com o JMeter rodando sempre é possível para os testes com o botão STOP. Quando existem mais de um Grupo do plano de testes todos eles irão disparar ao mesmo quando quando o botão PLAY é acionado. Para rodar um único grupo basta desabilitar os grupos aos quais não se deseja disparar clicanco com o botão direto e escolhando a opção desabilitar.

Os botões com a vassoura em destaque na figura 16, servem para limpar o resultado das requisições dos Ouvintes. O primeiro limpa somente o resulta do grupo selecionado, o segundo limpa o resultado de todos os ouvintes de todos os grupos do plano de testes.

As imagens abaixo (Figura 17 e 18) mostram duas abas do Ouvinte de resultados em formato de árvore, na Aba Requisição é possível verificar como a requisição foi formada para envio e na Aba Dados da Resposta é possível verificar como foi a resposta da requisição.

Figura 17

Figura 18

If two or more Eiffel Tower symbols appear during a free spin, then the feature is retriggered. The crème de la crème prize in Paris Beauty is the randomly triggered progressive jackpot.

The Sloto’ Cash LIVE카지노 Facebook page also offers some interesting freebies. The current members are invited to share a Sloto’ Cash banner on their profiles.