Applications of Information Theory and Artificial Intelligence to Software Testing

  1. IBIAS MARTINEZ, ALFREDO
Dirigida por:
  1. Manuel Núñez García Director

Universidad de defensa: Universidad Complutense de Madrid

Fecha de defensa: 04 de mayo de 2022

Tribunal:
  1. Mercedes Garcia Merayo Presidenta
  2. José Ignacio Requeno Jarabo Secretario
  3. Inmaculada Medina Bulo Vocal
  4. Raluca Lefticaru Vocal
  5. Franz Wotawa Vocal

Tipo: Tesis

Resumen

El Testing de Software es un campo crítico para la industria del software, ya que éste contiene las principales herramientas que se usan para asegurar la fiabilidad del software producido. Hoy en día, más del 50% del tiempo y recursos necesarios para crear un producto software son dirigidos a tareas de testing, desde el testing unitario al testing a nivel de sistema. Más aún, hay un gran interés en automatizar este campo, ya que el software cada vez es más grande y la cantidad de testing requerido crece. Sin embargo, el Testing de Software no es solo un campo orientado a la industria; también es un campo muy interesante con un objetivo noble (mejorar la fiabilidad de los sistemas software) que al mismo tiempo está lleno de problemas por resolver. Por tanto, éste deja espacio a la imaginación para soñar e intentar afrontar dichos problemas a través de la aplicación de herramientas de otros campos. En esta tesis, dichos campos son la Teoría de la Información y la Inteligencia Artificial. La Teoría de la Información es un campo con una fuerte base matemática. Su principal objetivo es medir la información de una cadena de caracteres basándose en lo común de sus componentes. La Inteligencia Artificial es un campo algorítmico que intenta aproximar soluciones para problemas exponencialmente complejos. Ambos campos están llenos de herramientas y metodológicas que pueden ayudar a afrontar algunos de los problemas que el Testing de Software presenta. Más aún, aunque ambos campos puedan parecer dispares, con herramientas que están preparadas para solucionar problemas de distintos tipos, este no es siempre el caso. A lo largo de la investigación realizada durante esta tesis se han encontrado múltiples situaciones donde el uso de herramientas de la Teoría de la Información mejoran una solución basada en Inteligencia Artificial y viceversa. De hecho, estas sinergias hacen de esta tesis un trabajo compacto más que una compilación de métodos. El principal objetivo de esta tesis es, por tanto, afrontar diferentes problemas provenientes del campo del Testing de Software y divisar formas de solucionar (o de aproximar una solución a) dichos problemas usando herramientas y resultados provenientes de los campos de la Teoría de la Información y la Inteligencia Artificial. Específicamente, esta tesis afronta el problema del Fallo en la Propagación de Errores (FEP por sus siglas en inglés), el problema de la generación de casos de test, el problema del Testing de Integración de Lineas de Producción de Software (SPLs por sus siglas en inglés), y el problema de la selección de mutantes difíciles de matar para el Testing de Mutación. Estos cuatro problemas son afrontados desde distintas perspectivas, buscando el mejor método para intentar solucionar cada uno de ellos. Para presentar la investigación realizada, la tesis expone en una primera parte una introducción a los problemas y los campos científicos asociados, remarcando la importancia de cada uno. En esta primera parte también incluye la motivación de la tesis y las asunciones realizadas durante la misma. En una segunda parte, la tesis presenta breves introducciones a los campos científicos con los que se trabaja, seguidas de un repaso al estado del arte en cada campo en relación a los problemas que se afrontan en la tesis. En una tercera parte, la tesis presenta la investigación realizada para afrontar cada problema, resaltando las herramientas utilizadas y las sinergias encontradas, as¿¿ como los debates suscitados por la investigación. Y finalmente, en una cuarta parte, la tesis presenta unas conclusiones en las que se plantea que los resultados de las anteriores propuestas son relevantes, mejoran el estado del arte y sientan nuevos precedentes para trabajo futuro. Es más, se considera que estos resultados abren nuevas líneas de trabajo para un mayor desarrollo de las propuestas y para mejorar las soluciones obtenidas.