Continuous integration with regression test application

Abstract

Orientador: Regina Lúcia de Oliveira MoraesDissertação (mestrado) - Universidade Estadual de Campinas, Faculdade de TecnologiaResumo: À medida que a complexidade de um projeto aumenta, a necessidade de integrar códigos de diferentes membros de uma equipe cresce. No ciclo de desenvolvimento de sistemas de software complexos, um dos pontos de maior risco é a integração de modificações independentes feitas por diferentes membros de uma equipe. Nesse sentido, a adoção de técnicas de teste em um ambiente de integração, visando minimizar falhas no momento da entrega do sistema de software tem emergido. Além disso, um maior número de aplicações e soluções para apoiar o desenvolvimento de sistemas em equipe tem sido disponibilizadas, facilitando o desenvolvimento colaborativo. Esta dissertação de mestrado apresenta uma arquitetura para incluir a execução de testes em um ambiente de integração contínua, para facilitar a construção dos produtos de software por uma equipe composta por vários membros. O objetivo é propor uma solução simples para aplicar uma bateria de diversos tipos de testes em um ambiente integrado, capaz de identificar de maneira contínua, quando alterações no sistema ocorrerem. Esta dissertação incluiu na arquitetura apresentada os testes unitários (por exemplo, teste de classes), testes de integração (por exemplo, testes de componentes e de combinação de componentes) e testes de regressão (por exemplo, teste que verifica se novas modificações interferem nos requisitos já implementados). A aplicação da arquitetura em um ambiente real de desenvolvimento mostrou, como resultado, uma diminuição significativa de falhas identificadas no momento de entrega de um sistema, quando comparamos com uma cópia do mesmo sistema que não foi desenvolvido com apoio da arquitetura. Essa melhoria ocorreu porque a maioria das falhas foram identificadas e corrigidas ao longo do processo, aumentando a confiabilidade do sistema. Espera-se que as equipes que adotem a solução proposta tenham como resultado uma melhora na detecção de falhas decorrentes das alterações realizadas pelos vários desenvolvedores. Além disso, um guia de boas práticas, que possam reduzir as dificuldades de implementação, adaptação e manutenção desse ambiente no futuro foi disponibilizado com livre acesso pelos desenvolvedores interessados na adoção da soluçãoAbstract: As the complexity of a project increases, the need to integrate code from different members of a team grows. In the development cycle of complex software systems, one of the riskiest points is the integration of independent modifications made by different members of a team. In this sense, the adoption of testing techniques in an integration environment, aiming to minimize failures in the delivery of the software system has emerged. In addition, a greater number of applications and solutions to support the development of team systems have been made available, facilitating collaborative development. This research presents an architecture to include the execution of tests in a continuous integration environment, to facilitate the construction of the software products by a team composed of several members. The goal is to propose a simple solution to apply a battery of several types of tests that is able to continuously identify when changes in the system occur. The focus of this dissertation is an architecture of an environment that includes the unit tests (for example, test of classes), integration tests (for example, component and component combination tests) and regression tests (for example, test that verifies if new modifications interfere in the Requirements already implemented). The application of the architecture in a real environment of development showed, as a result, a significant decrease of failures that was identified at the time of delivery of a system, when compared to a copy of the same system that was not developed with the support of the architecture. This improvement occurred because most faults were identified and corrected throughout the process, increasing the system reliability. It is expected that teams adopting the proposed solution will get improved failure detection due to changes made by various developers. In addition, a guide to best practices that could reduce the difficulties of implementing, adapting and maintaining this environment in the future was made freely available by developers interested in adopting the solutionMestradoSistemas de Informação e ComunicaçãoMestre em Tecnologi

    Similar works