Desenvolvimento - ASP. NET

Testes de Performance - Testes de Carga, Stress e Virtualização - Parte 3

Existem muitas razões para o teste de carga em aplicações Web. O tipo mais básico de teste de carga é usado para determinar o comportamento da aplicação Web através de condições normais e altos picos de carga. À medida que se começa o teste de carga, é recomendável se começar com um pequeno número de usuários virtuais(Virtual Users) e então incrementar gradualmente a carga do normal até o pico.

por Fábio Martinho Campos



Existem muitas razões para o teste de carga em aplicações Web. O tipo mais básico de teste de carga é usado para determinar o comportamento da aplicação Web através de condições normais e altos picos de carga. À medida que se começa o teste de carga, é recomendável se começar com um pequeno número de usuários virtuais(Virtual Users) e então incrementar gradualmente a carga do normal até o pico.

Durante esta execução observe como sua aplicação reage durante o aumento da carga de trabalho.

O processo para teste de carga pode ser visualizado a seguir:

Adicionalmente, não existem modelos universalmente aceitos para este tipo de teste. Com isso, vários outros modelos podem ser propostos.

O modelo abaixo pode ser considerado como outro exemplo para Testes de Carga:

Balanceamento de Carga(Load-Balancing): É a técnica utilizada para espalhar/distribuir o trabalho entre dois ou mais computadores, link de rede de dados, CPU’s, HD’s e outros recursos de forma que a utilização do recurso seja otimizada, maximizando assim o throughput e minimizando o tempo de resposta. Usando múltimplos componentes com balanceamento de carga, e não apenas um, pode aumentar a confiança através de redundância.

O serviço de balanceamento é normalmente oferecido por um programa dedicado ou dispositivo de hardware.

  Algumas funcionalidades do balanceamento de carga podem incluir:

- HTTP compression;

- HTTP caching;

- HTTP security;

- Manipulação de tráfego.

Testes de Stress

Teste de Stress é um tipo de Teste de Performance focado na determinação da robustez, disponibilidade e confiança da aplicação diante de condições extremas, sendo que o objetivo do é identificar problemas na aplicação que tornam-se aparente somente diante dessas condições.

Tais condições podem ser cargas de trabalho muito pesadas, alta simultaneidade de usuários ou limitações de recursos computacionais, sendo este último muito comum, uma vez que os sistemas cada vez mais estão complexos, havendo muita perda desses recursos.

Exemplos de condições de stress podem ser:

- Volume excessivo de dados e/ou usuários;

- Redução de recursos como capacidade de discos;

- Seqüenciamento inesperado.

Exemplos de sintomas relacionados ao stress podem ser:

- Dados estão perdidos e/ou corrompidos;

- Utilização dos recursos ainda continua inaceitável mesmo depois que o stress é removido;

- Componentes da aplicação falha ao responder.

Virtualização

Virtualização é a técnica utilizada para simular/emular/representar um ambiente segregado de uma plataforma, representando assim um ambiente virtual de operação de certas tarefas/atividades.

Basicamente, existem três tipos básicos de virtualização:

- Virtualização Total(Full Virtualization): Onde a virtualização é apenas conseguida combinando-se hardware e software;

- Virtualização Parcial(Partial Virtualization):  Onde a virtualização completo do S.O. não é possível ser executada em uma V.M.(Virtual Machine);

- Virtualização de Aplicações(Application Virtualization): Onde apenas a aplicação em questão será virtualizada.

 

A arquitetura de uma virtualização é mostrada a seguir:

Com a virtualização, os seguintes benefícios podem ser conseguidos:

- Administração simplificada;

- Hardware independente;

- Segurança;

- Ambiente segregado para desenvolvimento e teste de software;

- Treinamentos;

A virtualização NÃO deve ser usada para Testes de Performance!!!

O maior objetivo para virtualização em termos de Teste de Performance é a geração de cargas de trabalho(Workloads).

Fontes e Materiais de Referência:

Artigos:

- http://www.stickyminds.com

Sites:

- http://msdn.microsoft.com/en-us/library/dd327578.aspx 

- http://en.wikipedia.org/wiki/Stress_testing

- http://en.wikipedia.org/wiki/Performance_testing

- http://en.wikipedia.org/wiki/Load_testing

- http://en.wikipedia.org/wiki/Load_balancing_(computing)

- http://en.wikipedia.org/wiki/Bottleneck_(engineering)

- http://www.opensourcetesting.org/performance.php

- http://www.appperfect.com/

- http://www.webperformanceinc.com/index.html?wmi=0,0

- http://www.load-testing-tools.com/index.html

- http://www.loadea.com/

- http://www.alvicom.hu/eng/index.php

- http://www.loadtracer.com/

- http://www.stresstester.com/index.php

- http://www.loadtestingtool.com/index.shtml

- http://www.neotys.com

- http://www.loadtestingtool.com/

- http://www.web-site-test.com/

- http://www.serversupervisor.com/

Fábio Martinho Campos

Fábio Martinho Campos - Bacharel em Computação pela UNITAU (Universidade de Taubaté), MBA em Gestão de Projetos pelo IPT (Instituto de Pesquisas Tecnológicas-USP). Trabalhou no INPE-MCT (Instituto Nacional de Pesquisas Espaciais) em São José dos Campos como analista de sistemas e desenvolvedor web da Intranet e Internet por dois anos. Trabalhou na empresa alemã Liebherr Guindastes e Máquinas Operatrizes como analista de sistemas e desenvolvedor web, atuando também como analista de processos para o projeto de GED (Gerenciamento Eletrônico de Documentos) da empresa. Na IBM Brasil trabalhou por um ano como analista de teste no GTO (Global Test Organization) e SEA&T (System Engineer Architecture and Test) no projeto internacional Blue Horizon Configurator. Ainda na IBM trabalhou no Projeto CADU e SCFI do Banco Bradesco. Possui as certificações CBTS (Certificação Brasileira de Teste de Software), CQA (Certified Quality Assurance), CST (Certified Software Testing), COBIT(ISACA), ISTQB/ISEB(CTFL) e IBM Certified Specialist – Software Quality. É palestrante da disciplina de Teste de Software e Qualidade de Software, contribui para o crescimento do mercado de Teste de Software no Brasil através de palestras e eventos em universidades.