Quando se trata de testes de carga, há sempre a pergunta de um milhão de dólares: “Em termos de desempenho, o que o cliente quer fazer com seu aplicativo e sistema?” Tenho certeza que você nunca terá uma resposta fácil para essa pergunta, e a maioria de nós sempre assume algumas coisas e realiza o teste de desempenho, que pode acabar perdendo testes de peças críticas, e acabar com um cliente infeliz. Um cliente infeliz significa perda de negócios para sua organização e uma carreira em declínio como engenheiro de desempenho. Mas não se preocupe, neste artigo vamos falar sobre a criação de uma lista de verificação que vai ajudá-lo com essas perguntas.

Esta lista de verificação é mais como um processo passo a passo que você pode seguir e se adaptar ao seu ciclo de vida de teste de desempenho. No cenário discutido, nem sempre podemos culpar nossos clientes, pois inicialmente eles podem não saber quais os resultados exatos de desempenho que eles querem, mas eles têm um conhecimento claro sobre como a aplicação funciona em diferentes condições. Um bom testador de desempenho pode gerenciar essa ambiguidade com um questionário bem definido. E esse é o primeiro item da lista de verificação, o questionário de coleta de requisitos.

 

Questionário de Coleta de Requisitos

Abaixo está um formato de questionário que você pode seguir em seu projeto. Precisamos obter o máximo de respostas possível para essas perguntas. Será melhor se você puder ter uma chamada para discutir essas questões. Certifique-se de que o arquiteto ou desenvolvedor de aplicativos está participando da chamada com você e o cliente. Ter pessoal adicional pode ajudar a fornecer insights e descobrir perguntas que você pode não ter considerado anteriormente. As perguntas abaixo fornecem um roteiro para criar um teste de carga mais eficiente e eficaz.

Não tópico Perguntas
1 aplicação Tipo de aplicativo a ser considerado para testes (Por exemplo, aplicativo web/ aplicativo móvel, etc.).
2 Arquitetura de aplicativos e tecnologia/plataforma.
3 Técnica de balanceamento de carga utilizada.
4 Protocolo de comunicação entre cliente e servidor (Por exemplo: HTTP/S, FTP).
5 Objetivo de teste de desempenho. Métricas de desempenho a serem monitoradas (Por exemplo, tempo de resposta para cada uma das ações, usuários simultâneos etc.).
6 Cenários críticos a serem considerados para testes de desempenho.
7 Detalhes de trabalhos/processos programados em segundo plano, se houver.
8 Técnica utilizada para gerenciamento de sessões e número de sessões paralelas suportadas.
9 SLA/Requisitos do cliente Número esperado de usuários simultâneos e base total de usuários. Distribuição de usuários para cenários em escopo.
10 SLA para todas as transações em escopo para PT (rendimento esperado, tempo de resposta, etc.).
11 Tipos de testes de desempenho a serem realizados (Teste de carga, teste de resistência, etc.).
12 Sistema/Meio Ambiente Detalhes do ambiente de teste (web/app/DB, etc., juntamente com o número de nódulos). Ambiente semelhante à produção recomendado para execução de teste de desempenho.
13 Comparação do ambiente de produção e ambiente de teste de desempenho.
14 Se a aplicação será isolada durante a execução do teste de desempenho para evitar a interação com outra aplicação.
15 Detalhes do mecanismo de exploração madeireira ou mecanismo de monitoramento.
16 Outros Resultados da linha de base de desempenho da aplicação.
17 Problemas atuais de desempenho, se houver.

 

As respostas a essas perguntas ajudarão você a criar uma estratégia de teste de qualidade/plano de teste. Se o cliente não for capaz de fornecer respostas para todas essas perguntas, não precisa se preocupar. Podemos sempre explorar a aplicação em teste e encontrar as respostas. Por exemplo, se uma ferramenta APM/log estiver no lugar, podemos obter usuários simultâneos, throughput e tempo de resposta do sistema de produção. Nunca assuma que você vai conseguir o que precisa sem pedir.

 

Encontre uma ferramenta de teste de desempenho adequada

Um testador de desempenho deve escolher cuidadosamente a melhor ferramenta de teste de desempenho. Há muitos fatores que precisam considerar antes de finalizar e propor a ferramenta. Lembre-se, o orçamento do cliente é sempre um fator importante ao escolher a ferramenta de teste de desempenho.

Se você está procurando uma ferramenta de teste de desempenho que seja econômica, fácil de usar e possa fornecer uma solução completa de desempenho, você definitivamente deve experimentar o LoadView. Em comparação com as ferramentas tradicionais de teste de carga, o LoadView não requer nenhum investimento caro, configuração demorada ou conhecimento prévio de frameworks de scripting. Além disso, a plataforma fornece mais de 20 locais globais para spin-up injetores de carga, para que você possa testar e medir o desempenho de vários locais durante cada teste.

Todos os tipos de testes de desempenho requerem tempo e esforço. Realizar testes de carga pode salvar uma organização de uma humilhação potencial, mas os testes ao mesmo tempo em ferramentas de código aberto gratuitos como o JMeter não justificam o investimento. Quando se trata de entender verdadeiramente o desempenho do site ou do aplicativo da perspectiva do usuário final, testes baseados em protocolos não são suficientes. Você também deve medir o desempenho das interações e etapas do lado do cliente. Aqui está uma comparação do LoadView com outras soluções de teste de desempenho/carga e por que você deve escolher o LoadView para seus requisitos de teste de desempenho.

Quando se trata de sites e aplicativos de carregamento lentos, os clientes podem ficar rapidamente impacientes e sair e encontrar um substituto se seu site/aplicativo não atender às suas expectativas. Saber o quanto seu site/aplicativo pode lidar é muito importante devido a vários motivos, mas existem vários cenários significativos com os quais a plataforma LoadView pode ajudar:

  • Adaptabilidade e escalabilidade. Determinar por que seu site ou aplicativo diminui a velocidade quando vários usuários o acessam.
  • infra-estrutura. Entendendo quais atualizações de hardware são necessárias, se houver. O custo de implementar hardware adicional e mantê-lo pode ser um potencial desperdício de recursos.
  • Requisitos de desempenho. Seu site ou aplicativo pode lidar adequadamente com alguns usuários, mas o que acontece em situações reais?
  • Serviços de terceiros. Veja como os serviços externos se comportam quando são normais, ou mesmo picos, condições de carga são apresentadas.

 

Plano/Estratégia de Teste de Desempenho

Uma vez que você tenha reunido os requisitos do cliente e selecionado a ferramenta de teste de desempenho adequada, precisamos documentar nossa estratégia de plano de teste/teste. Certifique-se de obter a aprovação do plano de teste do cliente antes de iniciar qualquer atividade de desempenho. Isso é muito importante, e vai ajudá-lo a evitar falhas desnecessárias mais tarde. Estes são alguns pontos que precisam ser incluídos no plano de teste.

  • Objetivos da Prova de Desempenho. O que vamos conseguir.
  • Escopo do Projeto. Qual é o escopo do projeto, exemplo: Número de scripts, quanto tempo precisamos testar, etc.
  • Arquitetura de aplicativos. O aplicativo detalha tal servidor de aplicativo, servidor DB, você pode incluir diagrama arquitetônico se você o tiver.
  • Detalhes do ambiente. Detalhes sobre o ambiente que vamos testar. É sempre bom ter um ambiente isolado para testes de desempenho.
  • Configuração de infraestrutura. Configuração inicial para o teste de desempenho (por exemplo, ambiente em nuvem, instalação de ferramentas, etc.).
  • Abordagem de teste de desempenho. Como vamos realizar o teste. Devemos começar com um teste de linha de base com um número menor de usuários, e então gradualmente podemos aumentar os usuários e realizar diferentes tipos de testes como estresse, resistência, etc.
  • Critérios de entrada e saída. Isso é muito importante. Devemos sempre iniciar testes de desempenho quando não há defeitos funcionais. Da mesma forma que devemos documentar quando podemos parar os testes de desempenho.
  • Gestão de defeitos. Devemos seguir a mesma ferramenta e práticas seguidas pelo cliente para registrar defeitos relacionados aos testes de desempenho.
  • Papéis e Responsabilidades. Detalhes sobre os detentores de participações envolvidos nas diferentes atividades durante os testes de desempenho.
  • Suposições e Riscos. Se há objetivos que podem ser um risco para testes de desempenho, devemos documentá-lo.
  • Estratégia de Dados de Teste. Detalhes sobre a estratégia de dados de teste e como podemos extraí-lo.
  • Cronograma do plano de teste e entregas de chaves. Linha do tempo de scripting, execução de testes, análise e entregas para revisão do cliente.

 

O teste de desempenho real conta com uma combinação de técnicas. Para alcançar as metas esperadas, precisamos preparar uma estratégia diferente para diferentes requisitos de teste de desempenho. Existem diferentes métricas, como carga do usuário, usuários simultâneos, modelos de carga de trabalho, etc., que precisam ser considerados antes de planejar a carga. Se você já trabalhou na modelagem da carga de trabalho antes, você teria ouvido falar sobre a lei de Little. Você deve aprender e implementá-lo antes de planejar um teste para obter os resultados desejados.

 

Scripts/cenários de desempenho em tempo real

Uma vez que tenhamos chegado a um acordo com o cliente sobre o plano/estratégia de desempenho, devemos começar a preparação para scripting usando a ferramenta de teste de desempenho acordada.

Os seguintes itens com bala são alguns dos pontos que precisamos lembrar para construir scripts de qualidade:

  • Sempre vá com as etapas documentadas do caso de teste enquanto faz scripts.
  • Faça requisitos de repetição e correção de correlação para um único usuário.
  • Faça requisitos de reprodução e correta de parametrização para um único usuário. A parametrização pode estar em qualquer lugar, com os cabeçalhos, cookies e parâmetros do corpo.
  • Uma vez que o script seja bem sucedido com dados de um único usuário, execute várias iterações com diferentes usuários. Pode-se exigir uma correlação/parametrização adicional para diferentes dados do usuário.
  • Em alguns casos, para alcançar certos casos de uso, podemos precisar escrever bloco de código. Por exemplo, selecionar um dado de resposta específico para um usuário e manipulá-los para outra solicitação.
  • Adicione tempo de pensar, ritmo, manipulação de erros para o script de acordo com o modelo de carga de trabalho.
  • Verificação de texto/Verificação de imagem também passo muito importante no scripting.

 

Adicional às etapas acima, haverá requisitos para simulação de cache/cookies e condições de rede. Um bom engenheiro de desempenho deve considerar todos esses fatores antes de iniciar a execução. O engenheiro de teste de desempenho também deve desenvolver os padrões mais realistas do comportamento do usuário virtual. Para isso, é crucial obter a resposta correta através do questionário de coleta de requisitos.

  • Qual é o número total de usuários trabalhando com o aplicativo, assumindo um número médio por hora útil?
  • Quais ações os usuários realizam e com que frequência?
  • Quantos usuários estão trabalhando com o aplicativo durante os horários de pico de carga?

Respostas para perguntas acima podem ser obtidas através de questionário de coleta de requisitos ou de dados estatísticos coletados com a ajuda de ferramentas de análise web, como ferramentas APM/Google Analytics. A análise de transações permite encontrar transações comerciais importantes e projetar cenários de teste de desempenho que serão usados para execução de testes de desempenho.

 

Modelagem de carga de trabalho

Podemos planejar nosso modelo de carga de trabalho de diferentes maneiras. Os engenheiros de desempenho devem aprender e praticar o conceito de “Lei de Little” antes de selecionar um modelo de carga de trabalho. Abaixo estão alguns dos modelos de carga de trabalho existentes. Mais uma vez, o engenheiro de desempenho deve escolher o modelo de carga de trabalho com base nos requisitos em mãos.

Carga de trabalho Modelo 1. É apenas um modelo simples, onde o número de usuários será aumentado continuamente à medida que o teste progredir. Exemplo: um usuário por segundo até que o teste seja concluído.

Carga de trabalho Modelo 2. Neste modelo, o número de usuários será aumentado como um passo durante toda a duração do teste. Por exemplo, os primeiros 15 minutos serão de 100 usuários e os próximos 15 minutos serão 200, etc. Podemos planejar este tipo de teste para testes de resistência.

Carga de trabalho Modelo 3. Este é o modelo de teste de desempenho mais comum. O número de usuários será continuamente aumentado por um determinado tempo (chamamos isso de período de ramp up). Depois disso, os usuários terão estado estável por determinada duração. Em seguida, os usuários iniciarão a rampa para baixo e o teste terminará. Por exemplo, se estamos planejando 1,5 horas de teste, podemos dar 15 minutos para aumentar os usuários e 15 minutos para rampa para baixo. O estado estável será de uma hora. Quando analisarmos os resultados, levaremos apenas estado estável para consideração.

Carga de trabalho Modelo 4. Neste modelo, o número de usuários será aumentado e diminuído repentinamente por toda a duração. Existem nomes diferentes para este tipo de teste, como testes de macaco, testes de pico, etc.

Precisamos estabelecer um conjunto abrangente de metas e requisitos para testes de desempenho. Defina os parâmetros de teste de desempenho e o que constitui critérios de aceitação para cada um. Se você não conhece os requisitos de teste, nem o resultado desejado, então o teste de desempenho é uma perda de tempo.

 

Coleta de dados

Abaixo estão apenas algumas das métricas muito importantes a serem observadas durante a modelagem da carga de trabalho de desempenho.

Tempo de resposta: O tempo de resposta é o tempo que o servidor levou para responder à solicitação do cliente. Há muitos fatores que afetarão o tempo de resposta do servidor. O teste de carga ajudará a encontrar e eliminar os fatores que são degradantes no tempo de resposta.

Tempo médio de resposta: Este será o valor médio do tempo de resposta durante toda a duração do estado estável em um teste de carga.

Tempo de resposta de 90 percentil: O tempo de resposta percentil 90 significa que 90% do tempo de resposta fica abaixo desse valor. Por exemplo, se você teve 500 solicitações e cada um tem tempo de resposta diferente, então o percentil 90 é qualquer valor que 90% de todos os outros valores estão abaixo de 90 percentil. Apenas 10% do tempo de resposta será superior a 90% do valor. Isso será útil se alguns de seus pedidos tiverem um enorme tempo de resposta e estiverem distorcendo o resultado médio do tempo de resposta.

Solicitações por segundo: Precisamos encontrar esse valor a partir de ferramentas APM ou com a ajuda de registros de produção. Com base nos usuários simultâneos, podemos planejar a solicitação por segundo ao servidor.

Utilização da memória: São métricas do lado da infraestrutura que ajudam você a descobrir gargalos. Além disso, você deve planejar sua carga de trabalho em tempo real possível. Certifique-se de que não estamos bombardeando o servidor com solicitações contínuas.

Utilização da CPU: O mesmo que a memória e precisa estar de olho nesta métrica durante a execução dos testes de desempenho.

Taxa de erro: Devemos acompanhar a relação transação de passe/erro. A taxa de erro não deve ser superior a 2% das transações aprovadas. Se as taxas de erro estiverem aumentando à medida que os usuários simultâneos estão aumentando, pode haver um possível gargalo.

Usuários simultâneos: Precisamos encontrar esse valor a partir de ferramentas APM ou com a ajuda de registros de produção. Normalmente, encontramos esse valor com base em um dia de negócios típico.

Throughput: O throughput mostrará a capacidade do servidor para lidar com os usuários simultâneos. Há uma conexão direta entre usuários simultâneos versus throughput. O throughput deve aumentar à medida que o número de usuários aumenta para acessar o aplicativo. Se o throughput está diminuindo à medida que o número de usuários aumenta, é uma possível indicação de gargalos.

Distribuição de carga do usuário: A distribuição da carga do usuário é um dos fatores importantes que precisam ser considerados ao projetar a carga de trabalho. Se tivermos cinco scripts que realizam cinco funcionalidades diferentes de um aplicativo, precisamos dividir a carga do usuário para real o mais real possível com base em nossa investigação sobre a produção ou ferramentas APM.

Estas são métricas muito importantes que devemos ter em mente ao projetar o modelo de carga de trabalho. Haverá outras métricas, bem como depende da arquitetura e requisitos do aplicativo do cliente.

 

Lista de verificação para ambiente de teste de desempenho (antes da execução)

O exemplo da lista de verificação abaixo é geralmente seguido por testes de desempenho de nível corporativo de ponta a ponta, onde há um grande número de sistemas envolvidos. É sempre recomendável seguir uma lista de verificação de ambiente para testes de desempenho em pequena escala também. As atividades mudarão com base nos ambientes de aplicativos, pois há uma enorme diferença quando comparamos com o aplicativo em nuvem versus aplicativo no local.

Lista de verificação de teste de desempenho

 

Conclusão: Lista de verificação de preparação para testes de carga

Testes de desempenho de software bem sucedidos não acontecem por acidente. Arquitetos, proprietários de produtos, desenvolvedores e a equipe de testes de desempenho devem trabalhar juntos e abordar os requisitos de teste de desempenho antes de avaliar o software. Para obter um plano de fundo mais detalhado na plataforma LoadView, leia nosso artigo de visão geral técnica para ver como você pode aproveitar ao máximo seus testes de desempenho. Os testes de desempenho devem ser um processo contínuo. Quando seu site ou aplicativo web começar a crescer, você precisará fazer alterações para acomodar uma base de usuários maior. Há sempre uma chance de melhorar em qualquer aplicação e testes.

Esperamos que isso tenha lhe dado uma boa visão sobre as melhores práticas em testes de desempenho. Se você quiser uma demonstração completa da solução LoadView, inscreva-se para uma demonstração com um engenheiro de desempenho. Eles vão levá-lo passo a passo através de cada parte do processo, desde a criação de scripts de teste de carga e configuração de teste, até a análise de execução e resultados de teste.

Ou inscreva-se na avaliação gratuita do LoadView para começar a executar testes de carga agora. Nós lhe daremos $20 em créditos de teste de carga grátis para começar! Teste de carga feliz!