Publication:
Case Generator : implementación de una herramienta de pruebas basadas en asertos para una plataforma de verificación

Loading...
Thumbnail Image
Official URL
Full text at PDC
Publication Date
2017
Advisors (or tutors)
Editors
Journal Title
Journal ISSN
Volume Title
Publisher
Citations
Google Scholar
Research Projects
Organizational Units
Journal Issue
Abstract
Una de las partes más costosas dentro del desarrollo de programas es el testeo, ya que requiere un gran esfuerzo humano para poder especificar los diferentes casos de prueba, lanzarlos y analizar los resultados. Ello provoca que en la mayoría de los casos los programas se prueben mucho menos a fondo de lo que sería necesario. Por ello, en los últimos años han sido desarrolladas diversas herramientas para automatizar de manera parcial dicho proceso de testeo. Sin embargo la mayoría de ellas están especializadas en un único lenguaje de programación. Nuestro objetivo es conseguir una plataforma que permita el testeo de aplicaciones de manera automática para el usuario y que admita como entrada un programa escrito en cualquier lenguaje de programación. En este trabajo vamos a presentar la herramienta Case Generator, que se engloba dentro del proyecto CAVI-ART, siendo esta parte la encargada de generar los casos de prueba de manera automatizada, adaptándolos a las necesidades de cada ejecución. Este proyecto toma como base las ideas desarrolladas anteriormente por programas como Quickcheck, Korat o Smallcheck, pero intentando conseguir que el proceso de prueba sea más automático, y a la vez compatible con diversos lenguajes de programación tanto funcionales como no funcionales. Para lograr el primer objetivo hemos eliminado la obligación de que el usuario defina un nuevo generador para cada uno de los nuevos tipos definidos. Así, será el propio programa el que realice la tarea de investigar estos tipos y deducir un generador de casos adecuado para cada uno de ellos. Para lograr el segundo en cambio hemos creado una Representación Intermedia (IR) a la que se traducen los programas antes de ser testeados y que permite escribir una plataforma independiente del lenguaje de programación. A su vez profundizaremos en la estructura de clases de CaseGenerator y explicaremos su código, de manera que queden claras todas las ideas detrás de su funcionamiento y las razones por las que decidimos utilizar algunas tecnologías, como la librería Generics del compilador GHC y la extensión de Haskell llamada Template Haskell. Por _ultimo, tras explicar el funcionamiento de la herramienta expondremos algunos ejemplos prácticos del funcionamiento del programa al ser ejecutado con funciones reales.
One of the most costly parts in software development is testing because it requires a lot of human effort to be able to specify all the test cases launch them and analise all their results. This leads to the problems of most of the programms not being tested as much as it would be necessary. This is the reason why in the last years many testing tools have being developed to automate partialy the testing process. Nevertheless most of them are specialised on a single programming language. Our objective is building a platform that allows testing applications automatically for the user and that admits as input a program written in any programming language. Inside of this project we will talk about the tool called Case Generator, that is situated inside the CAVI-ART project, being inside of it the part in charge of generating automatically the test cases, adapting them to the needs of each execution. The project takes some ideas used previously in other programms like Quickcheck, Korat or Smallcheck but pursuing the idea of a much automatic process at the same time that it is compatible with several programming languages (functional and nonfunctional ones). To do so our first objective is to get rid of the obligation from the user to define a new generator for each of the newly defined datatypes. Doing so it would be the programm itself the one having to analyze those types and to deduct a generator _ting each of them. In order to be able to do this second change we created an Intermediate Representation (IR) to which all programms are translated before being tested which makes posible to write a plattform independent of all programming languages. In this project we will also explain the class structure of CaseGenerator and it's code to make clear all the ideas behind it's behaviour together with why we decided to use some technologies as the library Generics of the GHC compiler and the Haskell extension called Template Haskell. Finally after explaining how the plattform works we will show some examples about the program behaviour while executed with real functions.
Description
Trabajo de Fin de Grado en Ingeniería Informática (Universidad Complutense, Facultad de Informática, curso 2016/2017)
Keywords
Citation