Este documento describe un lenguaje de dominio específico llamado Wodel para la mutación de modelos. Wodel proporciona primitivas de alto nivel para la mutación de modelos de manera independiente del dominio, y permite la generación y validación de modelos mutantes. Wodel también incluye servicios para el desarrollo de aplicaciones basadas en la mutación de modelos, como la generación automática de ejercicios y herramientas de pruebas de mutación.
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...Pablo Gómez Abajo
Las pruebas de mutación (MT) tienen como objetivo la evaluación de los casos de prueba midiendo su eficiencia para detectar fallos. Esta técnica implica modificar los programas bajo prueba para emular fallos comunes de programación y evaluar si los casos de prueba existentes detectan dichas mutaciones. Las pruebas de mutación se han estudiado de forma exhaustiva desde 1970, y se han propuesto muchas herramientas de pruebas de mutación para lenguajes utilizados ampliamente como C, Java, Fortran, Ada y SQL, y notaciones como redes de Petri. No obstante, crear herramientas de pruebas de mutación es costoso y propenso a errores, lo que puede obstaculizar su creación para nuevos lenguajes de programación y lenguajes de dominio-específico (de modelado).
En este trabajo, se propone un entorno llamado Wodel-Test que reduce el esfuerzo para crear herramientas de pruebas de mutación. Con este objetivo, se sigue un enfoque dirigido por modelos por medio del que se sintetizan las herramientas de pruebas de mutación a partir de una descripción de alto nivel. Esta descripción utiliza el lenguaje de dominio específico Wodel para definir y ejecutar las mutaciones de modelos. Wodel es independiente del dominio, es decir, permite la creación de operadores de mutación para cualquier lenguaje definido mediante un meta-modelo. Partiendo de la definición de los operadores de mutación, Wodel-Test genera un entorno de pruebas de mutación que transforma los programas bajo prueba en modelos, aplica los operadores de mutación, y evalúa el conjunto de pruebas contra los mutantes generados, proporcionando una rica colección de métricas de pruebas de mutación. En el trabajo, se proporciona una evaluación del enfoque basada en la creación de herramientas de pruebas de mutación para Java y el lenguaje de transformación de modelos ATL.
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...Pablo Gómez Abajo
Las pruebas de mutación (MT) tienen como objetivo la evaluación de los casos de prueba midiendo su eficiencia para detectar fallos. Esta técnica implica modificar los programas bajo prueba para emular fallos comunes de programación y evaluar si los casos de prueba existentes detectan dichas mutaciones. Las pruebas de mutación se han estudiado de forma exhaustiva desde 1970, y se han propuesto muchas herramientas de pruebas de mutación para lenguajes utilizados ampliamente como C, Java, Fortran, Ada y SQL, y notaciones como redes de Petri. No obstante, crear herramientas de pruebas de mutación es costoso y propenso a errores, lo que puede obstaculizar su creación para nuevos lenguajes de programación y lenguajes de dominio-específico (de modelado).
En este trabajo, se propone un entorno llamado Wodel-Test que reduce el esfuerzo para crear herramientas de pruebas de mutación. Con este objetivo, se sigue un enfoque dirigido por modelos por medio del que se sintetizan las herramientas de pruebas de mutación a partir de una descripción de alto nivel. Esta descripción utiliza el lenguaje de dominio específico Wodel para definir y ejecutar las mutaciones de modelos. Wodel es independiente del dominio, es decir, permite la creación de operadores de mutación para cualquier lenguaje definido mediante un meta-modelo. Partiendo de la definición de los operadores de mutación, Wodel-Test genera un entorno de pruebas de mutación que transforma los programas bajo prueba en modelos, aplica los operadores de mutación, y evalúa el conjunto de pruebas contra los mutantes generados, proporcionando una rica colección de métricas de pruebas de mutación. En el trabajo, se proporciona una evaluación del enfoque basada en la creación de herramientas de pruebas de mutación para Java y el lenguaje de transformación de modelos ATL.
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaMicael Gallego
Introducción a TypeScript desde el punto de vista de un desarrollador Java. TS en un lenguaje que transpila a JavaScript y se puede usar tanto para el desarrollo web front-end como para el backend con Node.js. Angular 2, el framework de moda, recomienda su uso.
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?Micael Gallego
Charla del 12 de Marzo de 2014 en el MadridJUG, el grupo de usuarios de Java de Madrid. En ella se presentó JavaScript desde el punto de vista de un programador Java que se adentra en ese maravilloso mundo.
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.Isabel Gómez
Consiste en una serie de ejercicios para aprender correctamente el uso de las variables y sus rangos. Además de la problemática relacionada con ellas. Como por ejemplo el casting o convertir variables, o los rangos de éstas variables.
Presentación para la charla "The Billion Dollar Mistake".
En esta charla presento el origen de null, que problemas tiene y como solucionarlos en Java 8 con Optional.
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletasatSistemas
Con frecuencia encontramos en las organizaciones aplicaciones totalmente estables, funcionales y productivas, pero cuestionadas desde algún punto de vista tecnológico o económico.
En este vídeo, analizaremos los motivos que inciden en la decisión de modernizar estas aplicaciones así como los distintos escenarios. Compartiremos los factores clave de éxito para abordar, con total garantía, un proyecto de migración a estándares abiertos.
Ingeniería del Software dirigida por modelos -Versión para incrédulosJordi Cabot
Presentación en el 2do. Foro de Ingeniería de Software
Tendencias para automatizar el desarrollo de software. Hablando de modelado de software, generación de código,...
Slides para la charla sobre Action-Domain-Responder del VLCTechFest 2018.
Action-Domain-Responder (ADR) es un patrón de arquitectura propuesto por Paul M. Jones pensado para sustituir MVC en el desarrollo backend.
Analizaremos MVC a fondo y veremos por qué no es un buen patrón para aplicaciones web y cómo ADR está pensado para suplir todas sus carencias.
Grammarware engineering: un enfoque dirigido por modelosPatxi Gortázar
El objetivo de la tesis es proporcionar un enfoque up-down, en lugar de un enfoque down-up en la construcción de herramientas de soporte para lenguajes de programación.
La idea principal es definir el lenguaje partiendo de su sintaxis abstracta (un modelo orientado a objetos) y decorar posteriormente este modelo con la sintaxis concreta.
A partir de ahí, mediante técnicas de MDE, se pueden generar diferentes tipos de herramientas como editores, compiladores o parsers.
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaMicael Gallego
Introducción a TypeScript desde el punto de vista de un desarrollador Java. TS en un lenguaje que transpila a JavaScript y se puede usar tanto para el desarrollo web front-end como para el backend con Node.js. Angular 2, el framework de moda, recomienda su uso.
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?Micael Gallego
Charla del 12 de Marzo de 2014 en el MadridJUG, el grupo de usuarios de Java de Madrid. En ella se presentó JavaScript desde el punto de vista de un programador Java que se adentra en ese maravilloso mundo.
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.Isabel Gómez
Consiste en una serie de ejercicios para aprender correctamente el uso de las variables y sus rangos. Además de la problemática relacionada con ellas. Como por ejemplo el casting o convertir variables, o los rangos de éstas variables.
Presentación para la charla "The Billion Dollar Mistake".
En esta charla presento el origen de null, que problemas tiene y como solucionarlos en Java 8 con Optional.
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletasatSistemas
Con frecuencia encontramos en las organizaciones aplicaciones totalmente estables, funcionales y productivas, pero cuestionadas desde algún punto de vista tecnológico o económico.
En este vídeo, analizaremos los motivos que inciden en la decisión de modernizar estas aplicaciones así como los distintos escenarios. Compartiremos los factores clave de éxito para abordar, con total garantía, un proyecto de migración a estándares abiertos.
Ingeniería del Software dirigida por modelos -Versión para incrédulosJordi Cabot
Presentación en el 2do. Foro de Ingeniería de Software
Tendencias para automatizar el desarrollo de software. Hablando de modelado de software, generación de código,...
Slides para la charla sobre Action-Domain-Responder del VLCTechFest 2018.
Action-Domain-Responder (ADR) es un patrón de arquitectura propuesto por Paul M. Jones pensado para sustituir MVC en el desarrollo backend.
Analizaremos MVC a fondo y veremos por qué no es un buen patrón para aplicaciones web y cómo ADR está pensado para suplir todas sus carencias.
Grammarware engineering: un enfoque dirigido por modelosPatxi Gortázar
El objetivo de la tesis es proporcionar un enfoque up-down, en lugar de un enfoque down-up en la construcción de herramientas de soporte para lenguajes de programación.
La idea principal es definir el lenguaje partiendo de su sintaxis abstracta (un modelo orientado a objetos) y decorar posteriormente este modelo con la sintaxis concreta.
A partir de ahí, mediante técnicas de MDE, se pueden generar diferentes tipos de herramientas como editores, compiladores o parsers.
Taller evento TestingUY 2015 - Técnicas de Automatización Going from GOOD to ...TestingUy
Expositores: Federico Regueira, Diego Tortoriello y Gonzalo Ciosek Infocorp
Resumen:
Demostración del uso de un framework de automatización para interacción directa con objetos de una página web.
Se propone hacer una presentación teórica de la automatización de pruebas sobre Selenium, sus obstáculos típicos y cómo superarlos mediante el uso de otro framework; creando scripts de automatización más robustos y con mayor mantenibilidad.
Asimismo, se propone hacer una práctica en conjunto con los participantes, para que puedan ver y entender por un medio más tangible, la diferencia y ventajas que esta nueva estrategia nos brinda.
Introducción a la optimización de software, consejos, metodología y tools.
Ejemplo y documentación en:
https://drive.google.com/open?id=13egVpX2uOSX7-BWyCvFrpZul6EOEM6_U
Wodel-Edu: A tool for the generation and evaluation of diagram-based exercisesPablo Gómez Abajo
Creating and grading exercises are recurring tasks within higher education. When these exercises are based on diagrams - like logic circuits, automata or class diagrams - we can represent them as models, and use model-driven engineering techniques for the large-scale generation of quizzes, which can be automatically graded.
In this research demo, we showcase Wodel-Edu, a domain-independent tool for the generation and automated evaluation of diagram-based exercises. Wodel-Edu is built atop Wodel, an extensible tool for model mutation, and offers seven kinds of diagram exercises. It supports code generation from the exercises for the Moodle platform, the web, Android and iOS applications.
Automated engineering of domain-specific metamorphic testing environmentsPablo Gómez Abajo
Context:
Testing is essential to improve the correctness of software systems. Metamorphic testing (MT) is an approach especially suited when the system under test lacks oracles, or they are expensive to compute. However, building an MT environment for a particular domain (e.g., cloud simulation, model transformation, machine learning) requires substantial effort.
Objective:
Our goal is to facilitate the construction of MT environments for specific domains.
Method:
We propose a model-driven engineering approach to automate the construction of MT environments. Starting from a meta-model capturing the domain concepts, and a description of the domain execution environment, our approach produces an MT environment featuring comprehensive support for the MT process. This includes the definition of domain-specific metamorphic relations, their evaluation, detailed reporting of the testing results, and the automated search-based generation of follow-up test cases.
Results:
Our method is supported by an extensible platform for Eclipse, called Gotten. We demonstrate its effectiveness by creating an MT environment for simulation-based testing of data centres and comparing with existing tools; its suitability to conduct MT processes by replicating previous experiments; and its generality by building another MT environment for video streaming APIs.
Conclusion:
Gotten is the first platform targeted at reducing the development effort of domain-specific MT environments. The environments created with Gotten facilitate the specification of metamorphic relations, their evaluation, and the generation of new test cases.
Wodel-Test: A Model-Based Framework for Language-Independent Mutation TestingPablo Gómez Abajo
Mutation testing (MT) targets the assessment of test cases by measuring their efficiency to detect faults. This technique involves modifying the program under test to emulate programming faults, and assessing whether the existing test cases detect such mutations. MT has been extensively studied since the 70's, and many tools have been proposed for widely used languages like C, Java, Fortran, Ada and SQL; and for notations like Petri-nets. However, building MT tools is costly and error-prone, which may prevent their development for new programming and domain-specific (modelling) languages.
In this paper, we propose a framework called Wodel-Test to reduce the effort to create MT tools. For this purpose, it follows a model-driven approach by which MT tools are synthesized from a high-level description. This description makes use of the domain-specific language Wodel to define and execute model mutations. Wodel is language-independent, as it allows the creation of mutation operators for any language defined by a meta-model. Starting from the definition of the mutation operators, Wodel-Test generates a MT environment which parses the program under test into a model, applies the mutation operators, and evaluates the test-suite against the generated mutants, offering a rich collection of MT metrics. We report on an evaluation of the approach based on the creation of MT tools for Java and the Atlas transformation language.
Wodel-Edu: An MDE Solution for the Generation and Evaluation of Diagram-based...Pablo Gómez Abajo
The creation and correction of exercises are two of the most time-consuming tasks performed by teachers. When done by hand, they are error-prone, too. Several approaches have been devised to automate such tasks. In the case of exercises based on diagrams, we can represent them as models, generate a set of variations - called mutants - and automate the process.
In this tool demo paper, we showcase Wodel-Edu, a domain-independent framework for the generation and automated grading of diagram-based exercises. This framework offers a family of DSLs enabling the specification and configuration of five different kinds of such exercises, and extensible code generation facilities targeting environments like the Moodle platform, the web, and mobile applications.
Generation of mutation testing tools with Wodel-TestPablo Gómez Abajo
Mutation testing (MT) is a well-known technique to evaluate and
improve the quality of a given test-suite. While several MT tools exist for traditional programming languages, there is no systematic method to create MT tools for domain-specific languages (DSLs).
To improve this situation, we present Wodel-Test, a domain-independent tool to synthesize MT tools for arbitrary DSLs.
Seed Model Synthesis for Testing Model-based Mutation OperatorsPablo Gómez Abajo
In software engineering, mutation consists in injecting small changes in artefacts - like models, programs, or data - for purposes like (mutation) testing, test data generation, and all sorts of search-based methods. These activities normally require the definition of sets of mutation operators, which are often built ad-hoc because there is currently poor support for their development and testing.
To improve this situation, in previous work we proposed a model-based approach to create and execute mutation operators. Our proposal represents the artefacts to be mutated as models and provides a domain-specific language called Wodel to define the mutation operators. However, testing the operators is cumbersome, since it requires the manual creation of input seed models. To facilitate this testing process, we propose a method - based on model finding - for the automated synthesis of test models that exercise the defined mutation operators. We provide tool support for our proposal, and illustrate its usage by defining mutation operators for BPMN.
Mutation testing (MT) is a well-known technique to evaluate and
improve the quality of a given test-suite. While several MT tools exist for traditional programming languages, there is no systematic method to create MT tools for domain-specific languages (DSLs).
To improve this situation, we present Wodel-Test, a domain-independent tool to synthesize MT tools for arbitrary DSLs.
Towards a model-driven engineering solution for language independent mutation...Pablo Gómez Abajo
Mutation testing is a technique to assess test suite adequacy to distinguish between correct and incorrect programs. Mutation testing applies one or more small changes to a program to obtain variants called mutants. The adequacy of a test suite is measured by determining how many of the mutants it distinguishes from the original program. There are many works about mutation testing, but the existing approaches focus on a specific programming language, and usually, it is not easy to customize the set of mutation operators. In this paper, we present Wodel-Test, an extension of the Wodel tool that implements a language-independent mutation testing framework based on MDE principles.
Wodel: A Domain-Specific Language for Model MutationPablo Gómez Abajo
Model-Driven Engineering (MDE) is a software engineering paradigm that uses models as main assets in all development phases. While many languages for model manipulation exist (e.g., for model transformation or code generation), there is a lack of frameworks to dene and apply model mutations.
A model mutant is a variation of an original model, created by specific model mutation operations. Model mutation has many applications, for instance, in the areas of model transformation testing, model-based testing or education.In this paper, we present a domain-specic language, called
Wodel, for the specication and generation of model mutants. Wodel is domain-independent, as it can be used to generate mutants of models conforming to arbitrary metamodels. Its development environment is extensible, permitting the incorporation of post-processors for dierent applications. As an example, we show an application consisting on the automated generation of exercises for particular domains (automata, class diagrams, electronic circuits, etc.).
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
PhD defense presentation
1. Un lenguaje
de dominio específico
para mutación de modelos
UNIVERSIDAD AUTÓNOMA DE MADRID
Pablo Gómez Abajo
Directores: Esther Guerra y Mercedes G. Merayo
Doctorado en Ingeniería Informática y de Telecomunicaciones, Julio 2020
2. 2 de 51
✓ La mutación de un modelo es la variación de un modelo
semilla al que se aplica uno o más operadores de mutación
✓ La mutación de modelos tiene múltiples aplicaciones:
▪ Pruebas de transformación de modelos
▪ Pruebas de software basadas en modelos
▪ Pruebas de líneas de producto software
▪ Algoritmos genéticos
▪ Generación automática de ejercicios
▪ Pruebas de mutación
▪ …
0
101
0
110
1
010
Modelo semilla
Modelos
mutantes
...
if (a == true)
then ...
...
if (a != true)
then ...
Mutación
Modelo semilla Modelo mutante
¿Qué es la mutación de modelos?
3. Motivación
3 de 51
✓ Los entornos existentes para mutación de modelos son:
▪ Específicos para un lenguaje (p.ej., fórmulas lógicas)
▪ Específicos para un dominio (p.ej., pruebas)
▪ Los operadores de mutación están codificados a mano
✓ Se requiere un método fácil para crear aplicaciones basadas
en mutación de modelos
✓ No proporcionan utilidades para la mutación de modelos
como:
▪ Generación de las trazas de los modelos mutantes
▪ Primitivas potentes para crear los mutantes
▪ Validación de los mutantes
4. Objetivos
✓ Lenguaje independiente del dominio para mutación de
modelos- Wodel
▪ Primitivas de mutación de alto nivel
▪ Generación de modelos semilla
▪ Métricas de mutación
✓ Extensible para aplicaciones de los mutantes
▪ Wodel-Edu: Generación automática de ejercicios
▪ Wodel-Test: Creación de herramientas de pruebas de mutación
para lenguajes de programación o de modelado
✓ Utilizamos un enfoque basado en MDE
4 de 51
5. I. Conceptos previos
II. DSL Wodel
III. Entorno Wodel-Edu
IV. Entorno Wodel-Test
V. Conclusiones y trabajo futuro
5 de 51
Índice
6. I. Conceptos previos
6 de 51
I. Ingeniería dirigida por modelos
II. Transformación de modelos
III. Mutación de modelos
7. Ingeniería dirigida por modelos
✓ Modelo: descripción de un sistema utilizando un lenguaje
✓ Meta-modelo: modelo que describe un lenguaje
✓ Lenguaje de dominio específico:
▪ Ofrece los conceptos para un dominio de aplicación
▪ Gráfico o textual
▪ Primitivas de alto nivel
▪ Orientado a expertos en el dominio
▪ Traducido automáticamente a lenguajes como C, Java, etc.
7 de 51
9. ✓Caso especial de transformación de modelos
✓ Las primitivas de mutación de alto nivel son más potentes que
utilizar la transformación de modelos para aplicar mutación
Mutación de modelos
9 de 51
Modelo semilla Modelo mutante
Wodel
s0:InitialFinalState t:Transitionsrc
symbol
sym:Symbol
symbol= “1"
a:Automaton
states
alphabet
transitions
tar
s0:InitialFinalState
sym:Symbol
symbol= “1"
a:Automaton
states
alphabet
name = “s0” name = “s0”
10. II. Wodel
Un lenguaje de dominio
específico para mutación de
modelos
10 de 51
I. DSL de operadores de mutación
II. Servicios de ejecución
III. Servicios de desarrollo
IV. Herramienta proporcionada
11. Propuesta
✓ DSL Wodel para mutación de modelos con:
▪ Primitivas de mutación de alto nivel
▪ Independiente del dominio
▪ Compilado a Java
✓ Servicios de ejecución (extensibles)
▪ Validación de los mutantes
▪ Detección de los mutantes equivalentes
▪ Registro de mutaciones
▪ Extensible para diferentes aplicaciones
✓ Servicios de desarrollo
▪ Síntesis de modelos semilla
▪ Métricas de mutación
11 de 51
12. pruebas de transformación de modelos
pruebas de software basadas en modelos
pruebas de líneas de producto software
algoritmos genéticos
generación automática de ejercicios
pruebas de mutación
…
Esquema
12 de 51
modelos
semilla
meta-
modelo
«conforme a»
Programa
WODEL artefactos específicos del
dominio/aplicación
1
2
Motor de
WODEL
modelos
mutantes
+ registro
post-
procesado
4
«conforme a»
3
13. Ejemplo
generate 3 mutants in "out/" from "models/"
metamodel "http://fa.com"
description "Simple Wodel Program"
with blocks {
CNFS "Changes a final state to non-final and connects it with a new final state"
{
s0 = retype one FinalState as CommonState
s1 = create FinalState
t0 = create Transition with {src = s0, tar = s1, symbol = one Symbol}
}}
13 de 51
14. Operadores de mutación
14 de 51
✓ 9 primitivas de mutación
▪ crear, clonar, seleccionar, modificar, retipar y borrar información
✓Asignación automática de los elementos creados en contenedores
compatibles
✓Eliminación de referencias vacías al borrar elementos
✓ Comprobación de cardinalidades y restricciones OCL
✓ Cardinalidades de los operadores de mutación
15. Registro de mutaciones
✓ Trazas entre modelos semilla y modelos mutantes
✓ Opción de compactar el registro (mutaciones irrelevantes)
✓ Opciones de texto en Wodel-Edu
✓ Identificación del operador de mutación en Wodel-Test
15 de 51
16. Validación de los mutantes
✓ OCL en programa Wodel
✓ Punto de extensión (p.ej. modelo de autómata que acepta
un lenguaje determinado)
16 de 51
generate 2 mutants in "out/" from "models/"
metamodel "http://fa.com"
with blocks {
simple {
s0 = select one InitialState
s1 = select one State where {self not typed FinalState}
t0 = select one Transition where {src = s0}
modify one Transition where {tar = s1} with {swap(tar, t0->tar)}
} [2]
}
constraints {
context State connected:
"oclIsKindOf(InitialState) or
Set{self}->closure(s | Transition.allInstances()->select(t | t.tar=s)->collect(src))
->exists(s | s.oclIsKindOf(InitialState))"
}
17. Detección de mutantes equivalentes
17 de 51
✓ Equivalencia sintáctica
✓Equivalencia semántica
int inc(int value) {
// Incrementa el valor
return value + 1;
}
int inc(int value) {
return value + 1;
}
int inc(int value) {
// Incrementa el valor
return value + 1;
}
int inc(int value) {
// Incrementa el valor
return value + 1 + 0;
}
18. Síntesis de modelos semilla I
✓ Comprobar que los operadores de mutación están implementados
correctamente
✓ Basado en la búsqueda de modelos
18 de 51
SALIDA
mm de dominio
+ OCL
OCL
programa
Wodel
modelo
semilla
ENTRADA
mm enriquecido
buscador de
modelos
19. Síntesis de modelos semilla II
generate 2 mutants in "out/" from "models/"
metamodel http://fa.com
with blocks {
cs2fs "Retypes a common state as a final state"
{
retype one CommonState as FinalState
}
}
19 de 51
context Dummy
inv mut1 : CommonState.allInstances()->exists(s | true)
OCL
Modelo generado
Buscador de modelos
20. Métricas de mutación
✓Cobertura de mutación de los elementos
✓Métricas estáticas
▪ Elementos del meta-modelo afectados por las mutaciones
▪ Métricas del meta-modelo
▪ Métricas por operador
✓ Métricas dinámicas
▪ Efectos reales del programa de mutación
▪ Métricas netas
▪ Métricas de depuración
20 de 51
24. Motivación
✓ Generación de un volumen grande de ejercicios tipo test
✓ Fáciles de generar
✓ Independientes del dominio
24 de 51
Se propone el entorno Wodel-Edu - extensión a Wodel
25. Propuesta
✓ Aplicación web con tres formatos de
ejercicios:
▪ Respuesta alternativa
▪ Selección de un diagrama entre varios
▪ Selección de opciones de texto
✓ Se requiere:
▪ Representación gráfica de los modelos
▪ Generación de las opciones de texto
▪ Generación de código HTML+JavaScript
25 de 51
32. Evaluación de Wodel-Edu
✓ Aplicación web http://www.wodel.eu en el dominio de los
autómatas con tres secciones
▪ Opciones de texto
▪ Selección de un diagrama entre varios
▪ Respuesta alternativa
✓ Tres dimensiones, además de la nota obtenida (opcional)
▪ El ejercicio se entiende bien
▪ La dificultad del ejercicio es adecuada
▪ El ejercicio es útil para aprender autómatas
✓ 10 participantes entre 22 y 41 años (1 sin formación en
autómatas)
32 de 51
33. Conclusiones de la evaluación
✓ Se perciben como muy útiles para aprender autómatas
✓ Dificultad percibida razonable
✓ El ejercicio de selección de opciones de texto es el más
complicado de entender (la nota promedio fue de un 50%)
33 de 51
35. Motivación
✓ Las herramientas de pruebas de mutación son
▪ específicas para un lenguaje
▪ se desarrollan manualmente
▪ alto coste de mantenimiento
35 de 51
Se propone el entorno Wodel-Test - extensión a Wodel
para la generación de herramientas
de pruebas de mutación
Se implementan dos herramientas de pruebas de mutación
Wodel-Test para Java y Wodel-Test para ATL
36. ¿Qué son las pruebas de mutación?
✓ Enfoque de pruebas de software
para evaluar la calidad de los
conjuntos de pruebas
✓ Introducción de cambios
sintácticos en un programa
mediante operadores de mutación
✓ Las mutaciones introducidas
emulan fallos comunes de
programación
✓ Facilita mejorar la calidad de los
conjuntos de pruebas
36 de 51
39. Herramienta de pruebas de mutación
generada
1) Explorador de proyectos
2) Ejemplo de programa mutante
3) Conjunto de pruebas
4) Resultados globales del proceso
de pruebas de mutación
39 de 51
40. ✓Comparativa de Wodel-Test para Java con herramientas
existentes de pruebas de mutación para Java
✓Implementación de Wodel-Test para ATL con los operadores de
mutación introducidos en Troya et al.[1]
[1] Troya, J., Bergmayr, A., Burgueño, L. y Wimmer, M.: Towards systematic mutations for and with ATL model transformations. En
International conference on software testing, verification and validation workshops (ICSTW), págs. 1–10, 2015
Evaluación de Wodel-Test
RQ1
¿Permite Wodel-Test crear herramientas de pruebas de
mutación con capacidades similares a las herramientas de
pruebas de mutación creadas manualmente?
40 de 51
RQ2
¿Wodel-Test es efectivo para especificar herramientas de
pruebas de mutación?
41. Evaluación de Wodel-Test RQ1
41 de 51
Major Javalanche PITest LittleDarwin Wodel-Test/Java
N. de operadores 30 (por
defecto)
19 40 28 77 (por defecto)
Extensibilidad de ops. Sí (DSL) No API No Sí (DSL)
Artefacto mutado Bytecode Bytecode Bytecode AST Modelo
Código del mutante No No Sí Sí Sí
Detección equivalentes No Sí (invariantes
dinámicas)
No No Sí (TCE)
Tipo de informe CSV HTML HTML HTML Vistas interactivas
Número de mutantes
Mutation score
Mutantes muertos/vivos Número Número Número Número Número, lista
Cobertura de operadores Número Número Número Número, lista
Mutantes por clase
Pruebas por mutante
Mutantes por prueba
✓ ✓ ✓ ✓ ✓
✓ ✓ ✓ ✓ ✓
✓ ✓
✓
✓
42. Evaluación de Wodel-Test RQ1
✓Aplicación del proceso de pruebas de mutación sobre el proyecto
functional-matrix1:
1https://github.com/soursop/functional-matrix-operator
42 de 51
Herramienta Mutantes
(muertos/vivos)
Mutation
score
Tiempo
ejecución
Tiempo por
mutante
Major 1638 (331/864) 20,21% 11h 21min 40seg 24,99seg
PITest 918 (321/597) 34,97% 56min 9seg 3,67seg
LittleDarwin 439 (130/309) 29,61% 2h 45min 27seg 22,61seg
Wodel-Test/Java 4756 (985/3771) 20,71% 2h 40min 27seg 2,02seg
43. Evaluación de Wodel-Test RQ2
✓ Wodel-Test para ATL con los operadores de mutación
introducidos en el trabajo de Troya et al.
✓ El prototipo de Troya et al. es un generador de
mutantes
✓ Wodel-Test para ATL proporciona la funcionalidad
completa de una herramienta de pruebas de mutación
para este lenguaje
43 de 51
44. Evaluación de Wodel-Test RQ2
✓ Operadores de mutación para ATL
44 de 51
Concepto Operador de
mutación
LOC en Wodel LOC en ATL
Regla Creación
Borrado
Cambio de nombre
1
1
1
-
-
-
Elemento de patrón de entrada Creación
Borrado
Cambio de tipo
Cambio de condición
6
1
4
1
14
-
-
-
Filtro de regla Creación
Borrado
Cambio de condición
10
1
4
-
-
-
Elemento de patrón de salida Creación
Borrado
Cambio de tipo
Cambio de nombre
6
1
4
1
-
6
-
-
Binding Creación
Borrado
Cambio de valor
Cambio de propiedad
6
1
2
6
-
3
-
-
45. Conclusiones de la evaluación
✓ Wodel-Test proporciona una funcionalidad comparable a la de
las herramientas de pruebas de mutación existentes para Java
✓ Wodel-Test puede ser una mejor opción:
▪ Acceso al código fuente de los mutantes
▪ Razonar sobre qué mutantes reducen el mutation score y por qué
▪ Experimentar con nuevos operadores de mutación
✓ Las herramientas de pruebas de mutación existentes requieren
dos órdenes de magnitud más de código que la especificación de
un entorno similar utilizando Wodel-Test
45 de 51
47. Conclusiones
✓ La mutación está presente en múltiples dominios en la ingeniería
del software
✓ Las soluciones existentes son específicas para cada caso
✓ Se ha propuesto Wodel que es un DSL para mutación de modelos
✓ Se han hecho dos aplicaciones:
◦ Generación de ejercicios
◦ Pruebas de mutación
47 de 51
48. Trabajo futuro
✓ Servicios de Wodel
▪ generación de modelos near misses: verificación de la implementación correcta de los
operadores de mutación
▪ técnicas de análisis estático para detectar conflictos y dependencias entre los operadores
✓ Nuevas aplicaciones de Wodel
▪ ingeniería basada en búsqueda
✓ Wodel-Edu
▪ entornos de aprendizaje más complejos (gamificación)
▪ ejercicios (p. ej., que sean interactivos)
▪ diferentes plataformas (móviles o tablets)
▪ ejercicios para Moodle
✓ Wodel-Test
▪ abordar programas más grandes
▪ optimizaciones del proceso de pruebas de mutación
▪ estudio con usuarios para analizar la usabilidad
48 de 51
49. Publicaciones I
Revistas (3):
◦ P. Gómez-Abajo, E. Guerra, y J. de Lara. A domain-specific language for model
mutation and its application to the automated generation of exercises. Computer
Languages, Systems & Structures, 49:152 – 173, 2017. Elsevier. Índice de impacto: JCR
2017: 1,840. Q2 en Computer Science / Software Engineering
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. A tool for domain independent
model mutation. Science of Computer Programming, 163:85–92, 2018. Elsevier. Índice
de impacto: JCR 2018: 1,088 Q3 en Computer Science / Software Engineering
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Systematic Engineering of
Mutation Operators. Journal of Object Technology Special Issue dedicated to Martin
Gogolla
Revistas en proceso de revisión (1):
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. A model-based framework for
language-independent mutation testing. Software and Systems Modeling. Springer.
Índice de impacto: JCR 2018: 2,660. Q1 en Computer Science / Software Engineering.
En segunda ronda de revisión
49 de 51
50. Publicaciones II
Congresos internacionales y workshops (4):
◦ P. Gómez-Abajo, E. Guerra, y J. de Lara. Wodel: a domain-specific language for model mutation.
31st ACM/SIGAPP Symposium on Applied Computing, SAC, páginas 1968–1973. ACM, 2016.
Porcentaje de aceptación: 24,07%
◦ P. Gómez-Abajo. A DSL for model mutation and its application to different domains. Doctoral
Symposium at the 19th ACM/IEEE International Conference of Model-Driven Engineering
Languages and Systems, MoDELS. ACM/IEEE, 2016
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Mutation Testing for DSLs (Tool Demo).
17th ACM SIGPLAN International Workshop on Domain-Specific Modeling, DSM, páginas 60–62.
ACM, 2019
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Seed Model Synthesis for Testing Model-
based Mutation Operators. 32nd International Conference on Advanced Information Systems
Engineering, CAiSE Forum. ACM, 2020
Congresos nacionales (1):
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Towards a model-driven engineering
solution for language independent mutation testing. En Jornadas de Ingeniería del Software y
Bases de Datos (JISBD), página 4pps. Biblioteca digital SISTEDES, 2018
Presentaciones en cursos y seminarios internacionales (1):
◦ P. Gómez-Abajo, E. Guerra, y J. de Lara. Wodel: a DSL for model mutation; and Wodel- Edu: its
application to the automated generation of exercises. En 7th International Summer School on
Domain-Specific Modeling, DSM-TP, 2016
50 de 51
52. • Opciones generadas: correctas
1. Retype final state q2 as common state
2. Change transition a from state q1 to state q0 with
new target state q1
• Opciones generadas: incorrectas
1. Retype initial state q0 as initial final state
2. Change transition b from state q2 to state q2 with
new target state q0
A. Modelo semilla B. Mutante de A (mostrado) C. Mutante de B
Mutaciones de los pasos 1 y 2:
Paso 1 Paso 2
modify target tar from one Transition to other State
retype one CommonState as FinalState
Selección de opciones de texto