O JMeter é uma ferramenta utilizada para testes de carga (load test) nos principais serviços de rede, como: HTTP, FTP, LDAP, SMTP e outros. Esta ferramenta é parte do projeto Jakarta da Apache Software Foundation. Sendo assim, é importante mensurar quanto um serviço de rede pode suportar; obtendo valores como quantidade de conexões simultâneas suportadas, tempo de reposta e disponibilidade, por exemplo.
JMeter é flexível, simples de usar (não precisa de conhecimentos de programação para realizar os testes básicos), funciona através de uma Interface Gráfica ou linha de comando.
De acordo com a Wikipédia, para a realização de testes, o JMeter disponibiliza diversos tipos de requisições e assertions (validam o resultado dessas requisições), além de controladores lógicos como loops (ciclos) e controles condicionais para serem utilizados na construção de planos de teste. Além disso, ele disponibiliza um controle de threads (usuários virtuais), chamado Thread Group, no qual é possível configurar o número de threads, a quantidade de vezes que cada thread será executada e o intervalo entre cada execução, que ajuda a realizar os testes de stress. E por fim, existem diversos listeners, que se baseando nos resultados das requisições ou dos assertions, podem ser usados para gerar gráficos e tabelas.
1 – Thread Group — Este é ponto de começo, todos os outros elementos do Test Plan devem estar sob este.
2 – Controllers — Estes são divididos em dois grupos Samplers e Logic Controllers:
Samplers — São controladores pré-definidos para requisições especificas (HTTP,FTP,LDAP e outros).
Logic Controllers — São controladores mais genéricos. Podendo ser customizada com a inserção de outros controllers, configuration elements, assertions, etc.
3 – Listeners — Estes são os elementos que fornecem acesso as informações obtidas pelo JMeter durante os testes.
4 – Timers — Por padrão, o JMeter faz requisições sem pausas entre elas. Os timers são utilizados para incluir pausas entre as requisições.
PRÉ-REQUISITOS
O JMeter é desenvolvido na linguagem de programação Java, e portanto, necessita que esta esteja instalada na sua máquina. A versão do JMeter, na data deste post (versão 2.10), é totalmente compatível com a especificação 1.6 e superior do Java.
BAIXANDO O JMETER
Na data de publicação desse post, a versão mais recente é a 2.10, que pode ser baixada gratuitamente através desse link ou baixar a versão 2.10 diretamente executando o comando:
INSTALANDO E EXECUTANDO O JMETER
Depois de baixado a ferramenta, descompacte-a usando o comando abaixo:
O arquivo compactado gerará a pasta apache-jmeter-2.10. Acesse o diretório “bin” contido nela e execute script jmeter.sh (ele invoca o arquivo “.jar”):
MEU PRIMEIRO TESTE
Primeiramente crie um Grupo de Usuários (Threads Group), como segue a imagem (Plano de Teste >> Adicionar >> Threads >> Grupo de Usuários):
Defina o Número de Usuários Virtuais e o Tempo de Incialização. Para um teste simples, preencha os valores 100 e 60 respectivamente.
Em seguida, ajuste as requisições HTTP do Testador (Sampler) como segue a imagem (Grupo de Usuários >> Adicionar >> Testador >> Requisições HTTP):
Defina o IP do Servidor e o Caminho de acesso. A campo Caminho refere-se ao caminho absoluto da URL, caso prefira preencha com “/” (barra) que irá requisitar o arquivo index automaticamente.
Posteriormente, crie um Listener, que são os elementos que fornecem acesso as informações obtidas pelo JMeter durante os testes [IMPORTANTE]. Para isso vá em Grupo de Usuários >> Adicionar >> Ouvinte >> Ver Árvore de Resultados e Ver Resultados em Tabela
Por fim, a estrutura do Plano de Teste ficará como segue imagem:
EXECUTANDO O TESTE
Para executar o Plano de Teste criado, salve em arquivo de configuração tudo que foi feito. E posteriormente, vá em Executar >> Iniciar (CTRL + R) para iniciar os testes:
CONCLUSÃO
A atividade de Teste é fundamental para a garantia da qualidade dos serviços ofertados. Mesmo sendo pouco utilizados no cenário atual e como os custos associados a sua execução são altos, a utilização de ferramentas que automatizem a criação e execução dos mesmos é essencial. Pois, fazer medições de tempo de resposta e simular muitos usuários acessando ao mesmo tempo
uma aplicação é inviável. Por isso, deve-se atentar para que os testes reflitam ao máximo a execução real do software tanto no que diz respeito às páginas navegadas, como no tempo de intervalo de acesso de uma página para outra e também ao número de usuários simultâneos.
Vou começar a utilizá-lo em uma infra essa semana. Excelente ferramenta.