Tutorial de teste de desempenho
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 do Teste de Desempenho é verificar o desempenho de um programa de software
- Velocidade – Determina se o aplicativo responde rapidamente
- Global – Determina a carga máxima de usuário que o aplicativo de software pode suportar.
- Estabilidade – Determina se a aplicação é estável sob cargas variadas
Por que fazer testes de desempenho?
Os recursos e funcionalidades suportados por um sistema de software não são a única preocupação. O desempenho de um aplicativo de software, como tempo de resposta, confiabilidade, uso de recursos e escalabilidade, são importantes. O objetivo do Teste de Desempenho não é encontrar bugs, mas eliminar gargalos de desempenho.
O teste de desempenho é feito para fornecer às partes interessadas informações sobre sua aplicação em relação à velocidade, estabilidade e escalabilidade. Mais importante ainda, os testes de desempenho revelam o que precisa ser melhorado antes que o produto chegue ao mercado. Sem testes de desempenho, o software provavelmente sofrerá problemas como: lentidão enquanto vários usuários o utilizam simultaneamente, inconsistências em diferentes sistemas operacionais e baixa usabilidade.
Os testes de desempenho determinarão se o software atende aos requisitos de velocidade, escalabilidade e estabilidade sob as cargas de trabalho esperadas. Os aplicativos enviados ao mercado com métricas de desempenho insatisfatórias devido a testes de desempenho inexistentes ou insatisfatórios 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 do Google.com (19 de agosto de 13) custará ao gigante das buscas tanto quanto $ 545,000.
Estima-se que as empresas perderam valor em vendas $ 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 – é feito para garantir que o software possa lidar com a carga esperada por um longo período de tempo.
- Teste de pico – testa a reação do software a grandes picos repentinos na carga gerada pelos usuários.
- teste de volume – Sob teste de volume grande não. de. Os dados são preenchidos em um banco de dados e o comportamento geral do sistema de software é monitorado. O objetivo é verificar o desempenho do aplicativo de software em diversos volumes de banco de dados.
- Teste de escalabilidade – O objetivo do teste de escalabilidade é determinar a eficácia do aplicativo de software na “ampliação” para suportar um aumento na carga do usuário. Ajuda a planejar a adição de capacidade ao seu sistema de software.
Problemas comuns de desempenho
A maioria dos problemas de desempenho gira em torno de velocidade, tempo de resposta, tempo de carregamento e baixa escalabilidade. A velocidade costuma ser um dos atributos mais importantes de um aplicativo. Um aplicativo de execução lenta perderá usuários em potencial. Os testes de desempenho garantem que um aplicativo seja executado com rapidez suficiente para manter a atenção e o interesse do usuário. Dê uma olhada na lista a seguir de problemas comuns de desempenho e observe como a velocidade é um fator comum em muitos deles:
- Longo tempo de carregamento – O tempo de carregamento normalmente é o tempo inicial que um aplicativo leva para iniciar. Geralmente, isso deve ser reduzido ao mínimo. Embora seja impossível carregar alguns aplicativos em menos de um minuto, o tempo de carregamento deve ser mantido em alguns segundos, se possível.
- Tempo de resposta ruim – O tempo de resposta é o tempo que leva desde o momento em que um usuário insere dados no aplicativo até que o aplicativo produza uma resposta a essa entrada. Geralmente, isso deve ser muito rápido. Novamente, se um usuário tiver que esperar muito, 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 o desempenho geral do sistema. Gargalos ocorrem quando erros de codificação ou problemas de hardware causam uma diminuição no rendimento sob determinadas cargas. O gargalo geralmente é causado por uma seção de código defeituosa. A chave para corrigir um problema de gargalo é encontrar a seção do código que está causando a lentidão e tentar corrigi-la. O gargalo geralmente é corrigido corrigindo processos de execução deficiente ou adicionando hardware adicional. Alguns gargalos de desempenho comuns e guarante que os mesmos estão
- 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.
Abaixo está um processo genérico sobre como realizar testes de desempenho
Etapa 1) Identifique seu ambiente de teste
Conheça seu ambiente de teste físico, ambiente de produção e quais ferramentas de teste estão disponíveis. Entenda os detalhes das configurações de hardware, software e rede usadas durante o teste antes de iniciar o processo de teste. Isso ajudará os testadores a criar testes mais eficientes. Também ajudará a identificar possíveis desafios que os testadores possam encontrar durante os procedimentos de teste de desempenho.
Etapa 2) Identificar os critérios de aceitação de desempenho
Isto inclui metas e restrições de rendimento, tempos de resposta e alocação de recursos. Também é necessário identificar critérios de sucesso do projeto fora destes objetivos e restrições. Os testadores devem ser capacitados para definir critérios e metas de desempenho porque muitas vezes as especificações do projeto não incluem uma variedade suficientemente ampla de benchmarks de desempenho. Às vezes pode não haver nenhum. Quando possível, encontrar um aplicativo semelhante para comparar é 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 para testar todos os casos de uso possíveis. É necessário simular uma variedade de usuários finais, planejar dados de testes de desempenho e delinear quais métricas serão coletadas.
Etapa 4) Configurando o ambiente de teste
Prepare o ambiente de teste antes da execução. Além disso, organize ferramentas e outros recursos.
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 resultados de testes. Em seguida, ajuste e teste novamente para ver se há melhoria ou diminuição no desempenho. Como as melhorias geralmente diminuem a cada novo teste, pare quando o gargalo for causado pela CPU. Então você pode considerar a opção de aumentar o poder 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 – uma quantidade de tempo que o processador gasta executando threads não ociosos.
- Uso de memória – quantidade de memória física disponível para processos em um computador.
- Tempo de disco – quantidade de tempo que o disco está 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 – número de bytes alocados por um processo que não podem ser compartilhados entre outros processos. Eles são usados para medir vazamentos e uso de memória.
- Memória comprometida – quantidade de memória virtual usada.
- Páginas de memória/segundo – número de páginas gravadas ou lidas no disco para resolver falhas graves de páginas. Falhas de página graves ocorrem quando o código que não pertence ao conjunto de trabalho atual é chamado de outro lugar e recuperado de um disco.
- Falhas de página/segundo – a taxa geral na qual as páginas de falha são processadas pelo processador. Isso ocorre novamente quando um processo requer código de fora do seu conjunto de trabalho.
- Interrupções de CPU por segundo – é a média. número de interrupções de hardware que um processador recebe e processa a cada segundo.
- Comprimento da fila de disco – é a média. não. de solicitações de leitura e gravação enfileiradas para o disco selecionado durante um intervalo de amostra.
- Comprimento da fila de saída de rede – comprimento da fila de pacotes de saída em pacotes. Qualquer coisa acima de dois significa que um atraso e um gargalo precisam ser interrompidos.
- Total de bytes de rede por segundo – taxa de quais bytes são enviados e recebidos na interface, incluindo caracteres de enquadramento.
- Tempo de resposta - tempo desde o momento em que um usuário insere uma solicitação até o recebimento do primeiro caractere da resposta.
- Taxa de transferência - taxa que 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 – Isto tem a ver com o 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ão. de acessos em 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 – são monitorados para determinar quais tempos de espera podem ser reduzidos ao lidar com a rapidez com que os dados são recuperados da memória
- Contagem de fios – A integridade de um aplicativo pode ser medida pelo não. de threads que estão em execução e atualmente ativos.
- Coleta de lixo - Tem a ver com retornar memória não utilizada de volta ao sistema. A coleta de lixo precisa ser monitorada para eficiência.
Exemplo de casos de teste de teste de desempenho
- Caso de teste 01: Verifique 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 um intervalo aceitável quando a conectividade da rede está 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 sob 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.
Ferramentas de teste de desempenho
Há uma grande variedade de ferramentas de teste de desempenho disponíveis no mercado. A ferramenta que você escolher para teste dependerá de muitos fatores, como tipos de protocolo suportados, custo de licença, requisitos de hardware, suporte de plataforma, etc. Abaixo está uma lista de ferramentas de teste usadas popularmente.
- HP LoadRunner - é a ferramenta de teste de desempenho mais popular do mercado atualmente. Esta ferramenta é capaz de simular centenas de milhares de usuários, colocando aplicações sob cargas reais para determinar seu comportamento sob cargas esperadas. Corredor de carga apresenta um gerador de usuário virtual que simula as ações de usuários humanos ao vivo.
- jmetro – uma das principais ferramentas usadas para testes de carga de servidores web e de aplicativos.
Perguntas frequentes
Conclusão
In Engenharia de Software, O teste de desempenho é necessário antes de comercializar qualquer produto de software. Garante a satisfação do cliente e protege o investimento do investidor contra falhas do produto. Os custos dos testes de desempenho geralmente são mais do que compensados pela maior satisfação, fidelidade e retenção do cliente.