Understanding test evolution: from highly‑configurable systems to software ecosystems - Bastos, Jonatas Ferreira (2021)
A evolução do software é inevitável se os sistemas forem planejados para sobreviver a longo prazo. Igualmente, é a necessidade de ter um bom conjunto de testes disponível para garantir a qualidade do estado atual do sistema de software e facilitar mudanças futuras. Isso é especialmente verdade no contexto de sistemas reutilizáveis, uma vez que são planejados para atender por muito tempo um nicho de mercado específico e precisam suportar um grande número de opções de configuração. No entanto, desenvolver e manter um conjunto de testes é demorado e caro. Essa situação é desafiadora para os projetos: por um lado, os testes são essenciais para o sucesso do software; por outro lado, os testes tornam-se um fardo severo durante a manutenção. Embora um corpo substancial de literatura tenha estudado testes em ambientes reutilizáveis, a análise da evolução do teste não foi abordada. Em geral, os pesquisadores analisaram estratégias de teste, técnicas de seleção de teste dinâmico e co-evolução de testes junto com outros artefatos de sistemas. Esta tese pretende aprimorar o conhecimento da evolução de testes em sistemas reutilizáveis, investigando características que indicam o esforço para desenvolver e manter a suíte de testes e desvendando como os aspectos reutilizáveis afetam os testes. O conjunto de evidências pode ajudar pesquisadores e profissionais a planejar melhor o desenvolvimento e a evolução do teste. Dessa forma, empregamos uma abordagem multi-métodos para desenvolver o entendimento da evolução de testes em sistemas configuráveis e desvendar evidências sobre o tema a partir de diversas fontes. Na primeira fase do programa de pesquisa, fornecemos uma visão geral da pesquisa existente relacionada aos assuntos desta tese e apresentamos trabalhos relacionados à nossa investigação. A segunda fase foi composta por quatro estudos empíricos. Primeiramente, realizamos um estudo de caso para analisar a evolução do teste de um grande sistema configurável. Em seguida, realizamos um estudo comparativo para avaliar a evolução do teste em 18 sistemas configuráveis e open source, de vários tamanhos e domínios, investigando assim as suas semelhanças e diferenças com 18 projetos não configuráveis. Terceiro, realizamos um estudo estendido para analisar a evolução do conjunto de testes em outra categoria de sistemas reutilizáveis verificando assim se algumas observações são recorrentes ao mesmo tempo que coletamos novos dados que suportam as descobertas. Por fim, pesquisamos os colaboradores do teste para investigar a evolução do teste do ponto de vista do desenvolvimento e melhorar as descobertas nos estágios anteriores. Este trabalho coletou um conjunto de achados da evolução dos testes, e esses achados foram fortalecidos por meio de diferentes métodos de pesquisa. Nosso trabalho forneceu uma melhor compreensão da evolução do teste em sistemas configuráveis documentando evidências observadas em projetos de código aberto e colaboradores de teste. Além disso, nesta Tese, sintetizamos as evidências coletadas e identificamos questões em aberto neste tópico de pesquisa. Essas descobertas são um passo importante para estabelecer diretrizes para abordar a evolução do teste em sistemas configuráveis.