Investigation of Code Change and Smell to Support the Software Regression Test Selection

Regression testing is a software engineering maintenance activity that involves re-executing test cases on a modified software system to check whether code changes expose the existing faults. However, it can be time-consuming and resource-intensive, especially for large systems. Regression testing s...

Descripción completa

Detalles Bibliográficos
Autor: Mori, Allan Victor
Tipo de recurso: tesis doctoral
Estado:Versión publicada
Fecha de publicación:2024
País:Brasil
Institución:Universidade de São Paulo (USP)
Repositorio:Biblioteca Digital de Teses e Dissertações da USP
Idioma:inglés
OAI Identifier:oai:teses.usp.br:tde-28112024-143829
Acceso en línea:https://www.teses.usp.br/teses/disponiveis/55/55134/tde-28112024-143829/
Access Level:acceso abierto
Palabra clave:Abordagem de mudança e smell
Baseado em dependência
Change and smell approach
Code smell
Dependency-based
Regression testing selection
Seleção de teste de regressão
Smell de código
Descripción
Sumario:Regression testing is a software engineering maintenance activity that involves re-executing test cases on a modified software system to check whether code changes expose the existing faults. However, it can be time-consuming and resource-intensive, especially for large systems. Regression testing selection techniques can help manage this issue by selecting a subset of test cases to run. The Change Based technique selects a subset of the existing test cases and verifies modified classes. Besides reducing the test suite, this technique may reduce the capability of revealing faults. From this perspective, code smells are known to identify poor design and software quality issues. Some works have explored the association between smells and faults with some promising results. Inspired by these results, we propose combining code change and smell to select regression tests and present eight techniques. Additionally, we developed the Regression Testing Selection Tool (RTST) to automate the selection process using these techniques. We empirically evaluated the approach in Defects4J projects by comparing the new techniques effectiveness with classic regression selection techniques. The results show that the Change and Smell Intersection Based technique achieves the highest reduction rate in the test suite size but with less class coverage. On the other hand, Change and Smell Firewall technique achieves the lowest test suite size reduction with the highest fault detection effectiveness test cases, suggesting the combination of smells and changed classes can potentially find more bugs. The Smell Based technique provides a comparable class coverage to the code change and smell approach. Our findings indicate opportunities for improving the effectiveness of regression testing and highlight that software quality should be a concern throughout the software evolution.