Existem diversos artigos que falam do jmeter e mostram alguns passos de como utilizar o mesmo. O meu foco aqui é mostrar que o jmeter não serve apenas como gerador de carga e sim como ferramenta de qualidade, gerador de dados para questionamentos e definição de limitações em fluxos.
As requisições que o Jmeter permite são diversas, no momento elas são:
FTP Request
HTTP Request
JDBC Request
Java Request
SOAP/XML-RPC Request
WebService(SOAP) Request
LDAP Request
LDAP Extended Request
Access Log Sampler
BeanShell Sampler
BSF Sampler
TCP Sampler
JMS Publisher
JMS Subscriber
JMS Point-to-Point
JUnit Request
Mail Reader Sampler
Test Action
Sendo a mais simples ao meu ver o http request e a mais complexa BeanShell Sampler.
Seguindo os passos de outros artigos vou descrever o http Request e dar uma dica de como gerar um BeanShell Sampler.
Crie um thread Group e dentro dele adicione um HTTP request.
No campo server name ou ip você pode tanto colocar o IP da máquina em teste quanto o domínio da mesma (sem o HTTP:// ou HTTPS:// eles tem um campo próprio no HTTP request).
No campo porta coloque o número da porta que você esta usando em seu teste, a porta básica do protocolo http é a UDP 80.
Em protocolo indique qual o protocolo, o básico é http (o Jmeter se encarrega de montar o HTTP://<domínio>).
Em path você deve colocar o caminho em teste, caminho é tudo aquilo que vem após o domínio de um site até o final da extensão de uma página (é mais complexo que isso, porém por hora vamos considerar só estes dados, para mais informações consulte um guia de HTTP).
As demais informações deste sampler HTTP request podem ser deduzidas apenas observando a página e tendo conhecimento de HTML.
Para visualizar os resultados no jmeter estarei explicando no próximo item os listener.
O BeanShell é um interpretador de comandos abreviados do Java, para ele funcionar no jmeter você precisa da última versão do seu arquivo .jar (www.beanshell.org/download.html).
Obs.: O jmeter compila este arquivo automaticamente, para isso coloque ele em (jmeter) >> lib >> ext.
[3] Comentário enviado por rodrigonw em 11/09/2008 - 19:05h
nova dica:
Quando usar o Regular Expression Extractor (ele usa a sitax de perl) e tiver duvidas se esta funcionado no campo de Regular expression coloque apenas
([^ü]*) ou ([^ñ]*)
isso ira tetorna todo o conteudo da resposta (obs se na resposta vir qualque caracter ü o extrator ira para nele e so ira retorna o texto ate este ponto neste caso o segundo caso pode ser util pois ñ so é usado em outras liguas)
[4] Comentário enviado por lulobaum em 02/03/2009 - 12:01h
Olá, estou precisando fazer um teste de carga em uma app web no meu trabalho. Bom, eu estou configurando o JMeter da seguinte forma:
Test Plan
|
Thread Group (15 threads, periodo de 5 s, executando 1 vez)
| Recording Cotroller (Para mostrar os passos que faço no browser)
| HTTP Request Defaults (com as configurações do endereço da minha app - IP que minha app esta rodando, porta 80, http...)
| Aggregate Report
| Graph Results
WorkBench
| HTTP Proxy Server (com as configurações da porta - 8090, e com o Target Controller apontando para o meu Recording Controler, ou seja, tudo o que eu executar no browser é para aparecer no Recording Controller)
Feito essas configurações no JMeter, eu vou no Browser (IE) e configuro o proxy localhost, com a mesma porta que utilizo no Jmeter, para que tudo que eu faça no browser seja capturado no JMeter... Só que...nao ta funcionando.. o jmeter nao ta capturando minhas açoes no browser... configurei algo errado?? O objetivo é testar quantos usuários simultâneos minha app consegue suportar, tem como fazer esse teste de outra forma sem usar o HTTP Proxy Server ou o melhor é usá-lo? (porque nao consigo usá-lo...)
Você saberia me explicar o erro? Tem como fazer um teste de login sem que seja necessário o uso do HTTP Proxy Server??
[5] Comentário enviado por rodrigonw em 02/03/2009 - 18:39h
Ok, vamos por parte.
1º Para capturar você não precisa de tudo isso. Use apenas um thread group e aponte a captura do proxy para ele, logo apos é so dar start.
Verifique se o proxy do jmeter esta funcionando corretamente.
Tenho duas sugestões
1) tente abrir a url do proxy no browser antes de configurar para usar o proxy no seu caso chame este endereço http://127.0.0.1:8090
Vc deve receber um retorno de erro
java.net.UnknownHostException: /
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
Este retorno se dao ao fato do jmeter esta recebendo uma chamada para ele mesmo e nao para um caminho externo.
Caso vc não recebe este erro tente baixar a jdk 1.5 e rode o jmeter apartir dela.
2) Verifque se seu jmeter não esta apresentando nenhum erro no terminal caso não tente baixar o jmeter novamente.
Lembrando. O jmeter faz request http e https porem no segundo caso ele precisa de um intervenção de sua parte.
O jmeter é uma ferramenta open source do projeto jakarta la vc pode encontrar soluções para falhas especificas para algumas distribuições de linux.
No Ruindows tome cuidado para não rodar o jmeter com o java que fica dentro do system32
[6] Comentário enviado por rodrigonw em 02/03/2009 - 18:43h
Outra obs.
Caso vc tenha um proxy no seu local de estudo vc devera configurar ele no jmeter para tanto basta editar os arquivos de propriedades que estão na pasta bin do jmeter.
[7] Comentário enviado por pravato em 26/03/2009 - 12:10h
Na 5ª página você falou sobre adicionar Proxys.
Tenho uma dúvida:
Eu conseguiria adicionar diversos IP´s de proxy´s públicos, para simular diversos acessos de diversas regiões do mundo? ou só é possível adicionar 1 proxy?
[8] Comentário enviado por rodrigonw em 26/03/2009 - 15:52h
O uso de proxy do jmeter esta ativo apenas como ponte de saida.
Este recurso serve apenas para gravar as request que você esta enviao.
Para gerar multiplos ip's com saida de sua maquina você deve.
1) ter uma mascara de rede valida que não seja conflitante com ip's existentes.
2) voce pode direcionar suar request do jmeter atrave de um aplicativo ponte que alter os ips.
3) voce pode alterar atraves de beanshell os ips de saida porem isso gera diminuição na carga de saida.
4) voce pode usar um recurso de multproxy da web onde seus pacotes sao direcionados para um pool de servidores espalhados no mundo e redirecionados para seu cliente no mundo.
5) qualquer tentativa de gerar multiplos ips de sua maquina para web pode e sera considerada um atack e você pode ter seu mac address em uma blacklist de diversos servidores.
[10] Comentário enviado por rodrigonw em 29/05/2009 - 02:09h
*29/05/2009 JMETER 2.3.3
Novidades
Melhoria no HELP
Interface em diversas línguas incluído português Brasil
IF CONTROLLER
Controle para usar variável diretamente ${__jexl(${VAR} > 100)}
JDBC Request
Melhoria no tratamento de valores de saída
Novo campo de valorização dos comandos SQL.
WebService(SOAP) Request
Aprimorado com correção de bugs.
TCP Sampler
Keep Alive
Mail Reader Sampler
(Aparenta ter correções para seus erros de imap e carga)
Test Action
Melhorado com (parada força)
BeanShell
O jar agora vem junto.
O Pos processador de BSF esta com o nome errado, sendo ele a segunda opção Pos-Processador BeanShell para diferenciar o BSF não vem com o combo reboot bsh
O Pos processador (Salvar resposta para Arquivo) agora é um monitor com mais opções.
Agora ele pode receber uma variável para nomear os arquivos que esta salvando.
Foi criado um monitor para tratamento BSF
O Pos processador de resultados resumidos foi movido para os monitores.
HTTP Cookie Manager
Agora Permite todas as threads compartilharem um mesmo cookie.
HTTP Request Defaults
Adicionado limitador de tempo de espera para conexão e espera para resposta pos conexão.
TCP Sampler Config
Liberado para uso com novas funcionalidades.
Random Variable (Nova configuração)
Permite criar uma variável de valores aleatórios sem o uso de pre processador + javascript rand
Counter foi movido para configurações.
Assertivas (podem ser configuradas para atender uma estrutura + suas ramificações)
Duration (pode ser configuradas para atender uma estrutura + suas ramificações)
Result Status Action Handler (Permite parada rápida)
Thread Group (Permite parada rápida sem esperar fechar todas as threads)
HTTP Proxy Server
[12] Comentário enviado por rodrigonw em 04/09/2009 - 20:24h
:) para responder alguns e-mail
Quando vc tiver esta msg no jmeter.
jmeter Response too large to be displayed. Size <valor> Max: 204800
Ela ocorre em geral no monitor de arvore (ou como esta tradução 2.3.4 fez Ouvinte) "View Results Tree"
Motivo: O jmeter cria uma estrutura no array do monitor fixando o numero maximo de paginas que ele vai apresentar.
Isso esta descrito no arquivo de propriedades do jmeter
jmeter.properties
# Maximum size of HTML page that can be displayed; default=200 * 1024
# Set to 0 to disable the size check
Para acabar com o erro e conseguir ver as paginas basta remover o # (sustenido) da frente desta linha.
#view.results.tree.max_size=0
Logo ele vai passar a não definir mais um arry fixo para seu displayed.
Obs.:
1)Porem, gostaria de lembra que este monitor não é recomendado para cargas elevadas e indicado para testes funcionais (lembrando das limitações de testes funcionais do jmeter).
2) Esta mudança pode torna as request mais lentas.
3) Esta mudança diminui a quantidade de paginas que o jmeter consegui monitorar apresentando memory leek mais rapido. (basta remover o monitor "View Results Tree" e voltar a configuração")
Msg basica de memory leek para este caso:
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread. See log file for details.
Porem este erro tambem ocorre quando vc criar mais threads que o suportado por seu jmeter (neste caso é so mudar o tamanho da memoria que ele esta usando na jvm)
[13] Comentário enviado por rodrigonw em 05/05/2014 - 15:06h
Exemplo.
Script para testar portas abertas em sua maquina ou outras
Basta copiar o texto abaixo salvar como portscan.jmx abrir no jmeter 2.11 ou maior e rodar.
[16] Comentário enviado por rodrigonw em 23/09/2014 - 15:20h
" Empty TestPlan - see log file "
Erro comum ao tentar abrir um script feito com plugins do jmeter em um jmeter sem plugin
Soluções
1) Abrir o script em um jmeter com os plugins e remover os componetes que usam plugin do script salvar e tentar abrir novamente em outra maquina.
2) Instalar os plugins no jmeter de http://jmeter-plugins.org/wiki/Start/">http://jmeter-plugins.org/wiki/Start/ reiniciar o jmeter, verificar se todos os plugins foram carregados e abrir o script.
3) Remover o plugins na mão do xml basta procurar pelos nodes (nos) gc
Your script have as pluing in source (gc plugin jmeter) your jmeter not exist gc install all plugins gc in your jmeter.
O script que vc esta tentando abrir possui deve possuir um plugin do source jmeter e o jmeter que esta abrindo não tem este plugin