introdução aos testes de desempenho
DESCRIPTION
A apresentação aborda motivação para a realização dessa modalidade de testes, bem como os conceitos principais que precisam ser compreendidos. Também apresenta uma metodologia básica de um teste de desempenho, as principais métricas que necessitam ser capturadas e analisadas e as ferramentas atualmente disponíveis no mercado. Por último são abordados ainda os erros mais comuns ao se planejar e executar essa classe de testes.TRANSCRIPT
![Page 2: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/2.jpg)
César Fernandes Teixeira
Analista de Desempenho – Base2 Tecnologia Mestre em Ciência da Computação (UFMG) Bacharel em Ciência da Computação (UFMG) Certificado CTFL pelo ISTQB Participou, durante a graduação e mestrado, de
projetos de pesquisa de análise e modelagem de desempenho, planejamento de capacidade e projeto experimental em ciência da computação
2
![Page 3: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/3.jpg)
PARTE 1: Introdução e Motivação
3
![Page 4: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/4.jpg)
Motivação
4
Servidor e-commerce
?!
![Page 5: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/5.jpg)
Motivação
5
Servidor e-commerce
?
?
?
![Page 6: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/6.jpg)
Motivação Sistema de Seleção Unificada (Sisu) - 2011
6
![Page 7: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/7.jpg)
Motivação Amazon - 2008
7
Fonte: http://idgnow.uol.com.br
![Page 8: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/8.jpg)
Introdução Os testes de desempenho permitem:
Saber o comportamento do sistema sob a carga esperada
Saber a carga máxima suportada pelo sistema
Planejar melhorias no ambiente para atender a demandas atuais e futuras
Não perder clientes por falhas no desempenho
8
![Page 9: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/9.jpg)
Introdução
9
Teste de carga• Testes realizados para verificar se o sistema suporta uma
determinada carga desejada
Teste de estresse• Testes realizados para determinar a capacidade máxima do
sistema
Teste de estabilidade• Testes realizados para verificar se o sistema degrada o
desempenho com o tempo
• Tipos de testes de desempenho
Fronteiras entre os testes podem não ser tão rígidas!
![Page 10: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/10.jpg)
Conceitos Principais
10
• Carga: volume de tráfego para um determinado sistema. Geralmente medida em transações, requisições e usuários.
• Requisição: requisição http realizada.
![Page 11: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/11.jpg)
Conceitos Principais
11
• Transação: operação completa no sistema. Por exemplo, buscar um produto.
• Sistema: todo o conjunto de servidores, rede entre servidores, softwares de terceiros e a aplicação.
• Utilização de um recurso: percentual, em uso, do total de recursos disponíveis.
![Page 12: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/12.jpg)
Conceitos Principais
12
• Tempo de resposta: Tempo desde o momento em que o usuário envia a requisição até o momento em que recebe a resposta completa. • Definição não é universal. • Na nomeclatura do Jmeter , é o elapsed time
![Page 13: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/13.jpg)
Conceitos Principais
13
• Profiling: instrumentação da aplicação para estudo dos métodos e seus tempos de execução.
• Vazão: taxa com que um sistema responde às requisições recebidas.
• Gargalo: tudo o que impede que o sistema apresente maior vazão.• Se a vazão for inferior à taxa com que as requisições
são enviadas ao sistema.
![Page 14: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/14.jpg)
PARTE 2: Metodologia de um Teste de
Desempenho
14
![Page 15: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/15.jpg)
Visão Geral
15
Sistema
?
?
?
Gerador de Carga
!
!
!
![Page 16: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/16.jpg)
Processo de Testes: Etapa 0
16
A etapa inicial é entender os objetivos dos testes• É interessante saber como o sistema se comporta com a
carga atual?• É interessante saber qual a carga máxima que o sistema
suporta?• É interessante conhecer e apontar os gargalos?• Entender qual o sistema a ser testado e a arquitetura do
ambiente.• Qual o limite de tempo de resposta aceitável? (6
segundos).
![Page 17: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/17.jpg)
Processo de Testes: Etapa 0
17
Onde instalar os geradores de carga?• Na mesma rede do sistema• Na mesma rede onde os clientes estarão
Meio de acesso
![Page 18: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/18.jpg)
Processo de Testes: Etapa 0
18
Testar a aplicação do cliente?• Testar o desempenho em browsers diferentes?• Testar o desempenho na aplicação cliente (frontend)?• Testar somente os servidores?
![Page 19: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/19.jpg)
Processo de Teste
19
![Page 20: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/20.jpg)
Configuração do Ambiente
Configurar o sistema que será testado Configurar as máquinas que irão gerar a carga Configurar o monitoramento do ambiente
• O que deve ser monitorado?
20
![Page 21: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/21.jpg)
Monitoramento do sistema
21
Métricas Sistema Operacional (Todas as máquinas)
• Utilização CPU, memória, Swap, disco, rede, etc.• /proc, perfmon, vmstat, etc.
![Page 22: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/22.jpg)
Monitoramento do sistema
22
• Ex: Utilização CPU
![Page 23: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/23.jpg)
Monitoramento do sistema
23
Métricas Banco de Dados• Tempo ocupado, tempo execução médio por query, locks,
leituras físicas e lógicas, etc.• Relatório AWR, etc.
![Page 24: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/24.jpg)
Monitoramento do sistema
24
Ex: Relatório AWR (Oracle)
![Page 25: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/25.jpg)
Monitoramento do sistema
25
Profiling (Servidor de aplicação)
• Tempo de execução por método, tempo de execução em CPU por método, memória consumida por classe, etc.
• VisualVM, RedGate Ants, etc.
![Page 26: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/26.jpg)
Monitoramento do sistema
26
Ex: VisualVM (Java)
![Page 27: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/27.jpg)
Monitoramento do sistema
Há ferramentas que facilitam o monitoramento do sistema:• New Relic
• Integra profiling e monitoramento de métricas do sistema operacional.
• Cacti•Monitoramento de métricas do SO.
• Up.time•Monitoramento de métricas do SO.
27
![Page 28: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/28.jpg)
Modelagem
28
Entender o comportamento dos usuários que se deseja simular (Caracterização)
Criar os scripts para simular as transações de interesse
![Page 29: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/29.jpg)
Modelagem: Caracterização
29
Quantos usuários simultâneos o sistema terá/tem na média? E no momento de pico? 100 usuários. Pico de 300.
Qual a demanda estimada para o futuro? Espera-se um aumento de 50% nos acessos em 1 ano
Quais as transações no sistema que são mais relevantes? Busca por produto e checkout.
Qual a taxa de transações de cada categoria? 200 buscas por minuto, 20 checkouts por minuto.
![Page 30: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/30.jpg)
Modelagem: Caracterização
30
Os dados são obtidos geralmente de duas maneiras• Estudo dos logs dos servidores• Relatórios gerenciais contendo essas informações
![Page 31: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/31.jpg)
Modelagem: Caracterização
31
Exemplo log Apache
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /index.html HTTP/1.0" 200 2326127.0.0.1 - frank [10/Oct/2000:13:56:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326192.168.0.1 - paulo [10/Oct/2000:14:06:36 -0700] "GET /checkout.php HTTP/1.0" 200 2326
![Page 32: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/32.jpg)
Modelagem: Scripts
32
Criar scripts para as operações levantadas na caracterização;
Configurar a carga planejada para cada script;
Geralmente os geradores de carga possuem a funcionalidade de criar scripts. Ex: Jmeter, Microfocus SilkPerformer, etc.
![Page 33: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/33.jpg)
Modelagem: Scripts
33
Exemplo: JMeter
![Page 34: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/34.jpg)
Execução dos testes
34
• Gerador de carga • Dispara a carga definida nos scripts criados• Captura as métricas do cliente (i.e. tempo de
resposta, vazão, etc)
• Monitoramento do sistema encontra-se ativo
• A execução gera uma massa de dados que será analisada para a geração do relatório final
![Page 35: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/35.jpg)
Execução dos testes
35
Ferramentas• Jmeter
• Gratuita. Em alguns casos é necessário codificar parte do teste. Menor suporte a tecnologias, como RMI, ajax, silverlight, etc.
• Httperf• Gratuita. Somente para testar get a um conjunto de páginas.
• Microfocus SilkPerformer• Paga. Ainda é preciso codificar partes dos testes em alguns
momentos. Suporta diversas tecnologias mais recentes.• GOMEZ
• Paga. Geração de carga a partir da nuvem. A ferramenta é capaz de monitorar o sistema, inclusive, com profiling.
![Page 36: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/36.jpg)
Relatório Final
36
A partir da massa de dados gerados pela execução, busca responder:• Sistema suporta a carga esperada?• Qual a carga máxima que o sistema suportou?• Ocorreram falhas ou queda no sistema com o
aumento na carga?• Quais os gargalos e o que pode ser feito para
melhorar a vazão?
![Page 37: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/37.jpg)
PARTE 3: Cenário atual, erros comuns e
considerações finais
37
![Page 38: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/38.jpg)
Cenário Atual
38
• Geralmente os testes são feitos no ambiente de homologação
• Geralmente utiliza-se o Jmeter como gerador de carga
![Page 39: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/39.jpg)
Erros comuns
39
• Uso de ferramenta inadequada.
• Não monitorar todo o ambiente. • Desconfie do “Isso não é um problema”.
• Não conhecer o ambiente. • Conheça o ambiente a ser testado antes de planejar
os testes.
![Page 40: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/40.jpg)
Erros comuns
40
• Não caracterizar o sistema.
• Não conhecer os objetivos dos testes.
• Testar depois do sistema estar em produção.
• Não testar no ambiente de produção.
• Somente executar cada teste uma única vez.
![Page 41: Introdução aos Testes de Desempenho](https://reader035.vdocuments.net/reader035/viewer/2022062513/55632be6d8b42a5c7b8b48ad/html5/thumbnails/41.jpg)
Considerações finais
41
• Os testes de desempenho são ferramentas poderosas para entender o comportamento de um sistema e prever sua capacidade máxima.
• A execução e planejamento podem ser complicados e devem ser feitos de maneira cuidadosa.