Validando a escalabilidade de um sistema com testes de desempenho

Qui, Out 7, 2010

Arquitetura

Um desafio para o mercado de software 

Para milhares de empresas, o seu crescimento no mercado pode ser medido através do aumento da quantidade de usuários de seus sistemas web. Como essas empresas podem ter garantias que os seus sistemas suportam esse aumento significativo de usuários tão desejado por elas?

Imaginem o caso de uma empresa que para conseguir um aumento em sua carta de clientes realiza um investimento em uma campanha de marketing milionária. Basicamente, nessa campanha os produtos seriam vendidos com descontos de 80% caso as compras fossem realizadas no horário de 03h as 04h da madrugada de um determinado dia. Quais seriam os impactos para essa empresa se o sistema não suportar o aumento de carga proporcionado pela campanha e ficasse fora do ar?

Solução eficiente para o problema

A verdade é que existem várias formas de analisar a capacidade de um sistema manter a sua disponibilidade e desempenho esperado, frente a um aumento significativo de sua carga de usuários, ou seja, analisar sua escalabilidade. Uma das formas seria a realização de testes de desempenho e é esse o tema que será abordado neste post.

O teste de desempenho é um processo de emulação das atividades realizadas no sistema e é capaz de:

  • Determinar a quantidade de usuários que o sistema suporta;
  • Determinar o tempo de resposta do sistema;
  • Auxiliar na otimização da configuração do sistema;
  • Verificar o desempenho do sistema em diferentes plataformas (Hardware e Software);
  • Identificar o comportamento do sistema caso sofra um grande aumento inesperado da carga de usuários;

Tipos de testes de desempenho

Os quatro tipos de testes de desempenho mais utilizados são descritos a seguir:

  • Carga: Seu objetivo é validar os tempos de respostas dos processos de negócios e transações críticas em relação ao que foi especificado nos requisitos suplementares do sistema. 
  • Volume: Seu objetivo é determinar o throughput de um processo especifico. O termo Throughput possui diversas definições, nesse caso é o número máximo de transações solicitadas ao sistema por uma unidade de tempo. 
  • Stress: Seu objetivo é determinar sobre que carga o sistema pode falhar e como ele pode falhar. 
  • Longevitude: Seu objetivo é identificar os problemas de desempenho que possam aparecer após o sistema ter sido submetido a um longo período de carga elevada.

A única saída é a automatização

Fazer uma simulação de 1 mil, 10 mil ou 450 mil usuários acessando ao mesmo tempo uma determinada funcionalidade de um sistema somente é factível através da automatização. Existem várias soluções de automatização no mercado para esse segmento, entretanto abaixo estão duas dicas para serem utilizadas durante a definição do modelo de uso dessas soluções: 

  • Existem diversos tipos de usuários: Os testes automatizados devem ser realizados simulando todos os tipos de usuários possíveis. Um exemplo de modelagem de usuários é:
    • 50 % dos usuários acessam apenas a home Page;
    • 30% dos usuários navegam por todas as paginas, colocam alguns produtos no carrinho de compra, porém não efetivam as compras;
    • 15% dos usuários navegam em algumas páginas, colocam alguns produtos no carrinho de compra e efetivam algumas compras;
    • 5% dos usuários acessam diretamente a página do produto e efetiva a sua compra; 
  • É extremamente recomendado realizar apenas uma variação por vez nas variáveis utilizadas para execução dos testes (carga de usuários, configurações do sistema, base de dados, hardware, entre outros) para comparações e identificações confiáveis dos impactos da mudança.

Conclusão

Para fechar esse post, concluímos que uma das formas eficientes para validar a escalabilidade de seu sistema é o teste de desempenho. Facilmente podemos identificar também que é necessário realizar uma capacitação em toda metodologia que envolve a execução desse tipo de teste automatizado. Para quem deseja conhecer a solução líder de mercado desse segmento, que é comercializada para pequenas, médias e grandes empresas, acesse o site do IBM Rational Performance Tester: http://www-01.ibm.com/software/rational/offerings/quality/performance.html

, , , ,

Por:

Que escreveu 2 posts em Escalabilidade.


Fale com o autor