JMeter – Wikipédia, a enciclopédia livre
JMeter é uma ferramenta que realiza testes de carga e de estresse em recursos estáticos ou dinâmicos oferecidos por sistemas computacionais. Além disso, é parte do projeto Jakarta, da Apache Software Foundation.
Para a realização de testes, a ferramenta JMeter disponibiliza diversos tipos de requisições e assertions (para validar 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, que correspondem aos testes funcionais.
O JMeter disponibiliza também um controle de threads, 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 estresse. E, por fim, existem diversos listeners que, baseando-se nos resultados das requisições ou dos assertions, podem ser usados para gerar gráficos e tabelas.
Componentes no JMeter são recursos que podem ser utilizados para criar rotinas de testes para aplicações.
Test Plan
[editar | editar código-fonte]Para qualquer teste que venha a ser feito utilizando o JMeter, é necessário criar um Test Plan incluindo os elementos do teste. Tais elementos podem ser:
- Thread Group — É o ponto de início, sob o qual devem estar todos os outros elementos do Test Plan. Como o próprio nome ressalta, ele controla as threads que serão executadas pelo teste.
- Controllers — São divididos em dois grupos: samplers e logic controllers.
- Samplers — São controladores pré-definidos para requisições específicas. Podem ser personalizados com a inserção de configurações (configurations), asserções (assertions) etc.
- Logic Controllers — São controladores mais genéricos. Podem ser personalizados com a inserção de outros controllers, configuration elements, assertions etc.
- Listeners — São elementos que fornecem acesso às informações obtidas pelo JMeter durante os testes.
- 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.
- Assertions — Usado para verificar se a resposta obtida na requisição é a esperada. Expressões regulares (Perl-style regular expression) podem ser usadas na comparação.
- Configuration Elements — Embora não faça requisições (exceto para HTTP Proxy Server), este elemento pode adicionar ou modificar as requisições.
- Pre-Processor Elements — Executa alguma ação antes de fazer a requisição. É mais usado para pré-configurações das requisições.
- Post-Processor Elements — Executa alguma ação depois de fazer a requisição. É mais usado para processar as respostas da requisição.
Tipos de serviços
[editar | editar código-fonte]O JMeter suporta requisições dos seguintes tipos de serviços em suas rotinas de testes:
- FTP — Permite criar requisições usando o protocolo FTP (com autenticação ou não) e executa o comando de retrieve em um arquivo específico.
- HTTP — Permite criar requisições usando o protocolo HTTPS ou HTTP (com ou sem autenticação, respectivamente), podendo incluir parâmetros ou arquivos de requisição, escolher o método usado (GET ou POST) e manipular Cookies. Este sampler possui dois tipos de implementação: Java HTTP ou Commons HTTPClient.
- JDBC — Com esta requisição é possível executar queries em um banco de dados específico.
- Objeto Java — Auxilia no teste de carga de classes Java, exigindo que se implemente uma classe do tipo JavaSamplerClient para executar o método a ser testado. A estrutura deste objeto é similar à usada pelo JUnit.
- SOAP/XML-RPC — Permite enviar requisições SOAP para um WebService, ou enviar XML-RPC através do protocolo HTTP.
- LDAP — Permite enviar requisições para um servidor LDAP. Possui uma implementação simplificada e outra estendida.
- Testes JUnit — Usado para fazer teste de carga em testes de unidade que utilizam o framework JUnit.
Existem outros tipos de requisições que, até a atual versão do JMeter, estão em versão alpha. São eles: Web service (SOAP), Access Log, BeanShell, BSF, TCP, JMS Publisher, JMS Subscriber, JMS Point-to-Point.