Navegación

Búsqueda

Búsqueda avanzada

El autor Juan José Domínguez-Jiménez ha publicado 6 artículo(s):

1 - Herramienta para la Prueba de Mutaciones en el Lenguaje C++

La prueba de mutaciones es una técnica basada en fallos en torno a la cual se han elaborado herramientas para un amplio abanico de lenguajes de programación. Sin embargo, el desarrollo de un marco de prueba de mutaciones no comercial para C++ estaba pendiente. En este artículo se presenta una herramienta que permite analizar código C++, generar mutantes y ejecutar un conjunto de casos de prueba para obtener resultados que nos permitan determinar su efectividad en la detección de errores en el código. La herramienta está diseñada para permitir la inclusión de nuevos operadores para cubrir cualquier característica del lenguaje. En este documento, el uso de la herramienta se muestra a través de un operador de mutación al nivel de clase.

Autores: Pedro Delgado-Pérez / Inmaculada Medina-Bulo / Juan José Domínguez-Jiménez / 
Palabras Clave: C++ - prueba de mutaciones - Prueba de software

2 - Análisis y determinación del impacto del operador de mutación en la generación genética de casos de prueba para WS-BPEL

La prueba basada en búsqueda permite generar casos de prueba automáticamente mediante la codificación de un criterio de cobertura como una función de aptitud que guía la búsqueda. Los algoritmos genéticos se han aplicado con éxito a este tipo de prueba utilizando principalmente criterios de cobertura estructural. Este trabajo presenta el análisis realizado para mejorar el comportamiento del generador de casos de prueba Rodan, que emplea un algoritmo genético para generar casos de prueba que matan mutantes producidos a partir de composiciones WS-BPEL. Se presentan los resultados obtenidos sobre un caso de estudio clásico en la literatura de prueba (un clasificador de triángulos) para tres operadores de mutación, con siembra y sin ella, y con distintos tamaños del espacio de búsqueda. Estos resultados se comparan con los obtenidos mediante generación aleatoria de casos de prueba.

Autores: Antonia Estero-Botaro / Álvaro Cortijo-García / Antonio García-Domínguez / Francisco Palomo-Lozano / Juan José Domínguez-Jiménez / Inmaculada Medina-Bulo / 
Palabras Clave:

3 - Generación de Mutantes Válidos en el Lenguaje de Programación C++

La prueba de mutaciones es una técnica basada en fallos que se ha desarrollado alrededor de un amplio rango de lenguajes de programación. Sin embargo, la construcción de un marco de trabajo de prueba de mutaciones no comercial para C++ ha sido pospuesto en favor de otros lenguajes, principalmente por la variedad de alternativas que ofrece C++. Este artículo presenta una solución factible y completa para la implementación de los operadores de mutación en C++, la cual se basa en la búsqueda de patrones en el árbol de sintaxis abstracta (AST) que el compilador Clang genera a partir del código fuente. Estos patrones se construyen según las reglas que determinan los distintos operadores de mutación, permitiendo localizar los puntos del código en los que es posible introducir una mutación. Asimismo, en el artículo se abordan distintas situaciones que han de ser consideradas para la validez de los mutantes creados. Este proceso se ilustra a través de un operador de mutación a nivel de clase, si bien este enfoque sirve para crear operadores a cualquier nivel del lenguaje.

Autores: Pedro Delgado-Pérez / Inmaculada Medina-Bulo / Juan José Domínguez-Jiménez / 
Palabras Clave: árbol de sintaxis abstracta - C++ - operador de mutación - prueba de mutaciones

4 - Generación Genética de Casos de Prueba para Composiciones WS-BPEL

La generación automática de casos de prueba juega un papel de gran importancia dentro de la prueba de software. En concreto, la prueba basada en búsqueda genera casos de prueba codificando un criterio de cobertura como una función de aptitud que guía la búsqueda. De hecho, los algoritmos genéticos han sido aplicados con éxito a la prueba basada en búsqueda utilizando principalmente criterios de cobertura estructural. Este trabajo presenta un generador de casos de prueba para composiciones WS-BPEL denominado Rodan que está basado en un algoritmo genético. Su objetivo es generar casos de prueba que maten a los mutantes producidos a partir de la composición a probar. El algoritmo genético diseñado adopta algunas de las características de los algoritmos bacteriológicos, también propuestos para la generación de casos de prueba. Hemos aplicado Rodan a una composición WS-BPEL, comparando nuestra técnica con la generación aleatoria de casos de prueba y concluyéndose que con nuestra técnica se obtienen resultados prometedores.

Autores: Antonia Estero-Botaro / Antonio García-Domínguez / Juan José Domínguez-Jiménez / Francisco Palomo-Lozano / Inmaculada Medina-Bulo / 
Palabras Clave:

5 - Assessment of class mutation operators for C++ with the MuCPP mutation system

Context: Mutation testing has been mainly analyzed regarding traditional mutation operators involving structured programming constructs common in mainstream languages, but mutations at the class level have not been assessed to the same extent. This fact is noteworthy in the case of C++ , despite being one of the most relevant languages including object-oriented features. Objective: This paper provides a complete evaluation of class operators for the C++ programming language. MuCPP, a new system devoted to the application of mutation testing to this language, was developed to this end. This mutation system implements class mutation operators in a robust way, dealing with the inherent complexity of the language. Method: MuCPP generates the mutants by traversing the abstract syntax tree of each translation unit with the Clang API, and stores mutants as branches in the Git version control system. The tool is able to detect duplicate mutants, avoid system headers, and drive the compilation process. Then, MuCPP is used to conduct experiments with several open-source C++ programs. Results: The improvement rules listed in this paper to reduce unproductive class mutants have a significant impact in the computational cost of the technique. We also calculate the quantity and distribution of mutants generated with class operators, which generate far fewer mutants than their traditional counterparts. Conclusions: We show that the tests accompanying these programs cannot detect faults related to particular object-oriented features of C++ . In order to increase the mutation score, we create new test scenarios to kill the surviving class mutants for all the applications. The results confirm that, while traditional mutation operators are still needed, class operators can complement them and help testers further improve the test suite. Autores: Pedro Delgado-Pérez, Inmaculada Medina-Bulo, Francisco Palomo-Lozano, Antonio García-Domínguez, Juan José Domínguez-Jiménez Revista: Information and Software Technology, Volume 81, January 2017, Pages 169-184, http://dx.doi.org/10.1016/j.infsof.2016.07.002 Factor de impacto: 1.569 – Q1 (listado JCR 2015)

Autores: Pedro Delgado-Pérez / Inmaculada Medina-Bulo / Francisco Palomo-Lozano / Antonio Garcia-Dominguez / Juan José Domínguez-Jiménez / 
Palabras Clave: C++ - Class mutation operators - Mutation system - Mutation testing - Object-oriented programming

6 - ARTICULO RELEVANTE:IoT–TEG: Test event generator system

Internet of Things (IoT) has been paid increasingly attention by the government, academe and industry all over the world. One of the main drawbacks of the IoT systems is the amount of information they have to handle. This information arrives as events that need to be processed in real time in order to make correct decisions. Given that processing the data is crucial, testing the IoT systems that will manage that information is required. In order to test IoT systems, it is necessary to generate a huge number of events with specific structures and values to test the functionalities required by these systems. As this task is very hard and very prone to error if done by hand, this paper addresses the automated generation of appropriate events for testing. For this purpose, a general specification to define event types and its representation are proposed and an event generator is developed based on this definition. Thanks to the adaptability of the proposed specification, the event generator can generate events of an event type, or events which combine the relevant attributes of several event types. Results from experiments and real-world tests show that the developed system meets the demanded requirements.Journal of Systems and Software, JSS Special Issue on Software Reliability EngineeringImpact factor: 2,444 (Q1)Available online 20 June 2017DOI: https://doi.org/10.1016/j.jss.2017.06.037

Autores: Lorena Gutiérrez-Madroñal / Inmaculada Medina-Bulo / Juan José Domínguez-Jiménez / 
Palabras Clave: Complex Event Processing - Event generator - Event type definition - Internet of Things - Testing