Dissertação

Supervised learning for Test Suit Selection in Continuous Integration EVALUATED

Continuous Integration é o processo de juntar as alterações de código dentro de um projeto de software. Este mecanismo de manutenção da branch mestre de um projeto sempre atualizada e sem falhas, levanta problemas em termos de custos computacionais, considerando a enorme quantidade de código existente em grades sistemas de software que necessita de ser testada. Dada esta situação, o trabalho dos trabalhadores torna-se mais difícil, dada a quantidade de tempo que estes têm de esperar pelo feedback das suas alterações no código - média de 1 hora na OutSystems. Reconhecendo este problema num contexto da OutSystems, esta dissertação propõe uma solução, que tenta reduzir o tempo de execução da fase de testes, selecionado apenas uma parte de todos os tests, dada uma determinada mudança no código. Isto é cumprido através do treino de um Classificador de Machine Learning com features como histórico de falhas de ficheiro de código/teste, extensão de códigos de ficheiro e outros. Os resultados obitdos pelo melhor Classificador de Machine Learning treinado mostra resultados muito bons, comparáveis à mais recente literatura na mesma área. Este classificador conseguiu reduzir o tempo mediano de execução de testes por 10 minutes, mantendo 97% de recall. Adicionalmente, o impacto de submissões de código inocentes e testes flaky é considerado e estudado de forma a perceber o contexto industrial da OutSystems.
Continuous Integration, Seleção de Testes, Modelo Classificador, testes flaky, submissões inocentes

janeiro 28, 2021, 9:0

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

Rui Filipe Lima Maranhão de Abreu

Departamento de Engenharia Informática (DEI)

Professor Associado

ORIENTADOR

Manuel Fernando Cabido Peres Lopes

Departamento de Engenharia Informática (DEI)

Professor Associado