introdução aos testes de desempenho

41
Introdução aos Testes de Desempenho César Fernandes Teixeira [email protected]

Upload: crowdtest

Post on 25-May-2015

3.535 views

Category:

Technology


1 download

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 1: Introdução aos Testes de Desempenho

Introdução aos Testes de Desempenho César Fernandes Teixeira

[email protected]

Page 2: Introdução aos Testes de Desempenho

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

PARTE 1: Introdução e Motivação

3

Page 4: Introdução aos Testes de Desempenho

Motivação

4

Servidor e-commerce

?!

Page 5: Introdução aos Testes de Desempenho

Motivação

5

Servidor e-commerce

?

?

?

Page 6: Introdução aos Testes de Desempenho

Motivação Sistema de Seleção Unificada (Sisu) - 2011

6

Page 7: Introdução aos Testes de Desempenho

Motivação Amazon - 2008

7

Fonte: http://idgnow.uol.com.br

Page 8: Introdução aos Testes de Desempenho

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

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

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

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

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

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

PARTE 2: Metodologia de um Teste de

Desempenho

14

Page 15: Introdução aos Testes de Desempenho

Visão Geral

15

Sistema

?

?

?

Gerador de Carga

!

!

!

Page 16: Introdução aos Testes de Desempenho

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

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

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

Processo de Teste

19

Page 20: Introdução aos Testes de Desempenho

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

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

Monitoramento do sistema

22

• Ex: Utilização CPU

Page 23: Introdução aos Testes de Desempenho

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

Monitoramento do sistema

24

Ex: Relatório AWR (Oracle)

Page 25: Introdução aos Testes de Desempenho

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

Monitoramento do sistema

26

Ex: VisualVM (Java)

Page 27: Introdução aos Testes de Desempenho

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

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

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

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

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

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

Modelagem: Scripts

33

Exemplo: JMeter

Page 34: Introdução aos Testes de Desempenho

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

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

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

PARTE 3: Cenário atual, erros comuns e

considerações finais

37

Page 38: Introdução aos Testes de Desempenho

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

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

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

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.