Extending a unit test framework for Prolog

En el desarrollo de testing, independientemente del lenguaje o entorno de programación, se enfrentan desafíos relacionados con la escritura y ejecución de pruebas efectivas. Estos desafíos incluyen la necesidad de diseñar pruebas que cubran una variedad de casos de uso, así como la gestión adecuada de recursos y la limpieza del estado del sistema después de cada test. Además, se busca garantizar la eficacia y fiabilidad de las pruebas, lo que implica mejorar continuamente el framework de tests existente y adoptar prácticas de desarrollo de software que promuevan la detección temprana de errores y la calidad del código. Este Trabajo de Fin de Grado se centra en mejorar el framework de pruebas de Ciao Prolog para hacerlo más robusto y completo, con el objetivo de facilitar la creación de tests complejos. En particular, nos enfocamos en el diseño e implementación de una fase de preparación, que se ejecuta antes de realizar la prueba y una fase de limpieza que se ejecuta una vez finalizada la misma. Estas fases están diseñadas para abordar los problemas encontrados a la hora de ejecutar tests en los que los recursos no se han limpiado correctamente después de su ejecución. Para analizar estos casos de prueba de manera efectiva, se han propuesto también mejoras en el sistema de filtrado de tests. Esto permite ejecutar una cantidad reducida de tests, facilitando así la focalización en el problema a resolver. Además, se ha añadido un mecanismo para definir dependencias entre diferentes tests, así como diseñado e implementado un prototipo para ejecutar pruebas gestionando esas dependencias, lo que permite un uso más eficiente de los recursos y un menor tiempo de ejecución de las pruebas. Este prototipo también mejora la detección de errores al indicar qué pruebas han fallado y cuáles se han omitido debido a que presentan dependencias respecto de una prueba que ha fallado. Finalmente, se ha realizado un estudio de caso sobre la prueba de conformidad con ISO Prolog. En este estudio de caso utilizamos las mejoras implementadas en el marco de pruebas para realizar pruebas de conformidad más precisas, lo que nos ha ayudado a desarrollar nuevas mejoras en el paquete iso_strict.
ABSTRACT
In software testing, regardless of the programming language or development environment, challenges arise concerning the writing and execution of effective tests. These challenges include the need to design tests covering a variety of use cases, as well as proper resource management and cleanup of the system state after each test. Additionally, ensuring the effectiveness and reliability of the testing process involves continuously improving the existing testing framework and adopting software development practices that promote early error detection and code quality. This study aims to enhance the testing framework of Ciao Prolog to augment its robustness and comprehensiveness, thereby facilitating the creation of more realistic and complex tests. In particular, the research focuses on the design and implementation of a setup phase preceding test execution, and a cleanup phase following its completion. These phases are designed to facilitate the handling of issues encountered when running tests where resources have not been properly cleaned up after execution. To easily analyze these test cases, improvements have also been proposed to improve the test filtering mechanism. This facilitates the execution of a reduced number of tests, thereby enabling a clearer focus on the problem in hand. Additionally, a mechanism was added to define dependencies among different tests, and a prototype was designed and implemented to execute tests while managing their dependencies, allowing more efficient use of resources and shorter test execution time. This prototype also enhances error detection by indicating which tests have failed and which ones have been skipped due to dependencies on a failed test. Finally, a case study on the testing for ISO Prolog conformance has been conducted. In this case study we use the improvements implemented in the testing framework to perform more accurate conformance testing, which has helped us develop new improvements in the iso_strict package.

​En el desarrollo de testing, independientemente del lenguaje o entorno de programación, se enfrentan desafíos relacionados con la escritura y ejecución de pruebas efectivas. Estos desafíos incluyen la necesidad de diseñar pruebas que cubran una variedad de casos de uso, así como la gestión adecuada de recursos y la limpieza del estado del sistema después de cada test. Además, se busca garantizar la eficacia y fiabilidad de las pruebas, lo que implica mejorar continuamente el framework de tests existente y adoptar prácticas de desarrollo de software que promuevan la detección temprana de errores y la calidad del código. Este Trabajo de Fin de Grado se centra en mejorar el framework de pruebas de Ciao Prolog para hacerlo más robusto y completo, con el objetivo de facilitar la creación de tests complejos. En particular, nos enfocamos en el diseño e implementación de una fase de preparación, que se ejecuta antes de realizar la prueba y una fase de limpieza que se ejecuta una vez finalizada la misma. Estas fases están diseñadas para abordar los problemas encontrados a la hora de ejecutar tests en los que los recursos no se han limpiado correctamente después de su ejecución. Para analizar estos casos de prueba de manera efectiva, se han propuesto también mejoras en el sistema de filtrado de tests. Esto permite ejecutar una cantidad reducida de tests, facilitando así la focalización en el problema a resolver. Además, se ha añadido un mecanismo para definir dependencias entre diferentes tests, así como diseñado e implementado un prototipo para ejecutar pruebas gestionando esas dependencias, lo que permite un uso más eficiente de los recursos y un menor tiempo de ejecución de las pruebas. Este prototipo también mejora la detección de errores al indicar qué pruebas han fallado y cuáles se han omitido debido a que presentan dependencias respecto de una prueba que ha fallado. Finalmente, se ha realizado un estudio de caso sobre la prueba de conformidad con ISO Prolog. En este estudio de caso utilizamos las mejoras implementadas en el marco de pruebas para realizar pruebas de conformidad más precisas, lo que nos ha ayudado a desarrollar nuevas mejoras en el paquete iso_strict.
ABSTRACT
In software testing, regardless of the programming language or development environment, challenges arise concerning the writing and execution of effective tests. These challenges include the need to design tests covering a variety of use cases, as well as proper resource management and cleanup of the system state after each test. Additionally, ensuring the effectiveness and reliability of the testing process involves continuously improving the existing testing framework and adopting software development practices that promote early error detection and code quality. This study aims to enhance the testing framework of Ciao Prolog to augment its robustness and comprehensiveness, thereby facilitating the creation of more realistic and complex tests. In particular, the research focuses on the design and implementation of a setup phase preceding test execution, and a cleanup phase following its completion. These phases are designed to facilitate the handling of issues encountered when running tests where resources have not been properly cleaned up after execution. To easily analyze these test cases, improvements have also been proposed to improve the test filtering mechanism. This facilitates the execution of a reduced number of tests, thereby enabling a clearer focus on the problem in hand. Additionally, a mechanism was added to define dependencies among different tests, and a prototype was designed and implemented to execute tests while managing their dependencies, allowing more efficient use of resources and shorter test execution time. This prototype also enhances error detection by indicating which tests have failed and which ones have been skipped due to dependencies on a failed test. Finally, a case study on the testing for ISO Prolog conformance has been conducted. In this case study we use the improvements implemented in the testing framework to perform more accurate conformance testing, which has helped us develop new improvements in the iso_strict package. Read More