O que Ă© teste de resistĂȘncia em teste de software? (com exemplo)

⚡ Resumo Inteligente

O teste de resistĂȘncia executa um aplicativo sob uma carga normal esperada por um perĂ­odo prolongado para revelar se o desempenho se degrada com o tempo. É o teste que detecta os defeitos que uma execução de carga de uma hora nĂŁo consegue identificar.

  • 🕒 Carga sustentada: O trĂĄfego de produção previsto se manteve por horas ou dias, em vez de minutos.
  • 📉 Foco na degradação: A questĂŁo Ă© se os tempos de resposta aumentam, e nĂŁo se a meta Ă© atingida pelo menos uma vez.
  • 💧 Resultados comuns: Vazamentos de memĂłria, esgotamento do pool de conexĂ”es e crescimento ilimitado de logs ou caches.
  • 📊 Conjunto de monitoramento: MemĂłria, CPU, tempo de resposta, taxa de transferĂȘncia e conexĂ”es de banco de dados durante toda a execução.
  • đŸ› ïž Ferramentas: As ferramentas de carga padrĂŁo gerenciam o trĂĄfego, enquanto as ferramentas APM registram as curvas de recursos.
  • ⚖ Troca: Os resultados sĂŁo de grande valor, mas demoram a ser obtidos, o que limita a frequĂȘncia com que o teste pode ser realizado.

O que Ă© um teste de resistĂȘncia?

O que Ă© teste de resistĂȘncia?

Teste de ResistĂȘncia Ă© um tipo nĂŁo funcional de teste de software em que um software Ă© testado com alta carga e estendido por um perĂ­odo de tempo significativo para avaliar o comportamento do aplicativo de software sob uso sustentado. O principal objetivo dos testes de resistĂȘncia Ă© garantir que a aplicação seja capaz o suficiente para lidar com cargas prolongadas sem qualquer deterioração no tempo de resposta.

Este tipo de teste Ă© realizado no Ășltimo estĂĄgio do ciclo de execução de desempenho. O teste de resistĂȘncia Ă© um processo longo e Ă s vezes dura atĂ© um ano. Isso pode incluir a aplicação de cargas externas, como trĂĄfego da Internet ou açÔes do usuĂĄrio. Isso faz com que os testes de resistĂȘncia sejam diferentes dos Teste de carga, que geralmente termina em algumas horas ou mais.

ResistĂȘncia significa capacidade, portanto, em outras palavras, vocĂȘ pode denominar Teste de ResistĂȘncia como Teste de Capacidade.

Objetivos dos testes de resistĂȘncia

  • O objetivo principal dos testes de resistĂȘncia Ă© verificar vazamentos de memĂłria.
  • Para descobrir como o sistema funciona sob uso sustentado.
  • Para garantir que apĂłs um longo perĂ­odo, o tempo de resposta do sistema permanecerĂĄ igual ou melhor que o inĂ­cio do teste.
  • Para determinar o nĂșmero de usuĂĄrios e/ou transaçÔes que um determinado sistema suportarĂĄ e atingirĂĄ as metas de desempenho.
  • Para gerenciar as cargas futuras, precisamos entender quantos recursos adicionais (como capacidade do processador, capacidade do disco, uso de memĂłria ou largura de banda da rede) sĂŁo necessĂĄrios para suportar o uso futuro.
  • O teste de resistĂȘncia geralmente Ă© feito sobrecarregando o sistema ou reduzindo certos recursos do sistema e avaliando as consequĂȘncias.
  • É executado para garantir que nĂŁo ocorram defeitos ou vazamentos de memĂłria apĂłs o que Ă© considerado um perĂ­odo de uso relativamente “normal”.

O que monitorar em testes de resistĂȘncia

Teste de ResistĂȘncia

Nos testes de resistĂȘncia, as seguintes coisas sĂŁo testadas.

  • Teste o vazamento de memĂłria– SĂŁo feitas verificaçÔes para verificar se hĂĄ algum vazamento de memĂłria na aplicação, o que pode causar travamento do sistema ou SO
  • Teste o fechamento da conexĂŁo entre a camada do sistema – Se a conexĂŁo entre as camadas do sistema nĂŁo for fechada com sucesso, poderĂĄ travar alguns ou todos os mĂłdulos do sistema.
  • Teste a conexĂŁo do banco de dados fechada com sucesso– Se a conexĂŁo com o banco de dados nĂŁo for fechada com sucesso, poderĂĄ resultar em falha do sistema
  • Tempo de resposta do teste – O sistema Ă© testado quanto ao tempo de resposta do sistema Ă  medida que a aplicação se torna menos eficiente como resultado do uso prolongado do sistema.

Como realizar testes de resistĂȘncia

Abaixo estĂĄ a abordagem bĂĄsica de teste para teste de resistĂȘncia

  • Ambiente de teste – Identifique o hardware, software, sistema operacional necessĂĄrio para o teste de resistĂȘncia, atribuindo funçÔes e responsabilidades dentro da equipe, etc. O ambiente deve estar pronto antes da execução do teste. VocĂȘ tambĂ©m precisa estimar o tamanho comum da produção do banco de dados e o crescimento anual. Isso Ă© necessĂĄrio, portanto, vocĂȘ precisa testar como seu aplicativo responderĂĄ apĂłs um ano, dois ou cinco.
  • Criando o Plano de Teste, CenĂĄrios – Com base na natureza do teste – manual ou automatizado ou combinação de ambos, Caso de teste design, revisĂ”es e execução devem ser planejados. Testes para estressar o sistema, testes de ponto de interrupção, etc. tambĂ©m devem fazer parte do plano de teste. Testar para estressar o sistema determina o ponto de interrupção no aplicativo.
  • Estimativa de teste – Forneça a estimativa de quanto tempo levarĂĄ para concluir a fase de teste. Deve ser analisado com base no nĂșmero de testadores envolvidos e no nĂșmero de ciclos de teste necessĂĄrios.
  • AnĂĄlise de risco - Analisar o risco e tomar as medidas adequadas para a prevenção. Priorização de casos de teste de acordo com o fator de risco e identificação dos riscos e problemas abaixo que o testador pode fazer durante o teste de resistĂȘncia.
  • O desempenho permanecerĂĄ consistente ao longo do tempo?
  • Existem outros problemas menores que ainda nĂŁo foram detectados?
  • HĂĄ interferĂȘncia externa que nĂŁo foi abordada?
  • Cronograma de testes – Determine o orçamento e as entregas dentro dos prazos. Como Teste de ResistĂȘncia aplica um arranjo de carga enorme, mas natural, de transaçÔes ao sistema/aplicativo por um perĂ­odo contĂ­nuo de tempo.

Exemplo de teste de resistĂȘncia

Embora o Teste de estresse leva o sistema testado aos seus limites, Teste de resistĂȘncia leva a aplicação ao seu limite ao longo do tempo.

Por exemplo, os problemas mais complexos – vazamentos de memĂłria, utilização do servidor de banco de dados e sistemas que nĂŁo respondem – ocorrem quando o software Ă© executado por um longo perĂ­odo. Se vocĂȘ ignorar os testes de resistĂȘncia, suas chances de detectar esses defeitos antes da implantação serĂŁo bastante baixas.

Ferramentas de teste de resistĂȘncia

Vantagens dos testes de resistĂȘncia

  • Ajuda a determinar como a carga de trabalho pode ser tratada pelo sistema sob carga.
  • Fornece dados precisos que o cliente pode usar para validar ou aprimorar suas necessidades de infraestrutura.
  • Identifica problemas de desempenho que podem ocorrer apĂłs um sistema ter funcionado em alto nĂ­vel por um longo perĂ­odo de tempo
  • Problemas tĂ­picos sĂŁo identificados em testes de desempenho direcionados menores, o que significa que garante que o aplicativo permaneça disponĂ­vel mesmo quando hĂĄ uma carga enorme em um perĂ­odo de tempo muito curto.
  • O teste de resistĂȘncia tambĂ©m Ă© utilizado para verificar se hĂĄ alguma degradação de desempenho apĂłs um longo perĂ­odo de execução

Desvantagens dos testes de resistĂȘncia

  • Muitas vezes Ă© difĂ­cil definir quanto vale a pena aplicar de estresse.
  • Testes de ResistĂȘncia podem causar falhas em aplicaçÔes e/ou redes que podem resultar em interrupçÔes significativas se Ambiente de teste nĂŁo estĂŁo isolados.
  • Permanente A perda ou corrupção de dados pode ocorrer devido Ă  sobrecarga do sistema.
  • A utilização de recursos permanece muito alta depois que o estresse Ă© removido.
  • Alguns componentes do aplicativo nĂŁo respondem.
  • ExceçÔes nĂŁo tratadas sĂŁo observadas pelo usuĂĄrio final.

Como este teste se encaixa na famĂ­lia de testes de desempenho

Teste de desempenho é um termo genérico. As variantes abaixo diferem apenas na forma da carga aplicada e na duração em que ela é mantida, razão pela qual são frequentemente confundidas umas com as outras.

Tipo de teste PadrĂŁo de carregamento Pergunta que responde
Teste de carga Pico de carga esperado, curta duração O sistema atinge suas metas em condiçÔes normais de pico de tråfego?
Teste de estresse Aumentou além da capacidade até a falha. Onde ocorre a falha, e ela é resolvida de forma elegante?
teste de pico Aumento repentino e extremo, seguido de retirada. SerĂĄ que sobrevive e se recupera de um choque de trĂĄfego?
Teste de resistĂȘncia Carga normal mantida por muitas horas O desempenho se deteriora com o tempo?
teste de imersĂŁo Carga sustentada por um perĂ­odo prolongado HĂĄ vazamentos de memĂłria ou esgotamento de recursos?
Teste de estabilidade Carga variåvel em diferentes condiçÔes O sistema mantém sua confiabilidade mesmo com a mudança das condiçÔes?
teste de volume UsuĂĄrios normais, volume de dados muito grande SerĂĄ que ele consegue lidar com o crescimento da base de dados?

Os testes de resistĂȘncia e de imersĂŁo sĂŁo frequentemente tratados como sinĂŽnimos. Em termos comuns, ambos os testes sĂŁo usados ​​para avaliar a capacidade de suportar uma carga constante por um longo perĂ­odo. Quando as equipes os distinguem, o teste de resistĂȘncia se concentra em verificar se os tempos de resposta aumentam, enquanto o teste de carga se concentra no consumo de recursos, como memĂłria, arquivos e conexĂ”es. Executar um deles geralmente fornece evidĂȘncias para ambos.

Principais métricas a serem coletadas durante o teste

A qualidade de um teste de desempenho depende da qualidade dos registros feitos durante sua execução. Capture esses seis parùmetros no servidor e no cliente e compare-os com a linha de base, em vez de se basear em uma intuição.

métrico O que isso te diz Sinal de aviso
Tempo mĂ©dio de resposta ExperiĂȘncia tĂ­pica do usuĂĄrio Qualquer deriva ascendente ao longo da rota
tempo de resposta do 95Âș percentil A experiĂȘncia dos usuĂĄrios mais lentos Muito acima da mĂ©dia, o que significa inconsistĂȘncia.
Produtividade SolicitaçÔes processadas por segundo Queda com carga constante
Taxa de erro Proporção de solicitaçÔes com falha ou que expiraram. Qualquer aumento acima do limite acordado
Uso de CPU e memória Espaço livre nos recursos do servidor Memória que sobe e nunca retorna
ConexÔes de banco de dados e threads exaustão da piscina Contagens que crescem constantemente sem liberação

Leia a mĂ©dia e o percentil juntos. Uma mĂ©dia de 800 ms com um percentil 95 de 900 ms descreve um sistema consistente. A mesma mĂ©dia com um percentil 95 de 9 segundos significa que um em cada vinte usuĂĄrios estĂĄ tendo uma experiĂȘncia ruim, e a mĂ©dia estĂĄ mascarando isso.

Observe a forma, não apenas o valor. Em qualquer teste de longa duração, uma linha de recurso eståvel indica aprovação e uma linha ascendente indica vazamento, mesmo quando o valor absoluto ainda estiver confortavelmente dentro do limite no momento em que a execução termina.

Testes de resistĂȘncia: principais conclusĂ”es

  • In Engenharia de Software, O teste de resistĂȘncia Ă© um subconjunto do teste de carga.
  • O teste de resistĂȘncia Ă© um processo longo e Ă s vezes dura atĂ© um ano
  • VerificaçÔes sĂŁo feitas para verificar
  • Teste o vazamento de memĂłria
  • Tempo de resposta do teste
  • Teste a conexĂŁo do banco de dados, etc.

Perguntas Frequentes

O teste de carga verifica se o sistema atende Ă s suas metas em carga mĂĄxima durante um curto perĂ­odo. O teste de resistĂȘncia mantĂ©m uma carga normal por horas para verificar se essas metas ainda sĂŁo atendidas ao final do perĂ­odo de teste.

Qualquer tendĂȘncia sustentada de aumento no tempo de resposta ou no uso de recursos, mesmo que nenhum limite seja ultrapassado, indica que o defeito estĂĄ na prĂłpria deriva, pois ela acabarĂĄ por ultrapassar o limite em produção.

ApĂłs a aprovação nos testes funcionais e de carga, e com antecedĂȘncia suficiente para que qualquer vazamento detectado ainda possa ser corrigido, executĂĄ-lo na noite anterior ao lançamento nĂŁo deixa tempo para agir de acordo com o resultado.

O monitoramento baseado em IA detecta o ponto em que uma mĂ©trica muda de tendĂȘncia e a correlaciona com implantaçÔes ou tarefas agendadas, transformando horas de grĂĄficos em um suspeito especĂ­fico.

Isso pode ajudar a priorizar. Os modelos de risco destacam quais versĂ”es contĂȘm cĂłdigo propenso a vazamentos de cĂłdigo, de modo que as execuçÔes completas sejam reservadas para as alteraçÔes com maior probabilidade de precisar delas.

Resuma esta postagem com: