A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aluno: Diego Rangel da Silva

Apresentações semelhantes


Apresentação em tema: "Aluno: Diego Rangel da Silva"— Transcrição da apresentação:

1 Aluno: Diego Rangel da Silva
Xdebug Profiler de Sistema PHP Teste de desempenho É idealizado para testar o desempenho de run-time do software dentro do contexto de um sistema integrado. O teste de desempenho ocorre ao longo de todos os passos do processo de teste. Aluno: Diego Rangel da Silva

2 Análise Estática e Análise Dinâmica (Performance)
Análise Estática: não envolve a execução propriamente dita do produto. Pode e deve ser aplicada em qualquer artefato intermediário. Ex.: Revisões técnicas, inspeção de código. Análise Dinâmica: envolve a execução do produto. Ex.: Testes de Software, Simulação. Fonte: (Maldonado e Fabbri em (Rocha et al., 2001)). Não requerem a execução propriamente dita do produto. Podem ser aplicadas em qualquer produto intermediário do processo de desenvolvimento. Documento de requisitos, diagramas de projeto, código-fonte, planos de teste, .. As revisões são o exemplo mais clássico de análise estática. Inspeção Walkthrough Peer Review Requerem a execução do produto. Código ou quaisquer outras representações executáveis do sistema Exemplos de atividades que constituem uma análise dinâmica do produto: Teste de Software Simulação

3 Porque Fazer Análise de Performance(Desempenho)?
O que é a análise de performance? A análise de performance é um teste feito no sistema para determinar e validar a sua velocidade, escalabilidade, e estabilidade sobre execução. (Scott Barber, 2007) Velocidade: a aplicação responde rápido? Tem alguma limitação? Escalabilidade: quantos usuários suporta? Quantos dados eu consigo armazenar? Estabilidade: vai falhar sobre alta carga? Se ocorrer um Downtime? A análise de performance é um teste feito no sistema para determinar a sua velocidade, escalabilidade, e estabilidade sobre execução. Velocidade: Expectativa do usuário – Experiência – Psicologia – Uso Limitações do Sistema – Hardware – Rede – Software Custo – Velocidade pode ser muito cara! Escalabilidade Quantos usuários… – antes de ficar “lento”? – antes de parar de funcionar? – conseguirá manter? – são esperados? – são esperados antes do próximo upgrade? Quantos dados eu consigo armazenar? – Capacidade do Banco de Dados – Capacidade do servidor de arquivos – Capacidade de Backup – Crescimento dos dados Estabilidade O que acontece se... – Tem mais usuários do que esperamos? – todos os usuários fazem a mesma coisa? – um usuário é desconectado? – acontece um ataque de negação de serviço? – o servidor web cai? – são pedidas muitas ordens para a mesma coisa (produto)? Confiança Se você sabe como o desempenho do sistema é… – Você pode medir o risco. – Voce pode tomar decisoes direcionadas. – Você pode planejar para o futuro. – Você pode dormir na noite anterior a colocar o sistema em produção. Validação SLA? Tempo de Resposta? Teste Até onde o sistema aguenta? Qual o comportamento? Engenharia Engloba os outros conceitos e vai além Causa raiz? Como melhorar? Onde está o problema? Testing: Apenas testa e identifica o que está acontecendo (comportamento) Verifica até onde o sistema pode ir Engineering: Vai além do testing Qual a causa raiz do problema? Como concertar e melhorar o desempenho do sistema? É um processo interativo Carga: carga esperada (média) do dia-a-dia Stress: alta carga (pior horário do dia) Longa Duração: carga esperada (identificar vazamento de memória) Pico: pico máximo de utilização Teste de Stress: Observa o sistema em situações críticas Podem ser observados: Vazamento de informações Capacidade de recuperação Custos relacionados a atividade de testes de desempenho e estresse: Preparação do ambiente Execução dos testes Avaliação dos resultados Requisitos de desempenho: Tempo de resposta Throughput Uso de recursos de máquina

4 Categorias de Teste de Performance
Teste de Carga Teste de Stress Teste de Performance: Para determinar ou validar a velocidade,a escalabilidade e a estabilidade. Teste de Carga: Para verificar o comportamento da aplicação sobre uma carga normal. Teste de Stress: Determinar ou validar o comportamento da aplicação quando ela está com uma carga além da normal. Testes de Performance, Carga e Stress Testes de Performance são geralmente dsecritos como pertencendo as três seguintes categorias: Teste de Performance: Este tipo de teste determina ou valida a velocidade, escalabilidade, e estabilidade características de um sistema sobre teste. O teste se preocupa em atingir tempos de resposta, throughput, e níveis de utilização de recursos que reune os objetivos de performance para o projeto ou produto. Teste de Carga: Esta categoria de teste de performance foca na determinação ou validação de características de performance do sistema ou aplicação sobre uso quando está sujeita a cargas de trabalho e volumes de carga antecipados durante as operações de produção. A execução de testes de Carga , em especial se forem previstos e executados numa fase inicial do desenvolvimento, vão garantir que o sistema irá suportar a carga prevista, verificar a sua robustez através de uma carga acima da prevista, assim como identificar o seu limite de capacidade com uma resposta considerada aceitável, em função do sistema e infra-estrutura em causa. No teste de carga, o sistema é testado de acordo com a carga esperada (média) do dia-a-dia. Teste de Stress: Esta categoria de teste de performance foca na determinação ou validação de características de performance do sistema ou aplicação sobre uso quando estão sujeitos a condições além das prevista durante as operações de produção.Testes de stress também incluem testes deixando a aplicação em condições desgastantes, como no limite de memória, com espaço insuficiente em disco, ou com falha no servidor. Estes testes são feitos para determinar sobre que condições uma aplicação irá falhar, como ela irá falhar, e que indicadores podem ser monitorados para avisar uma falha eminente. No teste de stress, o sistema é testado utilizando uma carga alta superando a carga esperada (média) do dia-a-dia.

5 Processo de Análise de Desempenho
Engajamento: Para que testar? Quantos usuários? Qual SLA? Um Acordo de Nível de Serviço (ANS ou SLA, do inglês Service Level Agreement) é a parte de contrato de serviços entre duas ou mais entidades no qual o nível da prestação de serviço é definido formalmente. Na prática, o termo é usado no contexto de tempo de entregas de um serviço ou de um desempenho específico. Performance. Ex.: o sistema deverá processar a folha de pagamento em no máximo 2 segundos a cada 10 servidores processados. Quais as transações críticas? Plano: Baseado no engajamento, define-se os tipos de testes que ocorrerão Aprofundamento dos requisitos Já existem dados de produção que podem ser utilizados como estimativas? Schedule: Define-se os tempos de cada atividade subsequente Preparação do Código: Scripts automatizados Código que contata EJBs, roda consultas em banco, dispara processos Posta mensagens Simula o comportamento do usuário Preparação de Dados: É necessária a criação de dados? De que tipo? Como criar? Criação antecede o teste... Preparação do Processo de Limpeza: Dados são invalidados depois de utilizados? Precisa-se limpar depois de cada execução? Conjunto de dados é limitado? Preparação do Ambiente: Em que hardware? Configuração de software Configuração de rede Devemos ter um ambiente similar (comparável) ao de produção Execução: Os testes planejados são executados São identificados os gargalos do sistema (DB? SO? Web? App?) Se os SLA não são atingidos ou o tempo de resposta é ruim ou inaceitável para os usuários, corrige-se os gargalos Re-execução e correção (tunning) do sistema são feitos até atingir o resultado esperado Relatórios: Relatórios de utilização esperada de recursos Tempos de resposta dos usuários Principais achados Principais melhorias Monitoramento de Produção: Identificar se o comportamento de produção está dentro do cenário previsto no teste O tempo de resposta está aceitável? Existe alguma camada que está sobre-carregada? Fechamento do Processo: Se não existem problemas em produção, finaliza-se o processo de performance FACCHINI, G. . Introdução ao Teste de Performance (Conferência ou palestra). 5

6 Divisão do Processo em Subcamadas
Envisioning: Previsão Planejamento: FACCHINI, G. . Introdução ao Teste de Performance (Conferência ou palestra). 6

7 Ferramentas Pagas Gratuitas HP – Loadrunner
IBM – Rational Performance Tester Borland – SilkPerformer Gratuitas JMeter OpenSTA WebLoad Xdebug 7

8 Profiling com Xdebug O Xdebug é um plugin e sua instalação e configuração é feita através de uma IDE compatível com a linguagem PHP. Exemplo: NetBeans, Eclipse, Zend Studio,etc. Com ele você pode gerar arquivos cachegrind que contem informações da análise de desempenho. Você precisa de uma ferramenta para ler estes arquivos. Exemplos: WinCacheGrind, KCacheGrind, webgrind. Esta ferramentas permitem você analisar o script em execução. Xdebug is a very powerful extension with a ton of great features. Xdebug é uma extensão muito poderosa

9 WinCacheGrind(Windows)
Cachegrind é um cache profiler disponível no PHP e em diversas outras linguagens. Ele faz simulações detalhadas do cache do processador, e o mais legal de tudo: mostra quanto cada linha de código carregou o processador em milisegundos, ou %. Ele pode mostrar informações por função, por  módulo ou um resumo completo do programa. Habilitando o cachegrind o programa pode ficar de 20 a 100 vezes mais lento, por isso vamos deixar pra brincar com ele só nos ambientes de teste/desenvolvimento, ok?

10 KCacheGrind Screenshot(Linux)

11 Resultados do Teste Tempos de resposta Capacidade de crescimento
Comparação entre hardware/software/configuração Relatórios indicam pontos de melhoria 11

12 Perguntas Respondidas
Qual hardware necessário? Qual a configuração necessária? Qual sistema operacional? Qual banco? Podemos crescer? Quanto? Qual o tempo de resposta? Quais são nossos gargalos? 12

13 1º Artigo Autores: Yu. V. Shabatura, Cand. Sc. (Eng); I. V. Shtelmakh; M. Yu. Shabatura Título: New Method For Improvement Software Performance In Computing Systems By Automatical Searching of «BOTTLENECKS» Periódico: Informational Technologies And Computer Enginnering Ano: 2009

14 Introdução O objetivo do autor é otimizar o tempo de execução de um sistema resolvendo os problemas de busca de gargalo de forma mais eficiente. Na Engenharia existe um fenômeno conhecido como gargalo, que limita a capacidade de produtividade de um sistema devido a presença de alguns elementos. Na Engenharia existe um fenômeno conhecido como gargalo, que limita a capacidade de produtividade de um sistema devido a presença de alguns elementos. A busca por gargalos do sistema é feita através da análise de desempenho.

15 Gráfico de chamadas

16 Esquema de Sistema Num sistema de computação normal, os usuários ganham performance através do uso de queries. Neste esquema da figura é adicionada uma unidade, que permite ao administrador otimiza o seu sistema. A análise é feita usando a ferramenta Xdebug, com ela é possível obter dados referentes ao tempo de execução do sistema. uch information is obtained in the form of data array F , each element of which contains information on the duration of the subprogramme, its name and location in the file. This array is easily transformed into a graph of calls G , on the basis of which the search for multiple sub-programmes«bottlenecks» (7) and their further optimization is performed.

17 Análise de Resultados Para realizar a otimização da busca por gargalos. Os resultados encontrados na análise são filtrados. São retirados as chamadas a função que atingiram um tempo menor que o limite determinado abaixo:

18 Resultado Baseados no resultado encontrado pelo Xdebug o sistema constroi um gráfico com as chamadas aos sub-programas da aplicação de forma hierárquica drop-down. A cor de cada nó desta lista é marcada de acordo com a influência da duração de execução do programa.

19 Conclusão do Artigo A estruturação e suporte a algoritmo para construção de sistema automatizado teve como objetivo otimizar a eficiência de sistemas de computação através da redução da influência de botttlenecks. Como resultado do estudo experimental, o sistema mostrou a habilidade de visualizar o processo de execução do programa e otimizar a sua performance.

20 Conclusão Teste de Desempenho é importante para:
Identificar utilização do sistema Verificar tempos de resposta Aperfeiçoar o ambiente/programa Existem diversas ferramentas realizar esta análise, uma delas é a Xdebug. A experiência do usuário (cliente) está intimamente ligada com o teste de desempenho 20

21 Referências Patterns & Practices -Performance Testing Guidance for Web Applications (Autor: Scott Barber) FACCHINI, G. . Introdução ao Teste de Performance (Apresentação de Trabalho/Conferência ou palestra). Yu. V. Shabatura, Cand. Sc. (Eng); I. V. Shtelmakh; M. Yu. Shabatura New Method For Improvement Software Performance In Computing Systems By Automatical Searching of «BOTTLENECKS» Informational Technologies And Computer Enginnering Molyneaux Molyneaux, I. (2009). The Art of Application Performance Testing: Help for Programmers and Quality Assurance. O’ ’Reilly Media. 1a edição.

22 Quais as transações críticas?
Engajamento Para que testar? Quantos usuários? Qual SLA? Quais as transações críticas? Nesta atividade são feitos questionamentos para obter dados prévios que auxiliaram na análise. Perguntas como: Para que testar o sistema? Qual o motivo, a causa de você executar este teste? Quantos usuários usam o sistema? Qual é o SLA usado pro sistema? No caso SLA é um contrato que tem informações relacionadas a tempo de entrega do sistema e a performance do sistema. Ex: Tem um sistema que em determinado momento gera uma folha de pagamento de um funcionário. No contrato SLA o cliente que fez o pedido do sistema pode colocar que o retorno da função de folha de pagamento precisa ser entre 2 e 6 segundos. Voltar

23 Plano de Perfomance Baseado na atividade anterior, define-se os tipos
de testes que ocorrerão Aprofundamento dos requisitos Já existem dados de produção que podem ser utilizados como estimativas? Voltar

24 Schedule(Programação)
Define-se os tempos de cada atividade subseqüente horário Voltar

25 Preparação do Código Scripts automatizados
Código que roda consultas em banco, dispara processos Voltar

26 Preparação de Dados É necessária a criação de dados? De que tipo?
Como criar? Criação antecede o teste... Voltar

27 Preparação do Processo de Limpeza
Dados são invalidados depois de utilizados? Precisa limpar depois de cada execução? Preencher valores ausentes? Preencher valores nulos, tratar ruídos, identificar ou remover outliers e resolver inconsistências Voltar

28 Preparação do Ambiente
Em que hardware? Configuração de software Configuração de rede Devemos ter um ambiente similar (comparável) ao de produção Voltar

29 Execução Os testes planejados são executados
São identificados os gargalos do sistema (DB? SO? Web? App?) Se os SLA não são atingidos ou o tempo de resposta é ruim ou inaceitável para os usuários, corrige-se os gargalos Re-execução e correção (tunning) do sistema são feitos até atingir o resultado esperado Execução de testes: Envolve o uso de ferramentas que simulam vários usuários virtuais Características que devem ser analisadas: Compatibilidade com alvo do teste Custo/Benefício Tempo de aprendizado Voltar

30 Relatórios Relatórios de utilização esperada de recursos
Tempos de resposta dos usuários Principais melhorias Voltar

31 Monitoramento de Produção
Identificar se o comportamento de produção está dentro do cenário previsto no teste O tempo de resposta está aceitável? Existe alguma camada que está sobre-carregada? Voltar

32 Fechamento do Processo
Se não existem problemas em produção, finaliza-se o processo de performance Voltar


Carregar ppt "Aluno: Diego Rangel da Silva"

Apresentações semelhantes


Anúncios Google