Executando métodos de teste do JUnit no JMeter

Uma forma de unir os teste de unidade aos testes de performance.

--

Time vector created by stories — www.freepik.com

Já pensou que seus testes de unidade poderiam ser exercitados N vezes de maneira simultânea para avaliar como seus componentes se comportam? Pois é, se estivermos no mundo Java e seus testes estiverem escritos em JUnit, você pode! Basta usar o JMeter para gerar usuários virtuais que executem seus métodos de teste. Vou explicar como nesse post!

Sabemos que no mundo do teste existem inúmeras ferramentas para vários intuitos, assim como uma distribuição enorme de informações sobre elas. Buscando trazer mais informações e compartilhar conhecimento sobre uma função que descobri há pouco tempo, resolvi escrever este post. Através do estímulo do Mentor do TSPI Júlio de Lima, compartilho com vocês meu conhecimento.

Mas antes de tudo, vamos entender um pouco do que é o JMeter:

É uma ferramenta desenvolvida e mantida pela Apache Foundation, destinada para realização de testes de performance. Bastante conhecida no mercado, é Open Source e desenvolvida em Java. Seu funcionamento se baseia no envio de várias requisições, pelo próprio JMeter, em um determinado grupo de usuários.

O número de usuários pode ser configurado na própria ferramenta, de acordo com o caso de teste a ser executado. A finalidade da execução desse teste é encontrar um ponto de baixa performance na sua aplicação. Para saber mais sobre a ferramenta, acessem o vídeo do Julio de Lima no youtube, onde ele explica como utilizar o JMeter: https://www.youtube.com/watch?v=j19OFRb8lLI

Ficou interessado(a)?

Acompanha o post que vou te mostrar um passo a passo, de como realizar de forma simples o teste com o JMeter utilizando o JUnit Request, que é um ferramenta que realiza testes individuais com o intuito de verificar se um novo recurso implementado ou uma correção não vai degradar a performance de uma versão já existente da aplicação.

Vamos lá:

Obs: Foi utilizado o sistema Windows para realizar o tutorial.

O método de testes criado para este post mostra como retornar uma mensagem com o nome e idade de uma pessoa e ele será utilizado para executar os testes de performance.

Primeiramente precisamos ter um arquivo .jar de seu projeto, podendo ser exportado de qualquer IDE de sua preferência. Em seguida, é necessário acessar a pasta do JMeter e colar no diretório \lib\junit “o arquivo exportado”. Como na imagem a seguir:

Em seguida acessar JMeter/bin/jmeter. Para que que o JMeter seja aberto. Como a imagem a seguir:

Com o JMeter aberto, é só clicar com o botão direito em Test Plan > Add > Threads (Users) >Thread Group para criar um grupo de Usuários. Após adicionar o Thread, configurar o campo Number of Threads (users) para simular com 10 usuários.

Em seguida vamos criar o JUnit Request, clicando com o botão direito em Thread Group > Add > Sampler > JUnit Request. Na janela aberta, se suas classes e métodos forem no estilo JUnit3 não é necessário marcar o checkbox no campo: Search for JUnit4 annotations (instead of Unit3). Caso contrário é necessário marcar, para que as anotações possam ser apresentadas.

Obs: o Classname e o Test Method virão automaticamente preenchidos com o nome da classe e do método do arquivo JUnit. Caso na pasta não tenha um arquivo desse tipo, não será possível realizar o teste com o JUnit Request.

Realizados os passos anteriores, é hora de validar se a request rodou, criando o View Results Tree, clicando com o botão direito em Thread Group > Add > Listener >View Results Tree. O View Results Tree mostra quais testes foram executados e nesse exemplo mostrou que os testes obtiveram êxito apresentando a Resposta de Code: 1000.

Por fim, iremos rodar o teste com 10 usuários e para a validação dos resultados, iremos utilizar o Listener Aggregate Report, que pode ser criado clicando com o botão direito em Thread Group > Add > Listener >Aggregate Report.

No Aggregate são apresentadas colunas relacionadas aos resultados. No exemplo anterior, avaliamos o tempo de resposta para a execução simultânea de 10 testes unitários, onde foram informados um nome e uma idade e validada a mensagem de retorno.

Utilizamos o percentil, que é uma medida de valores que descreve o resultado da execução do teste. Para essa análise de resultado podemos ver que 90% dos usuários executaram a função em 4 segundos. Logo, de acordo com os padrões estabelecidos pelo time, os resultados foram positivos.

Como vocês podem ver, os resultados mostraram a performance da execução nesse último screenshot, de percentil 4.

Conclusão:

Como pôde ser visto, o JMeter é uma boa ferramenta para análise de performance. Para que possamos aprimorar nosso conhecimentos é importante sempre explorar novas funções de ferramentas que você está aprendendo, e melhor ainda é poder simular o aprendizado com casos reais.

Espero que você leitor tenha gostado do Post e que ele te ajude a executar os testes de performance.

Não poderia deixar de mencionar o grande apoio do Gabriel Santos e do Rafael Albuquerque Bastos da Costa com a revisão do Post.

Referências:

Para mais informações sobre o JMeter: (https://jmeter.apache.org/usermanual/junitsampler_tutorial.html)

Entender sobre o JMeter (https://www.youtube.com/watch?v=j19OFRb8lLI)- Julio de Lima

Sobre Percentil: (https://medium.com/@juliodelimas/percentis-e-sua-import%C3%A2ncia-nos-testes-de-performance-ea83e3bba462)- Julio de Lima

--

--