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 CamposExistem 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/