Depuración Automática para Programas en Lenguaje C usando Algoritmos Genéticos



Depuración Automática para Programas en Lenguaje C usando Algoritmos Genéticos

Pedro Eduardo Torres Jiménez
 

Texto completo de la Tesis            Video del evento          

 



Resumen

 

Actualmente el proceso de desarrollo de software ha adquirido madurez. Una de las características más importantes del software es sin duda la confiabilidad. La experiencia indica que es fácil introducir errores por parte de los desarrolladores de manera no intencional. Por esta razón se han desarrollado distintas estrategias para localizar defectos. Nuestros servicios como energía, comunicaciones, transporte, etc. dependen de sistemas informáticos muy grandes. Por esta razón es importante detectar y eliminar la mayor cantidad posible de errores. Los trabajos actuales de detección de defectos se basan en análisis estático, dinámico e inspecciones de software. Estos métodos son muy útiles, no obstante requieren mucho tiempo y son actividades tediosas. Cuando el Software manifiesta un defecto, éste se encuentra generalmente dentro de un conjunto de datos grande. La depuración en este contexto es difícil y requiere mucho tiempo localizar la causa del defecto. Este trabajo aprovecha las ventajas de las pruebas automáticas para automatizar el proceso de depuración. Se pretende ayudar al programador a simplificar código fuente y entradas de usuario de manera automática. Como resultado se entrega un subconjunto útil que preserve las características de un defecto y pueda ser corregido fácilmente. Se presenta una biblioteca de depuración automática de programas escritos en lenguaje C que permite identificar, simplificar y aislar defectos. La biblioteca contiene los algoritmos clásicos de la literatura sobre depuración automática. Específicamente las técnicas de depuración delta, además se introduce un método de simplificación de casos de prueba basado en perfilaje y optimización usando un algoritmo genético, el cual entrega buenos resultados sin repetir pruebas. Palabras clave: simplificación de casos de prueba, aislamiento de defectos, depuración automática, depuración delta, algoritmo genético.

 

Abstract

Currently the software development process has adquired maturity. One of the most important features of the software is the reliability. Experience suggests that is not difficult to introduce errors by developers. For this reason different strategies have been developed to simplify and isolate failures. Our services and infrastrucure like energy, communications, transportation, etc. dependens of big computer systems. For this reason its important detect and remove as many bugs as possible. Recent works are based on static, dynamic analysis and Software inspections. These methods are useful but are expensive in terms of time and practice. Debugging process are very difficult when the failures are in large sets of data. This is the most common scenario. This work takes advantage of automated testing to automate the debugging process. This work help the developer to simplify user input and source code automatically. As a result we gain an useful subset which preserves the minimum characteristics of a defect and allow easily prevent failures. A library of automatic debugging we present for programs written in C language. Allowing identify, simplify and isolate the defects on failure inducing inputs. The library include the literature algorithms on automated debugging such delta debugging algoritmhs and a novel method that uses profiling technique and genetic algorithm in the input data to avoids repeated tests. Keywords: Simplification of test cases, failure isolation, automated debugging, delta debugging, genetic algorithm.