Recentemente participei do IV EBTS, no qual participei como palestrante e com certeza, o tema mais falado neste evento foi cloud computing. Inclusive o palestrante mais aguardado do evento Profº Silvio Meira falou sobre este assunto e alertou que todos se preocupassem em se atualizar sobre o assunto na área de testes. Neste evento participei de um minicurso sobre Cloud Computing e o ministrante e meu amigo Elias Queiroga , abriu minha mente para essa área e me deixou bastante empolgado com os desafios que quero compartilhar com vocês.
Antes de falarmos sobre testes em sistemas na nuvem, precisamos entender alguns conceitos básicos sobre a mesma, e a primeira delas são os tipos de cloud que existem hoje e os principais tipo são IaaS (Infra-estrutura como serviço), PaaS (Plataforma com serviço) e SaaS (Software como serviço).
No IaaS utilizamos puramente a infra do servidor para a nossa necessidade, como exemplo armazenamento ou memória e processamento. Já no PaaS utlizamos alguma plataforma configurada no servidor, podemos citar diversos exemplos como Google App Engine, Windows Azure, etc. Por último temos o SaaS que simplesmente é o software em si que usamos na nuvem e não faltam exemplos como Google Docs, iCloud, Microsoft SharePoint Online, etc.
Algumas das características mais importantes na computação em nuvem são: segurança, performance, disponibilidade e escalabilidade. Notem que estas características não são tão triviais de serem testadas e precisam do suporte de ferramentas específicas, muitas delas até a infra-estrutura de hardware precisa ser investida para viabilizar os testes de alguns sistemas na nuvem.

Um exemplo claro que podemos dar de como testar um sistema na cloud é utilizando ferramentas como JMeter que simula o múltiplo acesso a um serviço na cloud. Como isso funciona ? A aplicação quando instalada e configurada para rodar numa única máquina, abre várias threads para acessar o sistema alvo de teste e validar a sua capacidade de atender as requisições (Figura 1). Caso o sistema falhe antes de atender a quantidade de requisições previamente definida, ai os desenvolvedores do sistema tem que prover alguma solução e provavelmente será a replicação do sistema internamente na nuvem e a inserção de um balanceador para direcionar as requisições para cada instância da aplicação, como mostra a figura 2.

E quando o sistema em teste tem como requisito uma capacidade de atender à uma quantidade de requisições maior do que a nossa máquina de teste é capaz de gerar ? Ai vem o caso no qual precisamos inverstir na infra-estrutura de hardware do nosso ambiente de teste para viabilizar a validação desse sistema na nuvem. Nesse caso podemos colocar mais máquinas no nosso ambiente de teste e configurar o Jmeter para gerenciar a geração de requisições paralelas por estas novas máquinas, com isso aumentamos a capacidade do nosso ambiente de teste para testar o sistema na nuvem. A figura 3 mostra uma máquina “chefe” que gerencia as requisições que são feitas por cada máquina “escrava”, e cada uma dessas máquinas por sua vez abre várias threads para gerar requisições ao sistema na nuvem.

Esse é apenas um exemplo de uma das características de um sistema na nuvem pode ser testada, existem diversas outras ferramentas com diferentes propósitos para validade esses sistemas. Para saber mais sobre computação na nuvem visite este site developerworks da IBM e para se aprofundar em teste para computação na nuvem, este tópico sobre cloud testing na wiki é bastante relevante .
[…] Vagas ← Testes de sistemas na nuvem […]