Evaluating testing strategies for configurable software systems - Fischer Jônatas Ferreira (2021)
Sistemas de software configuráveis permitem que desenvolvedores mantenham uma plataforma única atendendo a uma diversidade de contextos, usos e implantações. Os testes de sistemas configuráveis são essenciais porque as configurações que falham podem prejudicar os usuários e degradar a reputação do projeto. No entanto, testar sistemas configuráveis é muito desafiador devido ao número de configurações a serem executadas em cada teste, levando a uma explosão combinatória do número de configurações e testes. Atualmente, várias estratégias de teste foram propostas para lidar com esse desafio, mas suas potenciais aplicações práticas permanecem amplamente inexploradas. Na verdade, as comparações preliminares existentes de estratégias de testes não visam um conjunto uniforme de sistemas configuráveis. Com base em um grande conjunto de dados de 30 sistemas configuráveis, esta tese compara várias estratégias para testar sistemas configuráveis encontrados por um estudo de mapeamento sistemático. No primeiro estudo, foi projetado e realizado um estudo empírico comparativo com as duas principais ferramentas de teste sólido, chamadas VarexJ e SPLat. Em um segundo estudo empírico foram comparadas dezesseis estratégias de testes pareados. Com a experiência adquirida por meio dos estudos empíricos foi proposta uma lista de dez desafios enfrentados ao criar as suítes de teste para sistemas configuráveis. Ainda, foi relatado como os autores lidaram com as suítes de teste para o conjunto de sistemas descritos nesta tese. A lista proposta inclui, por exemplo, os desafios de testar classes de alto acoplamento e de determinar métricas para medir a qualidade do conjunto de testes. Os resultados dos estudos empíricos indicam quais e quando as estratégias de testes são mais rápidas e eficazes para identificar falhas em sistemas configuráveis. No geral, os autores acreditam que os profissionais podem adquirir o conhecimento necessário por meio dos resultados alcançados, a fim de escolherem uma estratégia de teste que melhor se adapte às suas necessidades e ainda, os profissionais podem se beneficiar com as soluções propostas para cada desafio.