Upload
evandro-grezeli
View
79
Download
2
Embed Size (px)
Citation preview
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
Falando de testes de desempenho
Evandro Grezeli
Maio/2015
Sobre
Entusiasta em assuntos que tangem a desempenho de aplicação
10 anos de experiência com desenvolvimento de software Java e otimização de sistemas em baixa plataforma
Manutenção e desenvolvimento de componentes para o Jmeter
Colunista no site http://jmeter.com.br
Especialista em capacidade e desempenho na maior companhia de meios de pagamento do Brasil
Agenda
Parte 1: Teoria e Conceitos
Importância de testes de desempenho
O conceito do tempo de resposta
Reconhecimento do Ambiente
Tipos de testes de desempenho
Metodologia e Planejamento
Parte 2: Caixa de Ferramentas
Teste de Desempenho:Cenário Antigo
No passado, a tarefa de efetuar testes em software era considerada secundária
Os testes eram feitos pelos desenvolvedores
Os usuários eram envolvidos para aprovar o resultado dos testes ou para gerar massa de dados
Teste de Desempenho: Cenário Atual
Empresas tem visto a atividade de testes como prioritária para a maior qualidade de suas aplicações
Não testar o software pode gerar perdas financeiras e de imagem irreparáveis
Complexidade das aplicações, que estão cada vez mais distribuídas
Teste de Desempenho:Sua importância
Newport Group diz:
52% das aplicações Web falham ao escalar
60% delas não possuem um ciclo formal de teste de desempenho
25% das que são testadas utilizam alguma ferramenta específica
IDC Research diz:
Menos do que 20% de aplicações J2EE atendem o SLA esperado em ambiente produtivo;
Teste de Desempenho:Sua importância
Processo de avaliar um sistema ou um componente de um sistema para verificar se ele satisfaz os requisitos especificados ou identificar diferenças entre resultados esperados e obtidos” . [ANSI/IEEE Standard 729, 1983]
Teste de Software é o processo com o intuito de encontrar erros em um programa ou sistema em execução [MYERS, 2004]
Teste de Desempenho:Sua importância
Garantir um tempo de resposta dentro dos padrões aceitáveis para evitar o abandono do site ou aplicação em função de tempos de respostas inaceitáveis.
Garantir o uptime (alta disponibilidade) de aplicações e serviços de missão crítica.
Evitar o fracasso dos projetos em virtude de problemas de desempenho e escalabilidade.
Garantir os investimentos de TI por meio de previsão da escalabilidade e performance da aplicação.
Teste de Desempenho:O conceito do tempo de resposta
Mas afinal, o que é o tempo de resposta???
Tempo da rede Tempo do Serviço
LatênciaTempo da
transmissãoTempo do Hardware
Tempo da Aplicação
CPU Disco LAN CPU Disco LAN
Tempo de resposta
Daniel A. MEnsacé, Virgilio A. F. Almeida: Planejamento de Capacidade para serviços na Web: Métricas, modelos e métodos. (2003)
Teste de Desempenho:O conceito do tempo de resposta
Conceitos diferentes de tempo de resposta ao longo dos anos
Fonte Response time in man-computer conversational transactions, Miller, R. B. (1968) Zona Research, 1999: 8-Seconds rule,
através de estatísticas aponta um estudo de tempo de desistência do usuário
Fonte How Fast does a website need to be? Scott Barber, 2004
Akamai, 09/2009: 47% das pessoas esperam que uma página na internet abra em até 2 segundos, 40% abandona a página caso não abra em até 3 segundos
NÃO HÁ UM CONSENSO!
Teste de Desempenho:O conceito do tempo de resposta
Maneira mais efetiva de definir o que é um bom tempo de resposta é medindo o throughput esperado.
Throughput: Medida de trabalho com sucesso(processado) por unidade de tempo
Exemplos:
• Quantidade de clientes por minuto;
• Quantidade de páginas abertas por segundo;
• Quantidade de bytes transferidos entre o servidor e o cliente por segundo;
• Quantidade de requisições processadas pelo servidor por segundo;
Teste de Desempenho:Reconhecimento do ambiente
Mapear o ambiente a ser testado auxilia a identificar: Potencias pontos de gargalos;
“Áreas cegas”
Caminho complete da transação (estrutura)
“É bem simples, uma camada de apresentação, processa na aplicação e persiste no banco de dados...”
Camada de Apresentação
Camada de Aplicação
Camada de Banco de
Dados
Gargalo de desempenho pode estar em qualquer lugar!!!
Teste de Desempenho:Reconhecimento do ambiente
Teste de Desempenho:Tipos de testes
Levar até o limite a infraestrutura e ou o sistema
Teste de Stress
Executar uma carga constante conhecida
para avaliar infraestrutura e ou
sistema
Teste de Carga
Executar uma carga muitas vezes maior do que a média e em pequeno espaços de
tempo
Teste de Pico
Executar uma carga constante conhecida por um período maior
do que o habitual
Endurance test
Levar até o limite uma única camada da
aplicação, medindo sua vazão e seu
tempo de resposta
Component test
TESTE DE DESEMPENHO
Teste de Desempenho:Metodologia
Definir os objetivos do teste
Entender o ambiente
Especificar o plano de teste
Definir a carga de trabalho do teste
Configurar o ambiente de teste
Executar os testes
Analisar os resultados do teste
Teste de Desempenho:Metodologia
Roteiro inicial de Perguntas a se pensar:
1)Qual a quantidade de usuários concorrentes esperados em situações normais e de pico?
2)Quais são as páginas mais visitadas ou tarefas comumente realizadas pelos usuários?
3)Qual o tempo de resposta aceitável para tais tarefas em situações normais e de pico?
4)Qual a carga de usuários máxima aceitável antes que o tempo de resposta degrade a um ponto inaceitável?
Teste de Desempenho:Metodologia
Workload (também conhecido como session, activity profile ou Web Site Usage Signature) determina como os usuários utilizam a aplicação.
Por meio do workload, podemos obter o seguinte tipo de informação a respeito da utilização da aplicação:
O tipo de páginas visitadas;
O tempo gasto em cada página;
Os caminhos percorridos pelos usuários;
Percentual de abandono da aplicação;
Teste de Desempenho:Metodologia
Exemplo de definição de workload para um cenário de teste
HomePage
Pesquisa por nome (30%)
Pesquisa por best seller (50%)
Pesquisa por ficção (20%)
Ajuda (10%)
Review (25%)
Enquete (5%)
Compra (75%)
Sair (25%)
Teste de Desempenho:Usuários virtuais
Realizar um teste de desempenho com usuários reais
Difícil de coordenar Atividades não são repetítiveis Suscetíveis a erros Não escalável Exige espaçao e infra-estrutura
Relatórios/Métricas não são confiáveis
Testadores de Verdade
Teste de Desempenho:Usuários virtuais
Realizar um teste de desempenho com ferramentas específicas
Fácil de coordenar Atividades são repetítiveis Error-Free Escalável Não Exige espaçao e infra-estrutura*
Relatórios/Métricas são confiáveis
Virtual Users
Teste de Desempenho:Tempo de pensar
User Sleep Time (think time) faz os Virtual Users se comportarem como se fossem usuários reais. Por meio do User Sleep time, são injetados atrasos e paradas variáveis nos testes para simular cargas de utilização mais realistas.
Teste de Desempenho:Tempo de pensar
Durante a definição do User Sleep Time, devemos considerar que, mesmo os usuários reais navegam com maior ou menor velocidade de acordo com a sua familiaridade com o site.
Usuário Lento
Servidor
Usuário Rápido
Teste de Desempenho:Caixa de Ferramentas
O que o Mercado oferece?
Critérios Gartner: Gerenciamento de testes, criação de testes automatizados para desempenho, automação de testes funcionais e de regressão
Teste de Desempenho:Caixa de Ferramentas
Qual é a melhor para mim? Entender a necessidade do atual cenário; Existirá evolução no processo de testes; Calendário anual de testes; Tempo x Esforço; Orçamento para demandas;
Falando de Testes de Desempenho
Evandro Grezeli
[email protected]://br.linkedin.com/pub/evandro-grezeli/6/b88/719/en
Teste de Desempenho:Para saber mais...
Referência bibliográficas:
Myers, Glenford J. The Art of Software Testing. 2ª ed. New Jersey: John Wiley & Sons Inc, 2004.
Bartié, Alexandre. Garantia de Qualidade de Software. 3ª ed. São Paulo: Campus, 2002.
Pressman, Roger S. Engenharia de Software. 6ª ed. São Paulo: Pearson Makron Books, 2005.
Menascé, Daniel A., Almeida, Virgilio A. F. Planejamento de Capacidade para serviços na Web: Métricas, modelos e métodos. São Paulo: Campus Elsevier, 2003.
Miller, Robert B. Response time in man-computer conversational transactions. New York: International Business Machine Corporation, in press.
Almeida, Virgilio, Menascé, Daniel A., Dowdy, Larry W. Performance by Design: Computer Capacity Planning by Example. New Jersey: Prentice Hall, 2004.
Meier, J. D. et al. Performance Testing Guidance for Web Applications. Redmond: Microsoft Press, 2007.
Teste de Desempenho:Para saber mais...
Referência web:
Jmeter BR
http://www.jmeter.com.br
Performance Project Planning
http://www.wilsonmar.com/perfplan.aspx
Memory leaks in enterprise java applications
http://www.javaworld.com/javaworld/jw-03-2006/jw-0313-leak.html
Introducing Microsoft Web Application Stress Tool
http://www1bpt.bridgeport.edu/sed/projects/cs597/Fall_2002/jishah/web_application_stress.htm
Load testing web applications using microsoft web application stress tool
http://www.west-wind.com/presentations/webstress/webstress.htm
FAQ – Performance & Load Testing
http://www.sqaforums.com/showflat.php?Cat=0&Number=41861&an=0&page=0
User Experience, not metrics
http://www.ibm.com/developerworks/rational/library/4228.html
Top 25+ Reasons Web Applications don’t scale
http://whitepapers.techrepublic.com.com/abstract.aspx?docid=38871