Estudo e Definição de Teste de Software para o contexto de Sistemas Multi-tenants - Pinto, Victor Hugo Santiago Costa (2019)
Multi-tenancy é um padrão arquitetural para SaaS (Software as a Service) pois permite que múltiplas organizações, ou tenants, tenham sua própria versão da aplicação executando e coexistindo em espaços virtualizados e isolados no mesmo hardware, reduzindo custos operacionais. Uma única instância com meta-dados configuráveis pode oferecer aos usuários finais, interfaces e funcionalidades alinhadas às regras de negócio diferentes para cada tenant. Entretanto, isso representa um desafio para a atividade de teste, uma vez que a execução das versões incluem fluxos de controle e dados em funcionalidades compartilhadas que podem ser afetadas pelo comportamento não determinístico, uma dificuldade conhecida na área de testes de programas concorrentes. Apesar da importância de desenvolver esses sistemas com alta qualidade, os modelos de implementação são fragmentados e não seguem uma metodologia padronizada, falta uma arquitetura de referência e abordagens de teste direcionadas às particularidades desse modelo de aplicações. Embora o modelo SaaS seja provavelmente o mais adotado no contexto de Computação em Nuvem e que multi-tenancy seja o mecanismo chave para isso, existe muita desconfiança em relação à segurança dos dados e a capacidade de uma única instância em execução não ser afetada por defeitos em versões isoladas. Este projeto de doutorado contribui nessa direção, propondo uma abordagem de teste que permite explorar defeitos relacionados ao atendimento às requisições e redirecionamentos que ocorrem nessas versões, uma vez que tais operações implicam em definições e usos subsequentes de uma variável de identificação dos tenants e seus recursos. Uma taxonomia preliminar de defeitos foi proposta, um sistema de e-commerce chamado MtShop foi desenvolvido seguindo práticas recentes, estudos experimentais foram conduzidos envolvendo testes de aceitação automatizados com execução paralela, um modelo de teste foi definido para apoiar a definição de um conjunto de critérios de cobertura e a extração de elementos requeridos pelos testes e estudos foram realizados para avaliar a aplicabilidade dos critérios propostos. Os resultados dos estudos exploratórios demonstram que a abordagem proposta é aplicável e o modelo de teste é capaz de representar aplicações multi-tenants. Os critérios podem contribuir para a qualidade desse tipo de sistemas em termos de cobertura e identificação de defeitos que possuem natureza concorrente.