Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a esta recomendação da lista de verificação de Eficiência de Desempenho do Azure Well-Architected Framework:
| PE:06 | Desempenho do teste. Execute testes regulares em um ambiente que corresponda ao ambiente de produção. Compare os resultados com as metas de desempenho e o benchmark de desempenho. |
|---|
Este guia descreve as recomendações para testes. O teste de desempenho ajuda a avaliar a funcionalidade de uma carga de trabalho em vários cenários. Envolve testar o tempo de resposta, a taxa de transferência, a utilização de recursos e a estabilidade da carga de trabalho para ajudar a garantir que a carga de trabalho atenda aos seus requisitos de desempenho.
Os testes ajudam a evitar problemas de desempenho. Ele também ajuda a garantir que sua carga de trabalho atenda aos contratos de nível de serviço. Sem testes de desempenho, uma carga de trabalho pode sofrer degradações de desempenho que geralmente podem ser evitadas. O desempenho da carga de trabalho pode desviar-se das metas de desempenho e das linhas de base estabelecidas.
Definições
| Term | Definition |
|---|---|
| Teste de caos | Um teste de desempenho que visa testar a resiliência e a estabilidade de um sistema, introduzindo deliberadamente falhas ou interrupções aleatórias e imprevisíveis. |
| Ensaio de carga | Um teste de desempenho que mede o desempenho do sistema sob carga típica e pesada. |
| Linha de base de desempenho | Um conjunto de métricas que representam o comportamento de uma carga de trabalho em condições normais, conforme validado por testes. |
| Teste de esforço | Um teste de desempenho que sobrecarrega um sistema até que ele quebre. |
| Teste sintético | Um teste de desempenho que simula solicitações do usuário em um aplicativo. |
Os testes de desempenho ajudam a reunir dados mensuráveis sobre uma carga de trabalho. Quando você executa testes com antecedência suficiente, eles também ajudam a criar cargas de trabalho com as especificações certas. Você deve realizar testes de desempenho o mais cedo possível no ciclo de vida de desenvolvimento de software. Os testes iniciais permitem detetar e corrigir problemas de desempenho no início do desenvolvimento. Você pode usar uma prova de conceito (POC) se o código de produção não estiver pronto.
Preparar o teste
A preparação de testes de desempenho refere-se à configuração e organização dos recursos, configurações e cenários de teste de que você precisa para conduzir testes de desempenho de forma eficaz.
Definir critérios de aceitação
Os critérios de aceitação especificam os requisitos de desempenho que uma carga de trabalho precisa atender para ser considerada aceitável ou bem-sucedida. Definir critérios alinhados com as metas de desempenho.
Rever as metas de desempenho. As metas de desempenho definem o nível de desempenho desejado para sua carga de trabalho. Analise as metas de desempenho estabelecidas para a carga de trabalho. As metas de desempenho são métricas que podem envolver tempo de resposta, taxa de transferência, utilização de recursos ou quaisquer outros indicadores de desempenho relevantes. Por exemplo, você pode ter um alvo para o tempo de resposta abaixo de um determinado limite, como menos de 2 segundos.
Definir critérios de aceitação. Traduza as metas de desempenho em critérios de aceitação específicos que você pode usar para avaliar o desempenho de sua carga de trabalho. Por exemplo, suponha que sua meta de desempenho para o tempo de resposta seja de 2 segundos ou menos. Seu critério de aceitação pode ser O tempo médio de resposta da carga de trabalho deve ser inferior a 2 segundos. Use esses critérios de aceitação para determinar se a carga de trabalho atende ao nível de desempenho desejado.
Ao definir critérios de aceitação, é importante se concentrar nos usuários e em suas expectativas. Os critérios de aceitação ajudam a garantir que o trabalho entregue atenda às necessidades e requisitos do usuário. Tenha em mente as seguintes considerações para incorporar a perspetiva do usuário nos critérios de aceitação:
Requisitos do usuário: entenda as necessidades e metas do usuário para a carga de trabalho. Considere o desempenho da carga de trabalho para satisfazer esses requisitos.
Experiência do usuário: defina critérios de aceitação que capturem a experiência desejada do usuário. Inclua fatores como tempo de resposta, usabilidade, acessibilidade e satisfação geral.
Requisitos funcionais: abordam a funcionalidade específica que o usuário espera ver na carga de trabalho. Defina critérios de aceitação em torno desses requisitos funcionais para ajudar a garantir que eles sejam atendidos.
Casos de uso: considere diferentes cenários ou casos de uso que o usuário pode encontrar. Defina critérios de aceitação com base nesses casos de uso para validar o desempenho da carga de trabalho em situações reais.
Defina limites de aceitação. Determine os limites dentro dos critérios de aceitação que indicam se a carga de trabalho atende às metas de desempenho. Esses limites definem o intervalo aceitável de desempenho para cada métrica. Por exemplo, suponha que o critério de aceitação para o tempo de resposta seja inferior a 2 segundos. Você pode definir o limite em 2,5 segundos. Este nível indica que qualquer tempo de resposta superior a 2,5 segundos é considerado um problema de desempenho.
Definir critérios de aprovação. Estabeleça os critérios para determinar se a carga de trabalho passou ou falhou no teste de desempenho. Você pode definir aprovação como atender a todos os critérios de aceitação ou alcançar uma determinada porcentagem deles.
Selecione o tipo de teste
Para selecionar o tipo certo de teste de desempenho, é importante alinhá-lo com seus critérios de aceitação. Os critérios de aceitação definem as condições que precisam ser atendidas para que um requisito ou correção de bug seja considerado feito. Os testes de desempenho devem ter como objetivo verificar se uma carga de trabalho atende a esses critérios de aceitação e tem o desempenho esperado em condições especificadas. Alinhar o tipo de teste de desempenho com os critérios de aceitação ajuda a garantir que o teste se concentre em atender às expectativas de desempenho definidas pelos critérios.
Compreender os critérios de aceitação. Analise os critérios de aceitação para o requisito ou correção de bug. Os critérios definem as condições e funcionalidades específicas a cumprir.
Identifique métricas de desempenho relevantes. Com base nos critérios de aceitação, determine as métricas de desempenho que são críticas para alcançar os resultados desejados. Por exemplo, se os critérios de aceitação se concentrarem no tempo de resposta, a priorização do teste de carga pode ser apropriada.
Selecione um tipo de teste apropriado. Avalie os tipos de teste disponíveis e escolha o que melhor se alinha com as métricas de desempenho e os critérios de aceitação identificados.
A tabela a seguir fornece um exemplo de tipos de teste e seus casos de uso.
| Tipo de ensaio | Description | Caso de uso |
|---|---|---|
| Testes de carga | Simule cargas de usuário realistas para medir o desempenho da sua carga de trabalho sob as cargas de trabalho de pico esperadas. | Determina a tolerância de carga. |
| Testes de esforço | Empurre sua carga de trabalho além de seus limites normais para identificar seus pontos de interrupção e medir sua capacidade de recuperação. | Determina resiliência e robustez. |
| Teste de imersão (teste de resistência) | Execute sua carga de trabalho sob cargas altas sustentadas por um longo período para identificar degradação de desempenho, vazamentos de memória ou problemas de recursos. | Avalia a estabilidade e a fiabilidade ao longo do tempo. |
| Teste de pico | Simule aumentos repentinos na carga de usuários para avaliar como sua carga de trabalho lida com mudanças abruptas na demanda. | Mede a capacidade de dimensionar e manter o desempenho durante os períodos de pico. |
| Testes de compatibilidade | Teste o desempenho da sua carga de trabalho em várias plataformas, navegadores ou dispositivos. | Ajuda a garantir um desempenho consistente em vários ambientes. |
Priorize os tipos de teste selecionados com base nas características e requisitos da sua carga de trabalho. Considere fatores como a criticidade das métricas de desempenho, as expectativas do usuário, as prioridades de negócios e os problemas ou vulnerabilidades conhecidos.
Selecionar ferramentas de teste
Escolha as ferramentas apropriadas com base no tipo de teste de desempenho que você deseja executar. Avalie a infraestrutura, os recursos e as restrições do ambiente de teste. Escolha ferramentas de teste que ofereçam suporte aos tipos de teste desejados e forneçam os recursos necessários para monitoramento, medição, análise e emissão de relatórios.
Uma ferramenta de monitoramento de desempenho de aplicativos (APM) fornece insights profundos sobre aplicativos e é uma ferramenta de teste essencial. Ele ajuda você a rastrear transações individuais e mapear seus caminhos através de vários serviços de carga de trabalho. Após o teste, você deve usar a ferramenta APM para analisar e comparar os dados de teste com sua linha de base de desempenho.
Use ferramentas de criação de perfil para identificar gargalos de desempenho em seu código. A criação de perfil ajuda a identificar as áreas do código que consomem mais recursos e precisam de otimização. Ele fornece informações sobre o tempo de execução e o uso de memória de diferentes partes do código.
As etapas a seguir podem ajudá-lo a selecionar as ferramentas de teste apropriadas:
Identificar requisitos de teste. Comece entendendo os requisitos específicos do seu teste de desempenho. Considere vários fatores:
- O tipo de carga de trabalho
- Métricas de desempenho a serem medidas, como tempo de resposta e taxa de transferência
- A complexidade da arquitetura da carga de trabalho
- O ambiente de teste, como baseado em nuvem, local ou híbrido
Ferramentas de teste de pesquisa. Realize pesquisas para identificar ferramentas de teste de desempenho que se alinhem às suas necessidades. Considere as ferramentas comerciais e de código aberto que estão disponíveis no mercado. Procure ferramentas que ofereçam suporte aos tipos desejados de testes de desempenho, como testes de carga ou de esforço, e que forneçam recursos para medir métricas de desempenho.
Avalie os recursos da ferramenta. Avalie os recursos que cada ferramenta de teste fornece. Procure recursos como simulação de comportamento realista do usuário e escalabilidade para lidar com grandes cargas de usuários. Considere o suporte para vários protocolos e tecnologias, a integração com outras ferramentas ou estruturas de teste e os recursos de relatórios e análise.
Considere a compatibilidade e a integração. Determine a compatibilidade das ferramentas de teste com sua infraestrutura e tecnologias existentes. Certifique-se de que as ferramentas possam ser facilmente integradas ao seu ambiente de teste e possam se comunicar com a carga de trabalho necessária para monitoramento e análise.
Avalie o custo e o licenciamento. Avalie a estrutura de custos e os termos de licenciamento associados às ferramentas de teste. Considere fatores como o investimento inicial, os custos de manutenção e os custos de suporte. Considere também outros requisitos de licenciamento que dependem do número de usuários ou usuários virtuais.
Conduza um POC. Selecione algumas ferramentas que parecem ser as mais adequadas com base na sua avaliação. Conduza um POC em pequena escala para validar a usabilidade, os recursos e a eficácia das ferramentas em seu cenário de teste específico.
Considere o apoio e a formação. Avalie o nível de suporte e treinamento que o fornecedor ou a comunidade da ferramenta oferece. Determine a disponibilidade de documentação, tutoriais e canais de suporte técnico para ajudar com quaisquer desafios ou problemas que possam surgir durante o processo de teste.
Criar cenários de teste
A criação de cenários de teste refere-se ao processo de projetar situações ou condições específicas que são adequadas para testar o desempenho de uma carga de trabalho. Os cenários de teste são criados para emular padrões realistas de comportamento do usuário e carga de trabalho. Esses cenários fornecem uma maneira para os testadores de desempenho avaliarem o desempenho da carga de trabalho sob várias condições.
Os cenários de teste permitem replicar vários padrões de carga de trabalho, como acesso de usuário simultâneo, períodos de pico de carga ou sequências de transação específicas. Ao testar a carga de trabalho sob diferentes padrões de carga de trabalho, você pode identificar gargalos de desempenho e otimizar a alocação de recursos.
Defina o comportamento do usuário. Emule padrões realistas de comportamento e carga de trabalho do usuário identificando as etapas e ações que os usuários executam quando interagem com a carga de trabalho. Considere atividades como entrar, realizar pesquisas, enviar formulários ou acessar recursos específicos. Divida cada cenário em etapas e ações específicas que representam a interação do usuário com a carga de trabalho. Você pode incluir navegar pelas páginas, realizar transações ou interagir com vários elementos da carga de trabalho.
Determinar o envolvimento dos dados. Identifique os dados de teste necessários para executar os cenários de teste. Você pode incluir a criação ou geração de conjuntos de dados realistas que representam vários cenários, perfis de usuário ou volumes de dados. Certifique-se de que os dados de teste sejam diversos e abranjam diferentes casos de uso para fornecer uma avaliação de desempenho abrangente.
Projetar scripts de teste. Crie scripts de teste que automatizam a execução dos cenários de teste definidos. Os scripts de teste geralmente consistem em uma sequência de ações, solicitações HTTP ou interações com APIs de carga de trabalho ou interfaces de usuário. Use ferramentas de teste de desempenho ou linguagens de programação para escrever os scripts, considerando fatores como parametrização, correlação e manipulação dinâmica de dados. Valide os scripts de teste quanto à correção e funcionalidade. Depure quaisquer problemas, como erros de script, ações ausentes ou incorretas ou problemas relacionados a dados. A validação do script de teste é crucial para ajudar a garantir uma execução precisa e confiável do teste de desempenho.
Configure variáveis e parâmetros de teste. Configure variáveis e parâmetros em scripts de teste para introduzir variabilidade e simular cenários do mundo real. Inclua parâmetros como credenciais de usuário, dados de entrada ou randomização para imitar diferentes comportamentos de usuário e respostas de carga de trabalho.
Refine os scripts de forma iterativa. Refine e aprimore continuamente os scripts de teste com base em feedback, resultados de testes ou alteração de requisitos. Considere otimizar a lógica do script, a parametrização e o tratamento de erros, ou adicionar validação e pontos de verificação extras.
Configurar o ambiente de teste
Configurar um ambiente de teste refere-se ao processo de configuração da infraestrutura, software e configurações de rede de que você precisa para criar um ambiente que se assemelhe muito ao seu ambiente de produção.
Para configurar seu ambiente de teste de forma a aumentar a eficiência do desempenho, inclua as seguintes etapas no processo de configuração:
Espelhe seu ambiente de produção. Configure seu ambiente de teste para se assemelhar muito ao seu ambiente de produção. Considere fatores como configuração de infraestrutura, configurações de rede e configurações de software. O objetivo é garantir que os resultados dos testes de desempenho sejam representativos das condições do mundo real.
Disponibilizar recursos suficientes. Aloque recursos adequados, como CPU, memória e espaço em disco para o ambiente de teste. Certifique-se de que os recursos disponíveis possam lidar com a carga de trabalho esperada e fornecer medições de desempenho precisas.
Replicar condições de rede. Configure as configurações de rede no ambiente de teste para replicar as condições de rede esperadas durante a implantação da carga de trabalho real. Você precisa incluir largura de banda, latência e protocolos de rede.
Instale e configure dependências. Instale o software, bibliotecas, bancos de dados e outras dependências necessárias para que a carga de trabalho seja executada corretamente. Configure essas dependências para corresponder ao ambiente de produção esperado.
Compensação: Há custos associados à manutenção de ambientes de teste separados, armazenamento de dados, uso de ferramentas e execução de testes. Conheça o custo dos testes de desempenho e encontre uma maneira de otimizar os gastos.
Risco: Os dados de produção podem conter informações confidenciais. Sem uma estratégia robusta de limpeza e mascaramento, você corre o risco de vazar dados confidenciais ao usar dados de produção para testes.
Realizar os testes
Execute os testes de desempenho usando a ferramenta de teste escolhida. Os testes envolvem medir e registrar métricas de desempenho, monitorar a integridade e capturar quaisquer problemas de desempenho que surjam.
Monitore e colete métricas de desempenho, como tempo de resposta, taxa de transferência, utilização de CPU e memória e outros indicadores relevantes.
Use os cenários de teste definidos para colocar a carga de trabalho sob as cargas esperadas. Realizar ensaios nestas condições de carga variáveis. Por exemplo, use níveis, como normal, pico e estresse, para analisar o comportamento da carga de trabalho em vários cenários.
Analise os resultados
A análise dos resultados do teste envolve examinar os dados coletados e as métricas dos testes de desempenho para obter informações sobre o desempenho da carga de trabalho. O objetivo é identificar problemas de desempenho e usar o feedback para ajustar as prioridades no desenvolvimento de aplicativos. As ações a seguir são as principais etapas para analisar os resultados do teste.
Analise as métricas de desempenho. Observe as métricas de desempenho coletadas durante os testes de desempenho, como tempos de resposta, taxa de transferência, taxas de erro, utilização da CPU e da memória e latência da rede. Analise essas métricas para entender o desempenho geral da carga de trabalho.
Identificar gargalos. Avalie as métricas de desempenho para identificar gargalos ou áreas de desempenho ineficiente. A avaliação pode incluir altos tempos de resposta, restrições de recursos, problemas de banco de dados, latência de rede e limitações de escalabilidade. Identificar as causas desses gargalos ajuda a priorizar melhorias de desempenho.
Correlacione métricas. Avaliar as relações e correlações entre várias métricas de desempenho. Por exemplo, analise como o aumento da carga ou da utilização de recursos afeta os tempos de resposta. Compreender essas correlações pode fornecer informações valiosas sobre o comportamento da carga de trabalho sob diferentes condições. Procure padrões e tendências nos dados de desempenho ao longo do tempo. Analise o desempenho sob diferentes níveis de carga ou durante períodos específicos. A deteção de tendências pode ajudar a identificar variações sazonais, horários de pico de uso ou problemas recorrentes de desempenho.
Avaliar os critérios de aceitação. Compare os resultados do reteste com os critérios de aceitação predefinidos e as metas de desempenho. Avalie se a carga de trabalho atende aos padrões de desempenho desejados. Se a carga de trabalho não atender aos critérios de aceitação, investigue e refine ainda mais as otimizações.
Itere e refine a análise. Faça outros ajustes e melhorias conforme necessário. Use os dados e métricas coletados para diagnosticar problemas de desempenho específicos. O diagnóstico pode envolver o rastreamento através dos componentes da carga de trabalho, examinando arquivos de log, monitorando o uso de recursos ou analisando mensagens de erro. Aprofunde-se nos dados para entender as causas subjacentes dos problemas de desempenho.
Com base na análise dos resultados dos testes, priorize os problemas de desempenho identificados e implemente as melhorias necessárias. As melhorias podem envolver a otimização do código, o ajuste de consultas de banco de dados, a melhoria dos mecanismos de cache e a otimização das configurações de rede.
Estabelecer linhas de base
As linhas de base fornecem um ponto de referência para comparar os resultados de desempenho ao longo do tempo. As linhas de base devem ser instantâneos significativos do desempenho da carga de trabalho — você não precisa usar todos os testes como linha de base.
Considere os objetivos da carga de trabalho e documente instantâneos de desempenho que permitem aprender ao longo do tempo e otimizar. Use essas medições de linha de base como referência para futuros testes de desempenho e use-as para identificar qualquer degradação ou melhoria.
Para estabelecer linhas de base para testes de desempenho e usá-las como referência para testes de desempenho futuros, siga estas etapas:
Identifique métricas de desempenho. Determine as métricas de desempenho específicas que você deseja medir e acompanhar. Os exemplos incluem:
- Tempo de resposta ou a rapidez com que a carga de trabalho responde às solicitações.
- Taxa de transferência ou o número de solicitações processadas por unidade de tempo.
- Utilização de recursos, como CPU, memória e uso de disco.
Registre medições significativas. Registre as métricas de desempenho obtidas durante o teste como as medições da linha de base. Essas medições representam o ponto de partida com o qual você compara testes de desempenho futuros.
Compare testes futuros. Em testes de desempenho subsequentes, compare as métricas de desempenho com as linhas de base e os limiares estabelecidos. A comparação permite identificar quaisquer melhorias ou degradação no desempenho.
Teste continuamente
Os testes contínuos envolvem o monitoramento contínuo e o refinamento de seus testes. Os testes contínuos ajudam a manter níveis de desempenho consistentes e aceitáveis. Uma carga de trabalho deve proporcionar um nível de desempenho coerente e aceitável em relação à linha de base. Você deve ajustar a carga de trabalho ao longo do tempo para produzir um desempenho consistente que esteja dentro dos limites aceitáveis de desempenho. Aqui estão algumas práticas-chave:
Estabeleça limites de degradação. Defina limites numéricos que especifiquem o nível de degradação de desempenho aceitável ao longo do tempo. Ao definir esses limites, você pode monitorar as flutuações de desempenho e receber alertas quando o desempenho cair abaixo do limite definido.
Inclua garantia de qualidade. Incorpore requisitos de desempenho, como utilização da CPU e solicitações máximas por segundo, no processo de garantia de qualidade. Trate os requisitos de desempenho com o mesmo nível de importância que os requisitos funcionais. Esse processo ajuda a garantir que a carga de trabalho atenda aos requisitos de desempenho definidos antes de implantá-la na produção.
Automatize os alertas. Em ambientes ao vivo, a deteção e a resposta rápidas são cruciais. Configure sistemas de alerta automatizados que usam a linha de base de desempenho como referência. Se houver um desvio significativo no desempenho, as equipes necessárias são alertadas imediatamente para agir.
Alterações de teste. Alguns problemas de desempenho podem se manifestar apenas em um ambiente ao vivo. Aplique práticas de teste completas para alterações de código e infraestrutura propostas. Use a instrumentação de código para obter informações sobre as características de desempenho do aplicativo, como caminhos quentes, alocações de memória e coleta de lixo. Esse teste garante que qualquer alteração introduzida não degrade o desempenho além dos limites aceitáveis.
Gestão do Azure
Execute os testes: o Azure Pipelines possibilita que você integre testes de desempenho em seu pipeline de CI/CD. Você pode incorporar o teste de carga como uma etapa em seu pipeline para validar o desempenho e a escalabilidade de seus aplicativos.
O Azure Chaos Studio fornece uma maneira de injetar falhas do mundo real em seu aplicativo para que você possa executar experimentos de injeção de falhas controladas. As experiências ajudam-no a medir, compreender e melhorar a resiliência das suas aplicações e serviços na nuvem.
O Teste de Carga do Azure é um serviço de teste de carga que gera carga de alta escala em qualquer aplicativo. O Teste de Carga fornece recursos para automatizar testes de carga e integrá-los ao seu fluxo de trabalho de integração contínua e entrega contínua (CI/CD). Você pode definir critérios de teste, como tempo médio de resposta ou limites de erro, e interromper automaticamente os testes de carga com base em condições de erro específicas. O Teste de Carga oferece um painel que fornece atualizações em tempo real e métricas de recursos detalhadas dos componentes do aplicativo do Azure durante um teste de carga. Você pode analisar os resultados do teste, identificar gargalos de desempenho e comparar várias execuções de teste para entender as regressões de desempenho ao longo do tempo.
Analisando os resultados: o Azure Monitor é uma solução de monitoramento abrangente para coletar, analisar e responder à telemetria de seus ambientes locais e na nuvem. O Application Insights é uma extensão do Monitor que fornece recursos de APM. Você pode usar o Application Insights para monitorar aplicativos durante o desenvolvimento e teste e também na produção.
Compensação: Os testes levam tempo e habilidade para serem executados e podem afetar a eficiência operacional.
Ligações relacionadas
- Recomendações para testes de segurança
- Recomendações para a conceção de uma estratégia de teste de fiabilidade
Lista de verificação de eficiência de desempenho
Consulte o conjunto completo de recomendações.