Tutorial de teste de desempenho
⚡ Resumo Inteligente
O teste de desempenho é um processo de teste de software que avalia a velocidade, o tempo de resposta, a estabilidade, a escalabilidade e o uso de recursos de um aplicativo sob cargas de trabalho específicas. Ele identifica e elimina gargalos antes da implantação, garantindo confiabilidade em condições reais de uso.

O que é Teste de Desempenho?
Teste de Desempenho é um processo de teste de software usado para testar a velocidade, tempo de resposta, estabilidade, confiabilidade, escalabilidade e uso de recursos de um aplicativo de software sob uma carga de trabalho específica. O principal objetivo dos testes de desempenho é identificar e eliminar gargalos de desempenho no aplicativo de software. É um subconjunto da engenharia de desempenho e também é conhecido como “Teste de desempenho”.
O foco dos testes de desempenho é verificar se um programa de software:
- Agilidade (Speed) – Determina se o aplicativo responde rapidamente
- Global – Determina a carga máxima de usuários que o aplicativo de software pode suportar.
- Estabilidade – Determina se a aplicação é estável sob cargas variadas
A PFLB concentra-se em testes de desempenho orientados à precisão, que ajudam os sistemas a manterem-se estáveis sob cargas de trabalho imprevisíveis. Os seus serviços abrangem testes de carga, testes de pico e medição de latência, com uma forte ênfase na identificação da degradação de desempenho antes que esta afete os utilizadores finais.
Por que o teste de desempenho é importante?
As funcionalidades e os recursos suportados por um sistema de software não são a única preocupação. O desempenho de uma aplicação, como seu tempo de resposta, confiabilidade, uso de recursos e escalabilidade, também importa. O objetivo dos testes de desempenho não é encontrar erros, mas sim eliminar gargalos de desempenho.
Os testes de desempenho são realizados para fornecer aos stakeholders informações sobre a aplicação em relação à velocidade, estabilidade e escalabilidade. Mais importante ainda, os testes de desempenho revelam o que precisa ser aprimorado antes do lançamento do produto no mercado. Sem testes de desempenho, o software provavelmente apresentará problemas como lentidão quando vários usuários o utilizam simultaneamente, inconsistências entre diferentes sistemas operacionais e baixa usabilidade.
Os testes de desempenho determinam se o software atende aos requisitos de velocidade, escalabilidade e estabilidade sob cargas de trabalho esperadas. Aplicativos lançados no mercado com métricas de desempenho ruins devido à inexistência ou à má qualidade dos testes de desempenho provavelmente ganharão má reputação e não atingirão as metas de vendas esperadas.
Também, aplicações de missão crítica como programas de lançamento espacial ou equipamentos médicos que salvam vidas devem ser testados em termos de desempenho para garantir que funcionam por um longo período sem desvios.
De acordo com Dunn & Bradstreet, 59% das empresas Fortune 500 passam por um período estimado de inatividade de 1.6 horas por semana. Considerando que uma empresa média da Fortune 500 com um mínimo de 10,000 funcionários paga US$ 56 por hora, a parte trabalhista dos custos de tempo de inatividade para tal organização seria de US$ 896,000 semanais, traduzindo-se em mais de US$ 46 milhões por ano.
Com apenas Tempo de inatividade de 5 minutos of GoogleEstima-se que o .com (19 de agosto de 13) custe à gigante das buscas tanto quanto $ 545,000.
Estima-se que as empresas perderam vendas no valor de $ 1100 por segundo devido a um recente Amazon Interrupção do serviço da Web.
Portanto, o teste de desempenho é importante. Para ajudá-lo nesse processo, confira esta lista de ferramentas de teste de desempenho.
Tipos de teste de desempenho
Existem basicamente seis tipos de testes de desempenho em testes de software, que são explicados abaixo.
- Teste de carga – verifica a capacidade do aplicativo de funcionar sob cargas de usuário previstas. O objetivo é identificar gargalos de desempenho antes que o aplicativo de software entre em operação.
- Teste de estresse - envolve testar um aplicativo sob cargas de trabalho extremas para ver como ele lida com alto tráfego ou processamento de dados. O objetivo é identificar o ponto de ruptura de uma aplicação.
- Teste de resistência – Isso é feito para garantir que o software consiga lidar com a carga esperada por um longo período. Ajuda a detectar problemas como vazamentos de memória e esgotamento de recursos que só aparecem durante a operação contínua.
- Teste de pico – Os testes de pico avaliam a reação do software a picos repentinos e significativos de carga gerados pelos usuários. Diferentemente dos testes de estresse, os testes de pico focam especificamente em como o sistema lida e se recupera de aumentos repentinos e de curta duração no tráfego.
- Testes de volume – Consiste em preencher um banco de dados com um grande volume de dados e monitorar o comportamento geral do sistema de software. O objetivo é verificar o desempenho do aplicativo de software sob diferentes volumes de dados no banco de dados.
- Testes de escalabilidade – Determina a eficácia do aplicativo de software em "escalar" para suportar um aumento na carga de usuários. Isso ajuda a planejar a expansão da capacidade do seu sistema de software.
Problemas comuns de desempenho
A maioria dos problemas de desempenho gira em torno da velocidade, do tempo de resposta, do tempo de carregamento e da baixa escalabilidade. A velocidade costuma ser um dos atributos mais importantes de uma aplicação. Uma aplicação lenta perde potenciais usuários. Os testes de desempenho garantem que uma aplicação seja executada com rapidez suficiente para manter a atenção e o interesse do usuário. A seguir, apresentamos alguns problemas de desempenho comuns em que a velocidade é um fator recorrente:
- Tempo de carregamento longo – O tempo de carregamento é normalmente o tempo inicial que um aplicativo leva para iniciar. Geralmente, esse tempo deve ser mantido no mínimo. Embora seja impossível fazer com que alguns aplicativos carreguem em menos de um minuto, o tempo de carregamento deve ser mantido em poucos segundos, se possível.
- Tempo de resposta ruim – O tempo de resposta é o intervalo entre o momento em que um usuário insere dados no aplicativo e o momento em que o aplicativo exibe uma resposta a essa entrada. Geralmente, esse tempo deve ser muito curto. Se um usuário tiver que esperar muito tempo, ele perderá o interesse.
- Má escalabilidade – Um produto de software sofre de baixa escalabilidade quando não consegue lidar com o número esperado de usuários ou quando não acomoda uma gama suficientemente ampla de usuários. Teste de carga deve ser feito para ter certeza de que o aplicativo pode lidar com o número previsto de usuários.
- Gargalos – Gargalos são obstruções em um sistema que degradam seu desempenho geral. Um gargalo ocorre quando erros de código ou problemas de hardware causam uma diminuição na taxa de transferência sob determinadas cargas. Frequentemente, um gargalo é causado por uma seção de código defeituosa. A chave para corrigir um gargalo é encontrar a seção de código que está causando a lentidão e tentar corrigi-la ali. Geralmente, os gargalos são resolvidos corrigindo processos com baixo desempenho ou adicionando hardware adicional. gargalos de desempenho comuns como:
- Utilização da CPU
- Utilização de memória
- Utilização da rede
- OperaLimitações do sistema
- Uso de disco
Como fazer testes de desempenho
A metodologia adotada para testes de desempenho pode variar bastante, mas o objetivo dos testes de desempenho permanece o mesmo. Pode ajudar a demonstrar que seu sistema de software atende a determinados critérios de desempenho predefinidos. Ou pode ajudar a comparar o desempenho de dois sistemas de software. Também pode ajudar a identificar partes do seu sistema de software que degradam seu desempenho.
A seguir, apresentamos um processo genérico sobre como realizar testes de desempenho.

Etapa 1) Identifique seu ambiente de teste
Conheça seu ambiente físico de teste, ambiente de produção e as ferramentas de teste disponíveis. Compreenda os detalhes das configurações de hardware, software e rede utilizadas durante os testes antes de iniciar o processo. Isso ajudará os testadores a criar testes mais eficientes e a identificar possíveis desafios que possam surgir durante os procedimentos de teste de desempenho.
Etapa 2) Identificar os critérios de aceitação de desempenho
Isso inclui metas e restrições para taxa de transferência, tempos de resposta e alocação de recursos. Também é necessário identificar critérios de sucesso do projeto além dessas metas e restrições. Os testadores devem ter autonomia para definir critérios e metas de desempenho, pois, frequentemente, as especificações do projeto não incluem uma variedade suficiente de benchmarks de desempenho. Às vezes, pode não haver nenhum. Quando possível, encontrar um aplicativo similar para comparação é uma boa maneira de definir metas de desempenho.
Etapa 3) Planejar e projetar testes de desempenho
Determine como o uso provavelmente variará entre os usuários finais e identifique os principais cenários a serem testados para todos os casos de uso possíveis. É necessário simular uma variedade de usuários finais, planejar os dados de teste de desempenho e definir quais métricas serão coletadas.
Etapa 4) Configurar o ambiente de teste
Prepare o ambiente de teste antes da execução. Organize também as ferramentas e outros recursos. Espelhe o ambiente de produção o máximo possível para garantir que os resultados dos testes sejam realistas e acionáveis.
Etapa 5) Implementar Design de Teste
Crie os testes de desempenho de acordo com seu design de teste.
Etapa 6) Execute os testes
Executar e monitorar os testes.
Etapa 7) Analisar, ajustar e testar novamente
Consolide, analise e compartilhe os resultados dos testes. Em seguida, ajuste e teste novamente para verificar se houve melhora ou piora no desempenho. Como as melhorias geralmente diminuem a cada novo teste, pare quando o gargalo for causado pela CPU. Nesse caso, talvez seja necessário considerar a opção de aumentar a potência da CPU.
Métricas de teste de desempenho: parâmetros monitorados
Os parâmetros básicos monitorados durante os testes de desempenho incluem:
- Uso do processador – O tempo que o processador gasta executando threads que não estão ociosas.
- Uso de memória – A quantidade de memória física disponível para os processos em um computador.
- Tempo de disco – O tempo que o disco fica ocupado executando uma solicitação de leitura ou gravação.
- Largura de banda - mostra os bits por segundo usados por uma interface de rede.
- Bytes privados – O número de bytes que um processo alocou e que não podem ser compartilhados com outros processos. Esses dados são usados para medir vazamentos e uso de memória.
- Memória comprometida – a quantidade de memória virtual utilizada.
- Páginas de memória/segundo – O número de páginas gravadas ou lidas do disco para resolver falhas de página permanentes. Falhas de página permanentes ocorrem quando um código que não pertence ao conjunto de trabalho atual é acessado de outro local e recuperado do disco.
- Falhas de página/segundo – A taxa geral na qual as páginas de falha são processadas pelo processador. Isso ocorre quando um processo requer código de fora de seu conjunto de trabalho.
- Interrupções de CPU por segundo – O número médio de interrupções de hardware que um processador recebe e processa a cada segundo.
- Comprimento da fila de disco – O número médio de solicitações de leitura e gravação enfileiradas para o disco selecionado durante um intervalo de amostragem.
- Comprimento da fila de saída de rede – O comprimento da fila de pacotes de saída, em pacotes. Qualquer valor acima de dois significa atraso, e o gargalo precisa ser eliminado.
- Total de bytes de rede por segundo – A taxa na qual os bytes são enviados e recebidos na interface, incluindo os caracteres de enquadramento.
- Tempo de resposta - O tempo decorrido desde que um usuário insere uma solicitação até o recebimento do primeiro caractere da resposta.
- Taxa de transferência - A taxa na qual um computador ou rede recebe solicitações por segundo.
- Quantidade de pool de conexões – o número de solicitações de usuário atendidas por conexões em pool. Quanto mais solicitações forem atendidas pelas conexões no pool, melhor será o desempenho.
- Máximo de sessões ativas – o número máximo de sessões que podem estar ativas ao mesmo tempo.
- Taxas de acerto – Isso se relaciona ao número de SQL instruções que são tratadas por dados armazenados em cache em vez de operações caras de E/S. Este é um bom ponto de partida para resolver problemas de gargalos.
- Acessos por segundo – O número de acessos a um servidor web durante cada segundo de um teste de carga.
- Segmento de reversão – a quantidade de dados que pode ser revertida a qualquer momento.
- Bloqueios de banco de dados – o bloqueio de tabelas e bancos de dados precisa ser monitorado e cuidadosamente ajustado.
- Principais esperas – Monitorado para determinar quais tempos de espera podem ser reduzidos ao lidar com a velocidade de recuperação de dados da memória.
- Contagem de fios – A saúde de uma aplicação pode ser medida pelo número de threads que estão em execução e atualmente ativas.
- Coleta de lixo - Consiste em devolver ao sistema a memória não utilizada. A coleta de lixo precisa ser monitorada para garantir sua eficiência.
Exemplo de casos de teste de teste de desempenho
Abaixo estão exemplos de casos de teste de desempenho:
- Caso de teste 01: Verificar se o tempo de resposta não ultrapassa 4 segundos quando 1000 usuários acessam o site simultaneamente.
- Caso de teste 02: Verifique se o tempo de resposta do aplicativo sob carga está dentro de uma faixa aceitável quando a conectividade de rede estiver lenta.
- Caso de teste 03: Verifique o número máximo de usuários que o aplicativo pode suportar antes de travar.
- Caso de teste 04: Verifique o tempo de execução do banco de dados quando 500 registros são lidos/gravados simultaneamente.
- Caso de teste 05: Verifique o uso de CPU e memória do aplicativo e do servidor de banco de dados em condições de pico de carga.
- Caso de teste 06: Verifique o tempo de resposta da aplicação em condições de carga baixa, normal, moderada e pesada.
Durante a execução real do teste de desempenho, termos vagos como faixa aceitável, carga pesada, etc. são substituídos por números concretos. Os engenheiros de desempenho definem esses números de acordo com os requisitos de negócios e o cenário técnico do aplicativo.
Melhores Práticas para Testes de Desempenho
Seguir as melhores práticas estabelecidas garante que os testes de desempenho forneçam resultados confiáveis. Essas diretrizes ajudam as equipes a evitar erros comuns.
- Espelhe o ambiente de produção – Configure seu ambiente de teste para refletir o ambiente de produção o mais fielmente possível. Diferenças nas versões de hardware ou software podem gerar resultados enganosos.
- Elabore cenários de teste realistas – Crie casos de teste que simulem o comportamento real do usuário, incluindo tempos de resposta e combinações de transações simultâneas.
- Utilize métricas baseadas em percentis – Confie nos tempos de resposta dos percentis 90 e 95, em vez de apenas nas médias. Os percentis revelam a latência final que as médias podem ocultar.
- Faça o teste cedo e continuamente – Integre os testes de desempenho ao pipeline de CI/CD, em vez de tratá-los como uma atividade de etapa final.
- Documentar e definir os resultados iniciais – Registre os resultados de cada execução de teste. Comparar os novos resultados com os valores de referência facilita a detecção de regressões entre as versões.
Como a IA está transformando os testes de desempenho
A inteligência artificial está reshaping Testes de desempenho são realizados por meio da automação de tarefas complexas de análise e da ativação de recursos preditivos. Ferramentas baseadas em IA analisam dados históricos, detectam padrões e fornecem recomendações práticas sem a necessidade de intervenção humana em cada etapa.
- Detecção preditiva de anomalias – Os algoritmos de IA analisam as métricas de desempenho em tempo real durante os testes de carga e sinalizam desvios antes que se transformem em falhas críticas.
- Análise automatizada da causa raiz – Ferramentas baseadas em IA correlacionam dados em sistemas distribuídos para identificar os componentes exatos que causam a degradação do desempenho.
- Otimização inteligente de testes – Os modelos de aprendizado de máquina identificam cenários de teste redundantes e sugerem configurações ideais, reduzindo o tempo de execução e mantendo a cobertura.
- Roteiros de teste de auto-recuperação – A IA adapta os scripts de teste quando as interfaces do aplicativo mudam, reduzindo o trabalho de manutenção dos conjuntos de testes de desempenho.
Ferramentas de teste de desempenho
Existe uma grande variedade de ferramentas de teste de desempenho disponíveis no mercado. A ferramenta escolhida para o teste dependerá de diversos fatores, como os tipos de protocolo suportados, o custo da licença, os requisitos de hardware e a compatibilidade com a plataforma. Abaixo, segue uma lista das ferramentas de teste mais utilizadas.
- HP LoadRunner - é uma das ferramentas de teste de desempenho mais populares do mercado. Essa ferramenta é capaz de simular centenas de milhares de usuários, submetendo os aplicativos a cargas reais para determinar seu comportamento sob cargas esperadas. LoadRunner apresenta um gerador de usuário virtual que simula as ações de usuários humanos ao vivo.
- JMeter - Uma das principais ferramentas de código aberto utilizadas para testes de carga em servidores web e de aplicações. Ela suporta múltiplos protocolos e oferece amplas funcionalidades de geração de relatórios.





