Ayuda
Ir al contenido

Dialnet


Hunting bugs: a study of the change history of open-source software projects and its application to the detection of how these changes introduce bugs

  • Autores: Jean Michel Maes
  • Directores de la Tesis: Micael Gallego Carrillo (dir. tes.), Francisco Górtazar Bellas (codir. tes.)
  • Lectura: En la Universidad Rey Juan Carlos ( España ) en 2023
  • Idioma: español
  • Tribunal Calificador de la Tesis: Fabio Palomba (presid.), Carlos Enrique Cuesta Quintero (secret.), Sira Vegas Hernández (voc.)
  • Programa de doctorado: Programa de Doctorado en Tecnologías de la Información y las Comunicaciones por la Universidad Rey Juan Carlos
  • Materias:
  • Enlaces
    • Tesis en acceso abierto en: TESEO
  • Resumen
    • Finding code changes that introduced bugs is important both for practi- tioners and researchers, but doing it precisely is a manual, effort-intensive process. There are several studies that try to automatically detect these changes that introduce the bug. The most recognized state of the art in this field is the SZZ algorithm, which is based on identifying the change that fix the bug to analyze the lines that have been modified or deleted, assuming that the bug was introduced by the last change made in those lines before the fix. One of the main limitations is that when the assumption of the al- gorithm is not met: the lines that introduced the error are not the same as the lines that were later fixed. A recent work (presented as a PhD. Thesis by Gema Rodriguez in 2018) offered a theoretical model, called the "per- fect test method", which proposed a completely different approach to the SZZ and aimed to mitigate the limitations of this algorithm. The perfect test method is a theoretical construct aimed at detecting bug-introducing changes (BIC) through a theoretical perfect test. This perfect test always fails if the bug is present, and passes otherwise. In theory, this perfect test would allow to detect the bug in the change history of a project.

      In this PhD. Thesis, one of the main objectives is to operationalize this theoretical construct. It is common practice in software development that when a bug is detected and fixed, developers write a test that detects the bug in case it reappears, referred to as a regression test. This test may even be available as part of the bug report before the bug is fixed (the fix being test-driven). This dissertation hypothesizes that regression tests can be used as perfect tests to detect the change that introduced the bug.

      One of the main problems of operationalizing this approach, pointed out in the previous work, is the difficulty that can be encountered when running this regression test on previous versions of the code. A step prior to the execution of the tests is the building of the project, which requires down- loading the dependencies of that project and compiling the source code (if the language requires it). In order to achieve the above-mentioned objec- tive, this thesis will also carry out a study on the buildability of the previous versions of the code, verifying how far they can be built and what problems can be encountered during the process. This dissertation also extends the abovementioned study to check whether, in addition to being able to build the source code, we can build and run its tests. These two studies are in- tended to shed some light on the problems of the initial proposal of the operationalization of the perfect test in order to be able to implement it with the knowledge acquired.

      The results obtained in this thesis show that a) compiling past snap- shots is greatly affected by time unless mitigation measures are applied; b) testing past snapshots is mainly affected by compilation, but contrary to what was expected, not all tests pass in all commits; c) operationalization of the perfect test method through regression tests is feasible and can be completely automated in practice when tests can be transplanted and run in past snapshots of the code. Given that implementing regression tests when a bug is fixed is considered a good practice, when developers follow it, they can detect effortlessly bug-introducing changes by using the proposed operationalization of the perfect test method.


Fundación Dialnet

Dialnet Plus

  • Más información sobre Dialnet Plus

Opciones de compartir

Opciones de entorno