31
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. Falando de testes de desempenho Evandro Grezeli [email protected] Maio/2015

Cmg falando de testes de desempenho

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

[email protected]

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

Parte 1: Teoria e Conceitos

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

Parte 2: Caixa de Ferramentas

Teste de Desempenho:Caixa de Ferramentas

O que ela tem que oferecer?

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

O que a comunidade oferece?

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