Nesta seção, aprenderemos sobre testes de desempenho, por que precisamos deles, tipos de testes de desempenho e o processo de teste de desempenho.
A seguir estão os tópicos que entenderemos nesta seção:
O que são testes de desempenho?
É a parte mais importante dos testes não funcionais.
Verificar o comportamento de um aplicativo aplicando alguma carga é conhecido como teste de desempenho.
Geralmente, esse teste define a rapidez com que o servidor responde à solicitação do usuário.
Ao fazer testes de desempenho no aplicativo, nos concentraremos em vários fatores, como Tempo de resposta, carga e estabilidade do aplicativo.
Tempo de resposta: O tempo de resposta é o tempo que o servidor leva para responder à solicitação do cliente.
Carregar: Aqui, Load significa que quando Número N de usuários usando o aplicativo simultaneamente ou enviando a solicitação ao servidor por vez.
Estabilidade: Para o fator de estabilidade, podemos dizer que, quando N é o número de usuários utilizando o aplicativo simultaneamente por um determinado tempo.
Quando usamos testes de desempenho?
Faremos testes de desempenho assim que o software estiver estável e transferido para produção, podendo ser acessado por vários usuários simultaneamente, por esse motivo, podem ocorrer alguns problemas de desempenho. Para evitar esses problemas de desempenho, o testador realiza uma rodada de testes de desempenho.
Como se trata de testes não funcionais, o que não significa que sempre usamos testes de desempenho, só realizamos testes de desempenho quando o aplicativo está funcionalmente estável.
Nota: O teste de desempenho não pode ser feito manualmente, pois seu resultado caro e preciso não pode ser mantido.
Tipos de testes de desempenho
A seguir estão os tipos de testes de desempenho:
fazer enquanto estiver em java
Vamos discutir um por um para lhe dar uma compreensão completa de Carga, Estresse, Escalabilidade, e Estabilidade teste de performance.
Teste de carga
O teste de carga é usado para verificar o desempenho de um aplicativo aplicando alguma carga menor ou igual à carga desejada, conhecido como teste de carga.
Por exemplo: Na imagem abaixo, 1000 usuários são as carga desejada , que é fornecido pelo cliente, e 3/segundo é o meta que queremos alcançar ao realizar um teste de carga.
Teste de estresse
O teste de estresse é um teste que verifica o comportamento de uma aplicação aplicando carga maior que a carga desejada.
Por exemplo: Se pegarmos o exemplo acima e aumentarmos a carga desejada de 1.000 para 1.100 usuários, a meta é 4/segundo. Ao realizar o teste de estresse neste cenário, ele será aprovado porque a carga é maior (100 ou mais) do que a carga real desejada.
Teste de escalabilidade
Verificar o desempenho de uma aplicação aumentando ou diminuindo a carga em escalas específicas (não de um usuário) é conhecido como teste de escalabilidade . Os testes de escalabilidade ascendente e de escalabilidade descendente são chamados de testes de escalabilidade.
O teste de escalabilidade é dividido em duas partes:
Teste de escalabilidade ascendente
Está testando onde nós aumentar o número de usuários em uma escala específica até chegarmos a um ponto de colisão. Usaremos testes de escalabilidade ascendente para encontrar a capacidade máxima de um aplicativo.
Teste de escalabilidade descendente
diferença entre array e arraylist
O teste de escalabilidade descendente é usado quando o teste de carga não é aprovado e, em seguida, inicia diminuindo o não. de usuários em um determinado intervalo até que o objetivo seja alcançado. Para que seja fácil identificar o gargalo (bug).
Teste de estabilidade
Verificando o desempenho de um aplicativo por aplicar a carga por um determinado período de tempo é conhecido como Teste de estabilidade .
Exemplo de teste de desempenho
Tomemos um exemplo onde iremos testar o comportamento de um aplicativo onde a carga desejada é menor que 1.000 ou igual a 1.000 usuários .
Na imagem abaixo, podemos ver que o 100 acima usuários são aumentados continuamente para verificar o Carga máxima , que também é chamado teste de escalabilidade ascendente .
1200 → 3,5seg: [não é menor ou igual à carga desejada, por isso será Falhar ]
1300 → 4seg: [não é menor ou igual à carga desejada. ou seja, Falhar ]
1400 → Falha
Nota 1: O teste de volume e absorção é um tipo de teste, mas não um teste de desempenho.
Teste de volume
O teste de volume é um teste, que nos ajuda a verificar o comportamento de um aplicativo inserindo um grande volume de carga em termos de dados, é conhecido como teste de volume, e aqui vamos nos concentrar no número de taxas de dados do que no número de usuários .
Nota 2:
Volume é uma capacidade enquanto Load é uma quantidade, ou seja, teste de carga significa não. de usuários, e teste de volume significa quantidade de dados.
Teste de imersão
Neste tipo de teste, verificaremos o comportamento de uma aplicação no ambiente, que não oferece suporte por um longo período de tempo, é conhecido como teste de absorção.
Geralmente, o teste de absorção é um tipo negativo de teste, pois já sabemos que o servidor ou ambiente não oferece suporte.
Processo de teste de desempenho
O teste de desempenho não pode ser feito manualmente porque:
- Precisamos de muitos recursos e essa abordagem se tornou mais cara.
- E a precisão não pode ser mantida quando rastreamos o tempo de resposta manualmente.
O processo de teste de desempenho será concluído nas seguintes etapas:
- Identifique cenários de desempenho
- Planejar e projetar script de teste de desempenho
- Configure o ambiente de teste e distribua a carga
- Executar scripts de teste
- Resultado
- Resultado da análise
- Identifique o gargalo
- Execute novamente o teste
Se realizarmos um fluxo positivo do processo de teste de desempenho, ele poderia seguir o processo abaixo:
Identifique cenários de desempenho
Em primeiro lugar, identificaremos os cenários de desempenho com base nos fatores abaixo:
Cenários mais comuns: Isso significa que podemos encontrar os cenários de desempenho com base nos cenários comumente usados como no Aplicativo Gmail; nós iremos realizar faça login, caixa de entrada, envie itens, escreva um e-mail e saia .
Cenários mais críticos: Cenários críticos significam usados regularmente e importantes para os negócios no aplicativo Gmail fazer login, escrever, caixa de entrada e logout .
Enorme transação de dados: Se tivermos dados enormes significa que n-número de usuários usam o aplicativo ao mesmo tempo.
Depois de identificarmos os cenários de desempenho, passaremos para a próxima etapa.
Planejar e projetar script de teste de desempenho
Nesta etapa, iremos instalar as ferramentas na Máquina do Engenheiro de Teste e acessar o servidor de testes e então escreveremos algum script de acordo com os cenários de teste e executaremos a ferramenta.
matriz de strings em c
Assim que terminarmos de escrever o roteiro, passaremos para a próxima etapa.
Configure o ambiente de teste e distribua a carga
Depois de escrever os scripts de teste, organizaremos o ambiente de teste antes da execução. E ainda, gerencie as ferramentas, demais recursos e distribua a carga de acordo com o ‘Padrão de Uso’ ou mencione a duração e estabilidade.
Executar scripts de teste
Assim que terminarmos de distribuir a carga, executaremos, validaremos e monitoraremos os scripts de teste.
Resultado
Após executar os scripts de teste, obteremos o resultado do teste. E verifique se o resultado atende ou não à meta no tempo de resposta determinado, e o tempo de resposta pode ser máximo, médio e mínimo.
Se a resposta não atender ao tempo de resposta exigido, iremos para o fluxo negativo onde executará as etapas abaixo:
Resultado da análise
Primeiramente analisaremos o resultado do teste se ele atende ou não ao tempo de resposta.
Identifique o gargalo
Depois disso, identificaremos o gargalo (bug ou problema de desempenho ). E o gargalo pode ocorrer por causa de aspectos como o problema no código, problema de hardware (disco rígido, processador RAM), problemas de rede, e a problema de software (sistema operacional) . E depois de encontrar o gargalo, iremos realizar afinação (conserto ou ajuste) para resolver esse gargalo.
Execute novamente o teste
Depois de corrigirmos os gargalos, execute novamente os scripts de teste e verifique se o resultado atende ao objetivo exigido ou não.
O problema ocorre nos testes de desempenho
Ao realizar testes de desempenho no aplicativo, alguns problemas podem ocorrer, e esses problemas também são chamados de problema de desempenho .
Os problemas de desempenho são os seguintes:
Problema no tempo de resposta
O tempo de resposta significa a rapidez com que o servidor responde à solicitação do cliente. Se a solicitação do usuário não for concluída no tempo de resposta determinado, poderá ser possível que o usuário perca o interesse no software ou aplicativo específico. É por isso que o aplicativo ou software deve ter um tempo de resposta perfeito para responder rapidamente às solicitações do usuário.
Problema de escalabilidade
Os problemas de escalabilidade ocorrem quando o aplicativo não consegue atender ao número n de usuários e às solicitações esperadas dos usuários ao mesmo tempo. É por isso que faremos teste de escalabilidade ascendente (verifique a capacidade máxima da aplicação) e teste de escalabilidade descendente (quando o tempo esperado não corresponde ao tempo real).
Gargalo
Gargalo é o nome informal de bug, que ocorre quando a aplicação é limitada por um único componente e gera um impacto negativo no desempenho do sistema.
As principais causas do gargalo são problemas de software (problemas relacionados ao sistema operacional), problemas de hardware (problemas relacionados ao disco rígido, RAM e processador), e problema de codificação, etc.
A seguir estão os gargalos de desempenho mais comuns:
exemplo de substring em java
- Utilização de memória
- Uso de disco
- Utilização da CPU
- Limitações do sistema operacional
- Utilização da rede
Problemas de velocidade
Quando realizamos testes de desempenho no aplicativo, o aplicativo deve ter velocidade mais rápida para atrair o interesse e a atenção do usuário, pois se a velocidade do aplicativo for lenta, ele poderá perder o interesse do usuário no aplicativo.
Ferramentas de teste de desempenho
Temos vários tipos de ferramentas de teste de desempenho disponíveis no mercado, sendo algumas ferramentas comerciais e ferramentas de código aberto.
Ferramentas comerciais: LoadRunner[HP], WebLOAD, NeoLoad
Ferramenta de código aberto: JMeter
LoadRunner
É uma das ferramentas mais poderosas de teste de desempenho, usada para apoiar o teste de desempenho para uma ampla variedade de protocolos, diversas tecnologias e ambientes de aplicativos.
Ele identifica rapidamente as causas mais comuns de problemas de desempenho. E também prever com precisão a escalabilidade e capacidade do aplicativo.
JMeter
O software Apache JMeter é uma ferramenta de código aberto, que é um aplicativo inteiramente Java projetado para carregar o comportamento do teste funcional e medir o desempenho.
Geralmente, ele foi projetado para testar aplicativos da Web, mas agora também foi expandido para outras funções de teste.
Apache JMeter é usado para testar o desempenho de recursos estáticos e dinâmicos e de aplicativos da web dinâmicos.
Ele pode ser usado para reproduzir a carga pesada em um servidor, rede ou objeto, grupo de servidores para testar sua resistência ou para analisar o desempenho geral sob diferentes tipos de carga.
WebLOAD
Ferramenta de teste WebLOAD usada para testar testes de carga, testes de desempenho e testes de estresse de aplicativos da web.
A ferramenta WebLOAD combina desempenho, escalabilidade e integridade como um processo único para verificação de aplicativos web e móveis.
NeoLoad
A Neotys desenvolve uma ferramenta de teste chamada NeoLoad. O NeoLoad é usado para testar os cenários de teste de desempenho. Com a ajuda do NeoLoad, podemos encontrar os gargalos na web e no processo de desenvolvimento de aplicativos móveis.
A ferramenta de teste NeoLoad é mais rápida em comparação com as ferramentas tradicionais.
Além delas, algumas outras ferramentas são Carga elétrica, ferramenta de estresse da web, LoadUI Pro, StresStimulus, LoadView, LoadNinja e RedLine13, o que ajuda a testar o desempenho do software ou aplicativo.