Herramienta para generación y ejecución automática de pruebas aleatorias de programas en lenguaje C.



Herramienta para generación y ejecución automática de pruebas aleatorias de programas en lenguaje C

Fermín Moreno Cabrera
 

Texto completo de la Tesis            Video del evento          

 



Resumen

 

Las pruebas de software son una parte esencial del ciclo de desarrollo del software. Las pruebas constituyen la verificación y la validación del software sin las cuales no se podría alcanzar un nivel de fiabilidad y calidad aceptable para el cliente y/o usuarios finales. Es además, junto con la depuración, la actividad del desarrollo del software que requiere mayor tiempo en llevarse a cabo. Una de las soluciones para tratar de disminuir el tiempo que ocupa el proceso de pruebas es su automatización. Es por eso que hoy en día, la compleja y pesada tarea de realizar pruebas de software se basa cada vez más en el uso de herramientas automáticas. En este trabajo se desarrolló una herramienta, a la que llamamos AutoTest4C, que realiza un proceso automático de pruebas unitarias en programas escritos en lenguaje C. El código es probado con datos de prueba generados usando la estrategia de pruebas aleatorias. Además, combina las ventajas de las pruebas manuales y las pruebas automáticas. Se utilizan dos mecanismos para verificar el comportamiento adecuado del software bajo prueba: un oráculo de prueba ingresado por el usuario, un mecanismo mediante el cual se verifica si el resultado arrojado por la función probada es correcto; un manejador de excepciones para detectar fallos en tiempo de ejecución. El usuario no tiene que preocuparse en elegir que casos de prueba ejecutar, sólo tiene que proveer el software a probar, el tiempo de prueba y otras especificaciones opcionales. Todo esto se hace mediante una GUI que facilita el uso de la herramienta.

 

Abstract

Today the cumbersome task of software testing is relying more on the support received from automated tools. Software testing is an essential part of the software development cycle. Testing is verification and validation of software without which an acceptable level of reliability and quality could not be reach. It is also, along with debugging, the software development activity that requires more time to be performed. One solution for trying to decrease the time it takes the testing process is automation. That’s why today the complex task of software testing is increasingly based on the use of automatic tools. In this thesis work we developed a tool we call AutoTest4C, which perform an automated process of unit testing of programs written in C. The code is tested with test data generated using random testing strategy. It combines the advantages of manual testing and automated testing. Two mechanisms to verify proper behavior of the software under test are used: test oracle user input, a mechanism by which it is checked whether the test result is correct; an exception handler to detect faults at runtime. Users do not have to worry about choosing which test cases to execute, they only have to provide software testing, testing time and other optional specifications. All this is done through a GUI that facilitates use of the tool.