Testes de estresse são usados para garantir a estabilidade e a confiabilidade do sistema. Os testes simulam uma alta taxa de dados e de tráfego e registram como o sistema responde nestas condições. É um dos testes mais importantes para garantir o sucesso das vendas, especialmente nas datas comerciais.
Durante o teste de estresse, o software testado receberá uma alta carga de tráfego para saber o limite, até quando o software ou hardware suportarão. Isso permite melhorar o dimensionamento de infra, detectar scripts demasiadamente pesados e ter mais eficácia no gerenciamento de erros sob condições extremas.
Necessidade do Teste de Estresse
Considere os seguintes cenários:
- Durante épocas festivas, um e-commerce talvez experiencie uma alta nos acessos, ou durante um período de promoção.
- Quando um blog é citado por um jornal de maior relevância, pode gerar um número de acessos que pode derrubar o site.
- Campanhas de inscrições, matrículas ou atualizações cadastrais, com datas limites.
- Geração massiva de relatórios para análises em épocas de planejamento.
Esses e outros cenários poderão levar seus sistemas ao limite ou até extrapolá-lo. É imperativo realizar esses testes para se certificar de que as operações se mantenham estáveis quando em caso de picos de tráfego.
A falha em garantir a estabilidade pode resultar em perda de vendas e de reputação. Portanto, é vital verificar se os sistemas responderão adequadamente em circunstâncias anormais, bem como se, em caso de sobrecarga, apresentará mensagens de erro adequadas aos usuários, evitando acionamentos excessivos dos serviços de suporte técnico.
Objetivos dos Testes de Estresse
Essencialmente, há dois objetivos: saber quanto o sistema suporta e qual seu comportamento após a falha. Para realizar o teste, pode ser preciso usar uma quantidade massiva de dados. Tome cuidado ao garantir que nenhum dado importante seja perdido durante os testes. Se o sistema se recuperar como deve quando sobrecarregado, terá atingido um ponto crucial do teste, a recuperabilidade.
Diferenças entre Teste de Carga e Teste de Estresse
Teste de Carga
- Usado para simular condições normais.
- Quantidade de dados utilizada é a mesma estimada para o dia a dia de trabalho.
- Objetivo não é quebrar o sistema.
Teste de Estresse
- Testa o comportamento do sistema simulando condições extremas.
- O teste só encerra após ter gerado uma falha no sistema.
- Objetivo é quebrar o sistema, gerar falhas.
Tipos de Teste de Estresse
Teste de Estresse Distribuído
Em sistemas distribuídos cliente-servidor, os testes são realizados em todos os clientes. O papel do teste é distribuir um volume de estresse para todos e acompanhar como os clientes reagem. Quando os clientes contatam o servidor, ele começa o envio de dados para teste. No meio tempo, as máquinas dos clientes enviam sinais para o servidor. Se o servidor não receber nenhum sinal da máquina do cliente, é necessário investigar e depurar.
Como demonstra a imagem, o servidor se conecta com dois clientes, Cliente 1 e Cliente 2, mas não pode receber e nem enviar sinal para Cliente 3 e 4.
Teste de Estresse para Aplicações
Este teste tem como foco detectar defeitos relacionados com bloqueios de dados, problemas de conexão e gargalos de performance.
Teste de Estresse Transacional
Testa uma ou mais transições entre dois ou mais aplicativos. É utilizado para otimizar e refinar o sistema.
Teste de Estresse Sistêmico
Este teste integrado considera vários sistemas rodando no mesmo servidor. É usado para encontrar situações em que um aplicativo bloqueia os dados de outro aplicativo.
Teste de Estresse Exploratório
Este é um tipo de teste de estresse que pode ser usado para testar o sistema com parâmetros incomuns ou condições difíceis de acontecer em cenários reais. É usado para encontrar erros em cenários incomuns como:
- Grande número de usuários logados ao mesmo tempo
- Se um antivírus começou a rodar em todas as máquinas simultaneamente
- Se um banco de dados ficou offline quando acessado por um website
- Quando um grande volume de dados é inserido no banco de dados simultaneamente
Ferramentas recomendadas para rodar os Testes de Estresse
LoadRunner
O LoadRunner da HP é uma ferramenta muito usada para testar o loading/carregamento.
Jmeter
O Jmeter é uma ferramenta de teste open source. É um aplicativo puro Java para testar estresse e performance. Esta ferramenta tem como objetivo realizar uma gama de testes, como carregamento, funcionalidade, estresse, etc. Precisa de JDK 5 ou superior para funcionar.
Stress Tester
Esta ferramenta oferece uma análise extensa da performance de aplicativos web, além de resultados em formatos de gráfico. É muito fácil de se usar. Não precisa de scripts de altíssimo nível e é um bom investimento.
Neo Load
Uma ferramenta popular que permite testar conexão e aplicativos mobile. O Neo Load permite simular milhares de usuários para avaliar a performance e o tempo de resposta do software quando deparado com muitos acessos e dados. A ferramenta também oferece suporte e integração com a nuvem, além de testes de performance, carregamento e de estresse. É fácil de manusear, bom custo benefício e tem boa escalabilidade.
Métricas para os Testes de Estresse
As métricas ajudam a mensurar a performance de um sistema e geralmente são estudadas no fim de um teste de estresse. As métricas mais comuns são:
Escalabilidade e performance
- Páginas por segundo: Mensura quantas páginas foram requisitadas
- Taxa de transferência: Métrica básica – Tamanho dos dados de resposta
- Execuções: Número de vezes que os cenários de testes foram planejados versus o número de vezes que o cliente foi executado.
Resposta do aplicativo
- Tempo de carregamento: Tempo médio para carregar uma página ou imagem.
- Tempo para o primeiro byte: Tempo necessário para o primeiro byte de dado ou informação voltar.
- Tempo da página: Tempo necessário para carregar todas as informações de uma página.
Falhas
- Falhas de conexão: Número de falhas de conexão recusadas pelo cliente (sinal fraco).
- Quantidade de falhas: Número de tentativas que falharam.
- Tentativas falhas: Número de tentativas falhas do sistema (links quebrados).
Conclusão
O objetivo dos testes de estresse é verificar o sistema sob condições extremas. Os testes monitoram os recursos do sistema como memória, processador, conectividade, etc e verifica se o sistema apresenta a mensagens de erro corretas durante o estresse. Estes testes são essenciais para quem busca garantir estabilidade nas plataformas digitais.
Saiba mais sobre os serviços de testes de carga, performance ou estresse.