Skip to content

Latest commit

 

History

History
98 lines (61 loc) · 5.93 KB

12-stress.md

File metadata and controls

98 lines (61 loc) · 5.93 KB

Teste de Stress

É um tipo de testagem que verifica a estabilidade e confiabilidade de uma aplicação.

O objetivo é medir a robustez e capacidade de solução de erros de um software sob condições de carga extremas, garantindo que a aplicação não crashe em situações de stress. Aqui, testa-se além de pontos de operação usuais.

Em engenharia de Software, teste de stress também é conhecido como teste de resistência, teste sob stress, sobrecarregando o sistema por um período curto de tempo para validar sua capacidade de trabalho.

O uso mais proeminente da técnica é para determinar o limite, após o qual, um software ou sistema quebra, verificando também se o sistema demonstra solução de erros adequada sob condições extremas.

Importância do Teste de Stress

Considere as situações de vida real que se seguem para verificar a necessidade do Teste de Stress:

  • Durante um evento, um site de compras online pode experienciar um pico súbito no tráfego, ou quando anuncia uma promoção;
  • Quando um blog é mencionado em um jornal famoso, observa aumento súbito de acessos;

É imperativo que o teste de stress seja aplicado para acomodar estas situações anormais de tráfego, a falha na acomodação pode resultar na perda de renda e reputação.

Esta técnica também é extremamente importante pelas seguintes razões:

  1. Checar se o sistema funciona em condições anormais;
  2. Exibir uma mensagem de erro apropriada quando o sistema esta sob stress;
  3. Falha do sistema em condições extremas pode resultar em lucros cessantes expressivos;
  4. É melhor estar preparado para as situações de tráfego anormais;

Objetivos do Teste de Stress

Analisar o comportamento do sistema após uma falha, para obter sucesso, o sistema deve exibir uma mensagem de erro condizente com as condições de uso extremas.

Para conduzir um teste de stress, por vezes, enormes grupos de dados podem ser usados, e perdidos, durante a testagem. Testers não devem perder estes dados sigilosos durante o processo.

O principal propósito é garantir que o sistema recupere-se após uma falha, o que é chamado de recuperabilidade

Tipos de Teste de Stress

Os testes de stress podem ser classificados em:

Teste de Stress Distribuído

Nesta modalidade o teste é feito através de todos os clientes do servidor.

A função do servidor de stress é distribuir um grupo de testes de stress por todos os clientes e rastrear os status de cada um. Após o cliente contatar o servidor, este adicionará o nome do cliente e enviará dados para teste.

Enquanto isso, as máquinas dos clientes enviam sinais de que estão conectadas com o servidor. Caso o servidor não receba quaisquer sinais das máquinas, ele precisar ser verificado para demais processos de debug.

Fluxograma Stress Distribuído

Como verifica-se na imagem, o teste pode ser apenas em users específicos, ou de maneira geral, entre todos os clientes conectadas.

Integrações norturnas são a melhor opção para a execução destes cenários. Grupos de servidores grandes precisam de um metódo mais eficiente para determinar quais computadores tiveram falhas de stress que precisam de verificação..

Teste de Stress Aplicacional

Aqui, nos concentramos em localiza defeitos relacionados a trava e bloqueio de dados, problemas de rede e gargalos de performance em uma aplicação.

Teste de Stress Transacional

Aplica o teste em uma ou mais transações entre duas ou mais aplicações. É utilizado para regulagem e otimização do sistema. É importante notar que uma transaction é expressivamente mais complexa do que uma request.

Teste de Stress Sistêmico

É o teste de stress integrado que pode ser aplicado em múltiplos sistemas rodando no mesmo servidor, utilizado para localizar defeitos em que uma aplicação gera bloqueio de dados na outra.

Teste de Stress Exploratório

Aplicado para verificar o sistema em parâmetros não usuais ou condições que são improváveis de ocorrer em um cenário real. Utilizado para encontrar defeitos inesperados como:

  • Grande número de usuários logados ao mesmo tempo;
  • Se verificações de vírus são iniciados em todas as máquinas simultâneamente;
  • Se o banco dados ficou offline quando acessado a partir de um site;
  • Quando um vasto volume de dados é inserido na database de uma vez;

Como aplicar o Teste de Stress

  1. Planejamento do Teste de Stress: Coleta os dados, analisa o sistema e define os objetivos;
  2. Criação dos Scripts de Automação: Nesta fase, cria-se os scripts de automação e são gerados os dados de teste para os cenários de stress;
  3. Execução do Script e Armazenamento dos Resultados;
  4. Análise dos Resultados;
  5. Ajustes e Otimização: Nesta etapa, realizamos os ajustes finais no sistema, alteramos configurações e otimizamos o código com o objetivo de atingir a benchmark desejada

Por fim, reaplique o ciclo ajustado para verificar se estes produziram os resultados desejados. Por exemplo, não é incomum ter de aplicar 3 ou 4 ciclos do teste de stress para atingir a performance desejada.

Métricas para Teste de Stress

  • Medindo Escalabilidade e Performance:
    • Páginas/s: Mede quantas páginas tiveram request/s
    • Taxa de Transferência: Métrica básica, volume de dados em Resposta/s
    • Cenários: Número de cenários de teste planejados vs número de vezes que um cliente foi executado
  • Resposta da Aplicação:
    • Número de Acertos: Tempo médio para busca de uma imagem ou página
    • Tempo até o Primeiro Byte: Período dispendido para o returno do primeiro byte de dados ou informação
    • Tempo de Página: Lapso temporal para dar retrieve em todas as informações da página
  • Falhas:
    • Falha em Conexões: Número de conexões falhas recusadas pelo cliente (weak signal)
    • Falha em Cenários: Número de cenários que falharam
    • Falha em Hits: Número de tentativas falhas feitas por um sistema (conexões quebradas ou imagens não vistas)