Teste de aplicação em nuvens

A Computação em Nuvem ou Cloud Computing (CC) está se consolidando como um importante modelo de tecnologia da informação (TI) para prover recursos e serviços baseados na Internet. Em nuvens, uma grande quantidade de recursos (por ex., memória, CPU, disco) é compartilhada entre máquinas de processamento e armazenamento (i.e., nodos) com o intuito de prover um ambiente escalável e tolerante a falhas. Tudo é realizado de forma transparente ao usuário e ao desenvolvedor, que desconhecem completamente a localização dos serviços que utilizam, originando a metáfora computação em nuvem.

Contudo, construir aplicações clonáveis em nuvem é difícil, pois deve-se utilizar técnicas de desenvolvimento de sistemas distribuídos de grande escala (P2P e MapReduce) que requerem considerar questões pouco triviais na grande maioria dos sistemas, como: grande distribuição e tolerância a falhas. Em geral, uma nuvem envolve clusters e grelhas de nodos distribuídos pela Internet, onde cada novo nodo compartilha seus recursos com o resto do sistema.

Assim, quesitos como a possibilidade de serem clonados a robustez, a disponibilidade e o desempenho de tais sistemas fazem-se mister. A principal maneira de assegurar tais quesitos, e de outros, como a corretude, é o uso sistemático de testes durante as diferentes etapas de desenvolvimento. O teste de sistemas distribuídos possui características próprias para a execução e controle de testes.

Neste projeto, nós propomos a construção de um arcabouço para o desenvolvimento de testes de aplicações para nuvens sobre as arquiteturas de controle de teste previamente desenvolvidas. Assim, o foco será a definição de modelos e de uma linguagem de programação de testes que dê apoio ao desenvolvimento de testes de grande escala como um todo. Além disso, o arcabouço também prevê a criação de um gerador de dados de teste e um injetor de falhas para a reprodução de ambientes reais de nuvens.