Blog > Teste de Performance na Nuvem

07/ago

Uma vez que o custo da construção de um servidor local de execução de testes de performance, sua manutenção e tempo gasto com a administração são muito altos, uma possível solução para o problema poderia ser utilizar a nuvem como laboratório de execução de testes. Neste post falamos um pouco sobre conceito de testes de performance e nuvem, além de apresentar um exemplo prático usando a ferramenta BlazeMeter.

Slides da palestra

Abaixo estão os slides utilizados na palestra "Teste de Performance na Nuvem" apresentada no "The Developers Conference" edição São Paulo, 2014.

Teste de Performance

O crescimento exponencial e contínuo da internet faz com que diversos produtos que se encontram em plataforma desktop migrem para web e uma vez nesse ambiente, faz-se necessário executar outros tipos de teste como: Performance, Usabilidade, Continuidade, etc. Testes que até então não eram objetivo principal ou mesmo nem eram feitos. 

Dentre os mencionados acima, talvez o que possua maior criticidade é o teste de performance, que em resumo, avalia a aplicação sobre a perspectiva de desempenho. Executando cenários que consigam revelar problemas relacionados ao tempo de resposta, a utilização dos recursos da infraestrutura, ao banco de dados, etc.

A execução dos testes de performance possuem alta complexidade quando falamos em fazê-lo manualmente, por isso, o recomendado é que estes sejam feitos utilizando ferramentas específicas, destre as mais conhecidas está o JMeter, uma aplicação open-source, escrita em Java, e muito popular na área de testes não funcionais.

Através de ferramentas como o JMeter, temos a possibilidade de criar cenários de teste e executá-los por um número específico de usuários virtuais simultâneos em um tempo específico, conseguindo assim criar estratégias de teste que dirão se a aplicação comporta-se como esperado ou se possui problemas relacionados ao seu desempenho .

Planejamento dos testes

Como qualquer outro projeto de testes, é necessário que haja o planejamento das ações que serão realizadas durante os testes, e assim, alguns fatores devem ser avaliados, como:

  • Qual é a quantidade de usuários simultâneos que serão utilizados?
  • Qual é o tempo de duração do teste?
  • Qual é o tempo de resposta ideal?
  • Qual velocidade de banda queremos utilizar durante os testes?
  • De quais países ou estados virão os acessos à minha aplicação?

Uma vez definidos estes parâmetros, consigo montar os cenários que desejo testar e então executar os testes para provar que a aplicação possui um desempenho satisfatório.

Desafios de um laboratório de testes local

A criação de um laboratório local para a execução dos testes pode ser uma atividade cara e de difícil manutenção, uma vez que precisamos adquirir recursos físicos e de software, que requerem conhecimentos avançados em infra-estrutura, suporte para utilização das ferramentas, compra de licenças de uso, entre outros.

Os recursos físicos usados para execução dos testes de performance precisam ter configuração elevada, pois a criação dos usuários virtuais consomem muito da memória de vídeo e em alguns momentos o consumo se eleva tanto que o teste é interrompido por falta de memória.

Outro problema é que, provavelmente, este laboratório de testes fique ocioso pois testes de performance geralmente não são executados a todo o tempo.

Como vimos, alguns dos desafios na criação de um laboratório local seriam:

  • Ociosidade
  • Licenças
  • Recursos Físicos
  • Escalabilidade
  • Suporte

Cloud Computing

Como vimos, existe uma série de fatores na criação de um laboratório de testes local que nos leva a pensar em soluções alternativas, e uma delas é a utilização de computação na nuvem, para que assim, possamos ter acesso a recursos físicos sem ter a necessidade que eles estejam geograficamente no interior da minha companhia.

Cristiano Caetano cita em seu artigo " Teste de Software nas Nuvens" que a computação na nuvem possui o modo de contratação "pay-per-use" (modelo de pagamento baseado no uso, semelhante aos serviços de telefonia e energia elétrica), uma possibilidade que faz crescer o interesse de empresas em contratar serviços e infraestrutura alocados na nuvem, evitando assim a ociosidade da infraestrutura local.

Outra citação feita por Cristiano Caetano em seu artigo apresenta alguns modelos de computação na nuvem, mas dois deles geralmente são candidatos a serem contratados quando queremos testar performance, o modelo SaaS e o modelo IaaS.:

  • Software como Serviço (SaaS): Podemos dizer que o SaaS representa os serviços de mais alto nível disponibilizados em uma nuvem. Esses serviços representam as aplicações completas que são oferecidas aos usuários. Os prestadores de serviços disponibilizam o SaaS na camada de aplicação, o que leva a rodar inteiramente na nuvem e pode ser considerado uma alternativa a rodar um programa em uma máquina local. Assim o SaaS traz a redução de custos, dispensando a aquisição de licença de softwares. Colocamos como exemplo de SaaS, sistemas de banco de dados e processadores de textos.
  • Infra-estrutura como Serviço (IaaS): O IaaS traz os serviços oferecidos na camada de infra-estrutura. Nestes serviços podemos incluir servidores, roteadores, sistemas de armazenamento e outros recursos de computação. Também é responsável por prover toda a infra-estrutura necessária para a SaaS e o PaaS. O IaaS traz algumas características, como uma interface única para administração da infra-estrutura, a aplicação API (Application Programming Interface) para interação com hosts, switches, roteadores e o suporte para adicionar novos equipamentos de forma simples e transparente.

SaaS vs IaaS

Teste de performance usando SaaS

Em um modelo SaaS eu não preciso me preocupar com qual é a infra-estrutura do servidor de execução dos testes de performance, pois este é administrado pela empresa responsável pelo serviço. O valor costuma ser mais alto, pois pago pelo uso da aplicação, e implicitamente pelo suporte à ferramenta, pela configuração, monitoração, instalação, licenças, etc.

Características de um teste de performance usando SaaS

  • Paga-se para utilizar um software que está na nuvem
  • Não tenho acesso ao computador que executa os testes
  • Todo o ambiente de execução dos testes já está previamente preparado
  • Crio e executo os testes através de uma interface web amigável
  • O suporte é fornecido pela empresa responsável pelo software

Teste de performance usando IaaS

Em um modelo IaaS eu contrato um computador na nuvem, e escolho qual será o sistema operacional, memória, banda e armazenamento contidos nele. Sou eu quem instalo os softwares que usarei para execução dos testes de performance e se necessário, pago pelas licenças dos softwares que utilizarei para executar os testes, caso estes não sejam open-source. O valor costuma ser mais baixo, pois pago apenas pelo uso do computador computador.

Características de um teste de performance usando IaaS

  • Paga-se para utilizar um computador que está na nuvem
  • Tenho total acesso ao computador que executará os testes
  • Preciso instalar os softwares e configurar o computador instalando as ferramentas necessárias para executar o teste de performance
  • Preciso contratar licenças das ferramentas de execução de testes de performance, caso estas não sejam open-source
  • Não há suporte

Ferramentas SaaS para Teste de Performance

O mercado de testes de performance na nuvem é bem extenso e diversas ferramentas são muito populares neste mercado. Abaixo segue uma imagem contendo uma série de aplicações destinadas especificamente a este fim:

Exemplo usando o BlazeMeter

BlazeMeter é uma aplicação SaaS para execução de testes de performance na nuvem, ele é 100% compatível com JMeter, o que permite que você crie seus testes em seu computador usando o JMeter e depois execute este script diretamente da nuvem usando o BlazeMeter.

O BlazeMeter permite fazer testes sem pagar nada, limitando-se a executar testes com até 50 usuários simultâneos, com limite máximo de tempo de teste de 20 minutos. Para ter acesso ao serviço, acesso o site  blazemeter.com e crie uma conta.

Como o foco aqui é mostrar o funcionamento do BlazeMeter, vamos utilizar um plano de testes já criado no JMeter, segue abaixo a estrutura do script "PlanoDeTesteTDC.jmx":

Passo 1: Acessar minha conta no site blazemeter.com e iniciar a criação do meu teste:

  1. Clicar em "Add test";
  2. Adicionar um nome ao meu teste;
  3. Escolher a região de onde serão executados os testes;
  4. Apontar o script que criei no JMeter;
  5. Escolher a versão do JMeter.

Passo 2: Configurar a estratégia de teste:

  1. Usaremos 30 usuários simultâneos
  2. Rampup de 10 segundos
  3. Iterações ilimitadas (O teste deve parar apenas quando esgotar o tempo que definirei no campo abaixo)
  4. A duração do teste será de 3 minutos

Passo 3: Configurar a banda de internet que utilizarei para a execução dos testes e salva-lo:

  1. Escolho a banda de internet 3G-Good
  2. Clico em Salvar

Passo 4: Inicio o teste clicando no botão "Start" e acompanho os relatórios clicando em "Report":

Passo 5: Visualizo o relatório da execução dos testes, o monitoramento do computador que executou os testes e os logs de execução.

Preços do BlazeMeter

Para consultar os preços da contratação do serviço BlazeMeter acesse a URL abaixo:

http://blazemeter.com/pricing

Conclusão

Utilizar a nuvem como uma extensão ao laboratório de testes de performance pode ser uma saída simples e controlada de economizar recursos de hardware e financeiros, além de trazer eficiência aos testes.

POSTS RELACIONADOS

AGENDA

CURSOS RELACIONADOS