performance testing vs load testing vs stress testing
Diferença entre teste de desempenho, teste de carga e teste de estresse - com exemplos
Nosso tutorial anterior nesta série será o melhor Guia de teste de desempenho para qualquer iniciante.
com o que abrir arquivos xml
No campo de teste de software, encontramos termos como teste de desempenho, teste de carga, teste de estresse, etc. Esses termos costumam ser mal interpretados e interpretados como os mesmos conceitos.
No entanto, há uma diferença significativa entre esses três tipos de teste e é importante para um testador entender o mesmo.
=> Clique aqui para obter a série completa de tutoriais de teste de desempenho
Neste tutorial, discutiremos cada um desses tipos de teste para entender as diferenças exatas entre eles.
O que você aprenderá:
Diferença entre teste de desempenho, teste de carga e teste de estresse
# 1) Teste de desempenho
O que é teste de desempenho?
O teste de desempenho é o teste executado para verificar o desempenho dos componentes de um sistema em uma determinada situação.
Uso de recursos, escalabilidade e confiabilidade do produto também são validados neste teste. Este teste é o subconjunto da engenharia de desempenho, que se concentra em abordar problemas de desempenho no design e na arquitetura de um produto de software.
A imagem acima nos explica claramente que O Teste de Desempenho é o superconjunto para testes de carga e estresse. Outros tipos de teste incluídos no teste de desempenho são o teste de Spike, o teste de Volume, o teste de resistência e Teste de escalabilidade . Portanto, o teste de desempenho é basicamente um termo muito amplo.
Objetivo do teste de desempenho:
O objetivo principal do teste de desempenho inclui o estabelecimento do comportamento de referência do sistema. Existem vários benchmarks definidos pelo setor que devem ser atendidos durante os testes de desempenho.
O teste de desempenho não visa localizar defeitos no aplicativo. Também não passa ou falha no teste. Em vez disso, aborda a tarefa crítica de definir o benchmark e padrão para um aplicativo . O teste de desempenho deve ser feito com muita precisão. O monitoramento próximo do desempenho do aplicativo / sistema é a principal característica do teste de desempenho.
O benchmark e o padrão do aplicativo devem ser definidos em termos de atributos como velocidade, tempo de resposta, rendimento, uso de recursos e estabilidade. Todos esses atributos são testados em um teste de desempenho.
Por exemplo,
Por exemplo, você pode testar o desempenho da rede do aplicativo por meio do gráfico ‘Velocidade de conexão vs. Latência’. Latência é a diferença de tempo entre os dados para chegar da origem ao destino.
Uma página de 70 kb não levaria mais de 15 segundos para carregar para a pior conexão de modem de 28,8 kbps (latência = 1000 milissegundos), enquanto a página do mesmo tamanho apareceria em 5 segundos para a conexão média de DSL de 256 kbps (latência = 100 milissegundos).
Uma conexão T1 de 1,5 Mbps (latência = 50 milissegundos) teria o benchmark de desempenho definido como 1 segundo para atingir essa meta.
Outro exemplo seria o de um modelo de solicitação-resposta. Podemos definir como referência que a diferença de tempo entre a geração da solicitação e o reconhecimento da resposta deve estar na faixa de x ms (milissegundos) ey ms, onde x e y são os dígitos padrão.
Um teste de desempenho bem-sucedido deve projetar a maioria dos problemas de desempenho, que podem estar relacionados ao banco de dados, rede, software, hardware, etc.
# 2) Teste de carga
O teste de carga destina-se a testar o sistema, aumentando constante e continuamente a carga no sistema até atingir o limite. É um subconjunto de testes de desempenho.
O teste de carga pode ser feito facilmente com o emprego de qualquer uma das ferramentas de automação adequadas disponíveis no mercado. WAPT e LoadRunner são duas ferramentas famosas que auxiliam no teste de carga. O teste de carga também é famoso por nomes como Teste de volume e Teste de resistência .
No entanto, o teste de volume se concentra principalmente em bancos de dados. Teste de resistência testa o sistema mantendo-o sob uma carga significativa por um período prolongado de tempo.
O único propósito do teste de carga é atribuir ao sistema a maior tarefa que ele pode realizar para testar a resistência do sistema e monitorar os resultados. Um fato interessante aqui é que às vezes o sistema é alimentado com uma tarefa vazia para determinar o comportamento do sistema na situação de carga zero.
Os atributos que são monitorados em um teste de carga incluem desempenho máximo, rendimento do servidor, tempo de resposta sob vários níveis de carga (abaixo do limite de quebra), adequação do ambiente de H / W, quantos aplicativos de usuário ele pode manipular sem afetar o desempenho.
Objetivo do teste de carga:
Os objetivos do teste de carga incluem:
- Expor os defeitos em um aplicativo relacionados ao estouro de buffer, vazamentos de memória e gerenciamento incorreto de memória. Os problemas que eventualmente surgiriam como resultado do teste de carga podem incluir problemas de balanceamento de carga, problemas de largura de banda, a capacidade do sistema existente, etc.
- Determinar o limite superior de todos os componentes de um aplicativo, como banco de dados, hardware, rede, etc., para que o aplicativo possa gerenciar a carga prevista no futuro.
- Para definir os SLAs para o aplicativo.
Por exemplo,
Vamos considerar a verificação da funcionalidade de e-mail de um aplicativo, que pode ser inundado com 1000 usuários ao mesmo tempo. Agora, 1000 usuários podem disparar as transações de email (ler, enviar, excluir, encaminhar, responder) de muitas maneiras diferentes.
Se pegarmos uma transação por usuário por hora, seriam 1000 transações por hora. Simulando 10 transações / usuários, poderíamos testar a carga do servidor de e-mail ocupando-o com 10.000 transações / hora.
Outro exemplo de teste de carga é mostrado na imagem abaixo:
A imagem acima mostra um teste de carga feito na ferramenta chamada JMeter . Este teste é feito para identificar quantos usuários um sistema pode controlar. Neste teste, 100 usuários são adicionados a cada 30 segundos até que a carga alcance 1000 usuários. Cada etapa leva 30 segundos para ser concluída e o JMeter aguarda 30 segundos antes de iniciar a próxima etapa.
Assim que a carga atingir 1000 threads, todos eles continuarão em execução por 300 segundos (5 minutos) juntos e, finalmente, interromperão 10 threads a cada 3 segundos.
# 3) Teste de estresse
No teste de estresse, várias atividades para sobrecarregar os recursos existentes com trabalhos em excesso são realizadas na tentativa de quebrar o sistema. Teste negativo , que inclui a remoção dos componentes do sistema, também é feita como parte do teste de estresse.
Também conhecido como teste de fadiga , esse teste deve capturar a estabilidade de um aplicativo testando-o além de sua capacidade de largura de banda.
Portanto, basicamente, o teste de estresse avalia o comportamento de um aplicativo além do pico de carga e das condições normais.
O objetivo do teste de estresse é verificar a falha do sistema e monitorar como o sistema se recupera normalmente. O desafio aqui é configurar um ambiente controlado antes de iniciar o teste para que você possa capturar com precisão o comportamento do sistema repetidamente nos cenários mais imprevisíveis.
Os problemas que acabariam por surgir como resultado do teste de estresse podem incluir problemas de sincronização, vazamentos de memória, condições de corrida, etc. Se o teste de estresse está verificando como o sistema se comporta na situação de um aumento repentino no número de usuários , então é chamado de teste de pico.
Se o teste de estresse é para verificar a sustentabilidade do sistema ao longo de um período de tempo por meio do aumento lento do número de usuários, ele é chamado de teste de absorção.
Objetivo do teste de estresse:
O objetivo do teste de estresse é analisar relatórios pós-travamento para definir o comportamento do aplicativo após a falha.
O maior desafio é garantir que o sistema não comprometa a segurança de dados confidenciais após a falha. Em um teste de estresse bem-sucedido, o sistema voltará à normalidade junto com todos os seus componentes, mesmo após o colapso mais terrível.
Por exemplo,
Como exemplo, um processador de texto como o Writer1.1.0 do OpenOffice.org é utilizado no desenvolvimento de cartas, apresentações, planilhas, etc. O objetivo do nosso teste de estresse é carregá-lo com caracteres em excesso.
Para fazer isso, colaremos repetidamente uma linha de dados, até atingir seu limite de manipulação de um grande volume de texto. Assim que o tamanho do caractere atingir 65.535 caracteres, ele simplesmente se recusará a aceitar mais dados.
O resultado do teste de estresse no Writer 1.1.0 produz o resultado de não travar sob o estresse e lidar com a situação normalmente, o que garante que o aplicativo está funcionando corretamente, mesmo sob condições de estresse rigorosas.
Outro exemplo de teste de carga que descreve um teste de pico por meio de aumento repentino de 7.000 usuários é mostrado abaixo:
FAQ's
Tendo discutido o suficiente sobre teste de desempenho, teste de estresse e teste de carga, vamos examinar algumas perguntas frequentes relacionadas para as quais os testadores procuram uma resposta.
P # 1) O teste de carga e o teste de desempenho são iguais?
Responda: A resposta para isso é ‘Não’. Eles não são os mesmos.
Agora você deve ter entendido claramente a diferença entre teste de desempenho e teste de carga. Você pode consultar o resumo tabular abaixo para ver como o desempenho e o teste de carga têm diferentes objetivos, atributos de escopo para estudar e problemas para descobrir.
Q # 2) É um teste injusto realizar o teste de estresse ao mesmo tempo em que realiza o teste de carga?
Responda: Essa também é uma pergunta comum em muitas entrevistas de teste de software e exames de certificação, pois é injusto fazer o teste de estresse e o teste de carga paralelamente? A resposta para isso é ‘Não’. Não é injusto fazer o teste de estresse ao mesmo tempo que você está fazendo o teste de carga.
Nenhum teste é injusto. Como testador, seu trabalho é encontrar problemas. No entanto, as realidades dos testes de software podem se aplicar e qualquer problema que você detectar nesta situação pode não ser corrigido.
P # 3) O teste de recuperação faz parte do teste de desempenho?
Responda: Sim, o teste de recuperação é categorizado em teste de desempenho e, às vezes, também é conduzido com teste de carga. No teste de recuperação , ele é acessado para avaliar a capacidade de recuperação de um aplicativo de falhas, travamentos, falhas de hardware e outros problemas semelhantes.
Nesta atividade, o software é forçado a falhar e então é verificado se ele é capaz de se recuperar corretamente. Por exemplo, reiniciar o sistema repentinamente quando um aplicativo estiver em execução e, em seguida, verificar a integridade dos dados do aplicativo.
P # 4) O teste de desempenho requer codificação?
Responda: O teste de desempenho não exige que você conheça o nível avançado de codificação. No entanto, ter um conhecimento fundamental de programação é uma vantagem adicional.
Por exemplo, se estiver usando JMeter, é bom conhecer os fundamentos do Java. Ele pode ajudá-lo a depurar certas coisas e você também pode escrever seu próprio script, se necessário.
P # 5) O que é o teste de Spike no teste de desempenho?
Responda: No teste de pico, a carga é aumentada ou diminuída abruptamente por um grande número de usuários e, posteriormente, o comportamento do sistema é observado. O teste de pico é feito principalmente para verificar se o sistema é capaz de lidar com mudanças repentinas na carga.
Diferença entre teste de carga e estresse
Para resumir, vamos observar as principais diferenças entre o teste de carga, o teste de estresse, bem como o teste de desempenho na tabela abaixo:
Teste de performance | Teste de carga | Teste de estresse | |
---|---|---|---|
Domínio | Superconjunto de teste de carga e estresse | Um subconjunto de testes de desempenho. | Um subconjunto de testes de desempenho. |
Escopo | Âmbito muito amplo. Inclui - Teste de carga, teste de estresse, teste de capacidade, teste de volume, teste de resistência, teste de pico, teste de escalabilidade e teste de confiabilidade, etc. | Escopo mais estreito em comparação ao teste de desempenho. Inclui teste de volume e teste de resistência. | Escopo mais estreito em comparação ao teste de desempenho. Inclui teste de absorção e teste de pico. |
Objetivo principal | Para definir o benchmark e os padrões para a aplicação. | Para identificar o limite superior do sistema, defina o SLA do aplicativo e veja como o sistema lida com grandes volumes de carga. | Para identificar como o sistema se comporta sob cargas intensas e como ele se recupera de falhas. Basicamente, para preparar seu aplicativo para o pico de tráfego inesperado. |
Limite de carga | Ambos - abaixo e acima do limite de uma quebra. | Até o limite da quebra | Acima do limite de quebra |
Atributos estudados | Uso de recursos, confiabilidade, escalabilidade, uso de recursos, tempo de resposta, taxa de transferência, velocidade, etc. | desempenho máximo, taxa de transferência do servidor, tempo de resposta sob vários níveis de carga (abaixo do limite de quebra), adequação do ambiente de H / W, o número de aplicativos do usuário que pode manipular, requisitos de balanceamento de carga, etc. | Estabilidade além da capacidade de largura de banda, tempo de resposta (acima do limite de quebra), etc. |
Problemas identificados por meio deste tipo de teste | Todos os bugs de desempenho, incluindo inchaço do tempo de execução, o escopo para otimização, problemas relacionados à velocidade, latência, rendimento, etc. Basicamente - qualquer coisa relacionada ao desempenho! | Problemas de balanceamento de carga, problemas de largura de banda, problemas de capacidade do sistema, tempo de resposta ruim, problemas de taxa de transferência, etc. | Brechas de segurança com sobrecarga, problemas de corrupção de dados em situação de sobrecarga, lentidão, vazamentos de memória, etc. |
Diferença entre teste de carga, estresse e volume
A esta altura, já sabemos sobre os testes de carga e estresse, juntamente com as diferenças entre os dois. Vamos agora explorar o que é teste de volume e como ele difere do teste de carga e teste de estresse.
O teste de volume também é um tipo de teste de desempenho que se concentra principalmente no banco de dados.
No teste de volume, é verificado como o sistema se comporta em relação a um determinado volume de dados. Assim, os bancos de dados ficam cheios de sua capacidade máxima e seus níveis de desempenho como tempo de resposta e rendimento do servidor são monitorados.
Para mantê-lo muito simples, a diferença entre os testes de carga, estresse e volume é mostrada abaixo:
Teste de volume | Teste de carga | Teste de estresse |
---|---|---|
Uma grande quantidade de dados | Um grande número de usuários | Muitos usuários, muitos dados, para falha do sistema. |
Conclusão
Neste tutorial, vimos e entendemos por meio de exemplos como os testes de desempenho, teste de carga e teste de estresse são diferentes uns dos outros e qual é o escopo de cada tipo de teste.
Também demos uma breve olhada em muitas categorias de teste de desempenho, como teste de pico, teste de recuperação, teste de volume, etc. e entendemos como cada um deles é diferente um do outro.
Esperamos que este tutorial tenha sido de grande ajuda para você entender a diferença prática entre teste de desempenho, carga e estresse.
Verifique nosso próximo tutorial para saber mais sobre testes funcionais versus testes de desempenho.
=> Visite aqui para ver a série completa de tutoriais de teste de desempenho
PREV Tutorial | PRÓXIMO Tutorial
Leitura recomendada
- Um guia completo de teste de desempenho com exemplos
- Guia de teste de estresse para iniciantes
- Guia completo de teste de carga para iniciantes
- Teste de carga, estresse e desempenho de aplicativos da Web usando WAPT
- Teste de carga com tutoriais HP LoadRunner
- Teste de desempenho de nuvem: provedores de serviço de teste de carga baseado em nuvem
- Teste funcional versus teste de desempenho: deve ser feito simultaneamente?
- Teste de carga usando LoadUI - uma ferramenta de teste de carga gratuita e de código aberto