
Defesa de Dissertação de Mestrado de Raphael Silva de Almeida – 10/10/2024, 14h, na sala 310 do Instituto de Computação e por videoconferência
Link para defesa: https://meet.google.com/wdc-whts-eiez
Impacto da Utilização de Mocks em Projetos de Código Aberto
Resumo:
Diante da crescente complexidade dos sistemas de software e da diversidade de linguagens de programação, a qualidade do código torna-se um fator crucial para o sucesso de projetos. O uso de testes de software, em especial a prática de mocking, é fundamental para garantir a confiabilidade e a eficiência dos sistemas, permitindo isolar unidades de código e simular comportamentos de componentes externos. Este trabalho investiga o uso de ferramentas de mocking em quatro linguagens de programação, com o objetivo de compreender as tendências e práticas associadas a essa técnica de teste. Foram formuladas cinco questões de pesquisa que abordam desde a identificação das ferramentas mais utilizadas por linguagem até o impacto do uso de mocks na cobertura de código. A metodologia envolveu a análise de projetos open-source hospedados no GitHub, coletando dados sobre as ferramentas de mocking empregadas, frequência de uso, tipos de dependências simuladas e métricas de cobertura. Os resultados indicam que as ferramentas mais populares são o unittest para Python, Mocha para JavaScript, PHPUnit para PHP e Mockito para Java. Observou-se também que certas ferramentas são adotadas em conjunto, sugerindo sinergias entre elas. Notou-se uma alta frequência de uso de mocks em PHP, Java e JavaScript, enquanto em Python o uso não é proporcional ao número de testes, apontando para práticas de teste distintas. Além disso, constatou-se uma preferência por simular dependências externas, especialmente em projetos JavaScript, e que não há correlação significativa entre o uso de mocks e a cobertura de código. As implicações deste estudo são relevantes para desenvolvedores, que podem aprimorar suas práticas de teste, para mantenedores de ferramentas, que podem focar em funcionalidades demandadas, e para pesquisadores, que têm oportunidades para explorar novas métricas de qualidade e eficácia dos testes. Conclui-se que a compreensão aprofundada das práticas de mocking contribui significativamente para a melhoria da qualidade e eficiência dos testes de software.
Abstract:
Given the increasing complexity of software systems and the diversity of programming languages, code quality becomes a crucial factor for the success of projects. The use of software testing, especially the practice of mocking, is fundamental to ensure the reliability and efficiency of systems, allowing the isolation of code units and the simulation of external component behaviors. This work investigates the use of mocking tools in different programming languages, aiming to understand the trends and practices associated with this testing technique. Five research questions were formulated, addressing topics ranging from the identification of the most used tools by language to the impact of using mocks on code coverage. The methodology involved analyzing open-source projects hosted on GitHub, collecting data on the employed mocking tools, frequency of use, types of dependencies simulated, and coverage metrics. The results indicate that the most popular tools are unittest for Python, Mocha for JavaScript, PHPUnit for PHP, and Mockito for Java. It was also observed that certain tools are adopted together, suggesting synergies between them. A high frequency of mock usage was noted in PHP, Java, and JavaScript, while in Python, the use is not proportional to the number of tests, pointing to distinct testing practices. Additionally, a preference for simulating external dependencies was found, especially in JavaScript projects, and no significant correlation was observed between the use of mocks and code coverage. The implications of this study are relevant for developers, who can enhance their testing practices; for tool maintainers, who can focus on demanded functionalities; and for researchers, who have opportunities to explore new metrics of test quality and effectiveness. It is concluded that an in-depth understanding of mocking practices contributes significantly to improving the quality and efficiency of software testing.
Banca examinadora:
Prof. Vânia de Oliveira Neves, UFF – Presidente
Prof. Flávio Luiz Seixas, UFF
Prof. Leonardo Gresta Paulino Murta, UFF
Profa. Simone do Rocio Senger de Souza, USP