Dissertação

{en_GB=Supervised learning for Test Suit Selection in Continuous Integration } {} EVALUATED

{pt=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., en=Continuous Integration is the process of merging code changes into a software project. This mechanism of keeping the master branch of a project always updated and unfailingly, raises problems in terms of computational costs, considering the enormous amount of code existent in large software systems that needs to be tested first. Given this situation, the work of developers also becomes harder because of the amount of time they have to wait for feedback on their commits - median of 50 mins. Recognizing this problem in an Outsystems context, this paper proposes a solution that aims to reduce the execution time of the testing phase, by selecting only a subset of all the tests, given some code changes. This is accomplished by training a Machine Learning Classifier with features such as code/test files history fails, extension code files that tend to generate more errors the during testing phase and others. The results obtained by the best Machine Learning classifier trained showed great results which could be compared to recent literature done in the same area. This model managed to reduce the median test execution time by nearly 10 minutes while mantaining 97% of recall. Additionally, the impact of innocent commits and flaky tests was taken into account and studied to understand the industrial context of OutSystems.}
{pt=Continuous Integration, Seleção de Testes, Modelo Classificador, testes flaky, submissões inocentes, en=Continuous Integration, Test Selection, classifier model, flaky tests, innocent commits}

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