The document discusses mutation testing for ATL model transformations. It introduces mutation testing and how it can be applied to ATL. The key contributions are new mutation operators for ATL that mimic common developer errors, evaluation of test generation techniques and operators, and an open-source tool for mutation testing of ATL.
In this session you learn about
1. How to download and install java in your PC
2, How to write simple Java Program
3. Operators in Java
4. Types of operators
i) Arithmetic operators
ii) Relational operators
iii) Logical operators
iv)Ternary operator
v) Bitwise operators
vi) Assignment operators
vii) Unary operators
viii) Special operators
5. Operators precedence
Ever wonder what this "new" Kotlin thing is? Curious what the syntax looks like? Unsure how to implement this at your own company? Or do you just want to know what Nick and Cody's favorite things are about this language?
All that and (maybe) more are revealed in Privet Kotlin.
In this session you learn about
1. How to download and install java in your PC
2, How to write simple Java Program
3. Operators in Java
4. Types of operators
i) Arithmetic operators
ii) Relational operators
iii) Logical operators
iv)Ternary operator
v) Bitwise operators
vi) Assignment operators
vii) Unary operators
viii) Special operators
5. Operators precedence
Ever wonder what this "new" Kotlin thing is? Curious what the syntax looks like? Unsure how to implement this at your own company? Or do you just want to know what Nick and Cody's favorite things are about this language?
All that and (maybe) more are revealed in Privet Kotlin.
Applying Compiler Techniques to Iterate At Blazing SpeedPascal-Louis Perez
In this session, we will present real life applications of compiler techniques helping kaChing achieve ultra confidence and power its incredible 5 minutes commit-to-production cycle [1]. We'll talk about idempotency analysis [2], dependency detection, on the fly optimisations, automatic memoization [3], type unification [4] and more! This talk is not suitable for the faint-hearted... If you want to dive deep, learn about advanced JVM topics, devoure bytecode and see first hand applications of theoretical computer science, join us.
[1] http://eng.kaching.com/2010/05/deployment-infrastructure-for.html
[2] http://en.wikipedia.org/wiki/Idempotence
[3] http://en.wikipedia.org/wiki/Memoization
[4] http://eng.kaching.com/2009/10/unifying-type-parameters-in-java.html
Functional programming is getting a lot of attention because it eases many of the difficulties faced in object-oriented programming (OOP) such as testability, maintainability, scalability, and concurrency. Swift has a lot of functional programming features that can be easily used, but most of Objective-C and Swift programmers are not familiar with these concepts.
This talk aims to introduce some of the core concepts of functional programming with Swift such as:
• Importance of Immutability
• First-class, Higher-order and Pure functions
• Closures
• Generics and Associated Type Protocols
• Functors, Applicative Functors and Monads
• Enumerations and Pattern Matching
• Optionals
Specifying function specializations over an arbitrary set of type constraints is a daunting task in C++ as soon as those constraints become more and more complex and/or grow in number. Various idioms are traditionally used to solve this problem: SFINAE or Tag Dispatching for example.
This talk introduces Boost.Dispatch, an infrastructure library that make Tag Dispatching easier to use and maintain by providing a protocol to define Tags and relationship between them, to map an arbitrary set of tags to a given function implementation and to extend said list of specialization in an open, modular way. The main new asset of Boost.Dispatch is the ability to use categorization of function properties and/or architectural information to guide the dispatch in addition to the more traditional use of type properties.
The talk will quickly brushes a picture of what SFINAE, overloading and Tag Dispatching mean in C++ and what are their limitations. We’ll introduce Boost.Dispatch over some examples ranging from simple library design to actual high performance computing code using the library to select best implementation of a function based on non-trivial architecture dependent information. Then we’ll dive into the implementation of the library and try to sketches the upcoming challenges yet to be solved.
Applying Compiler Techniques to Iterate At Blazing SpeedPascal-Louis Perez
In this session, we will present real life applications of compiler techniques helping kaChing achieve ultra confidence and power its incredible 5 minutes commit-to-production cycle [1]. We'll talk about idempotency analysis [2], dependency detection, on the fly optimisations, automatic memoization [3], type unification [4] and more! This talk is not suitable for the faint-hearted... If you want to dive deep, learn about advanced JVM topics, devoure bytecode and see first hand applications of theoretical computer science, join us.
[1] http://eng.kaching.com/2010/05/deployment-infrastructure-for.html
[2] http://en.wikipedia.org/wiki/Idempotence
[3] http://en.wikipedia.org/wiki/Memoization
[4] http://eng.kaching.com/2009/10/unifying-type-parameters-in-java.html
Functional programming is getting a lot of attention because it eases many of the difficulties faced in object-oriented programming (OOP) such as testability, maintainability, scalability, and concurrency. Swift has a lot of functional programming features that can be easily used, but most of Objective-C and Swift programmers are not familiar with these concepts.
This talk aims to introduce some of the core concepts of functional programming with Swift such as:
• Importance of Immutability
• First-class, Higher-order and Pure functions
• Closures
• Generics and Associated Type Protocols
• Functors, Applicative Functors and Monads
• Enumerations and Pattern Matching
• Optionals
Specifying function specializations over an arbitrary set of type constraints is a daunting task in C++ as soon as those constraints become more and more complex and/or grow in number. Various idioms are traditionally used to solve this problem: SFINAE or Tag Dispatching for example.
This talk introduces Boost.Dispatch, an infrastructure library that make Tag Dispatching easier to use and maintain by providing a protocol to define Tags and relationship between them, to map an arbitrary set of tags to a given function implementation and to extend said list of specialization in an open, modular way. The main new asset of Boost.Dispatch is the ability to use categorization of function properties and/or architectural information to guide the dispatch in addition to the more traditional use of type properties.
The talk will quickly brushes a picture of what SFINAE, overloading and Tag Dispatching mean in C++ and what are their limitations. We’ll introduce Boost.Dispatch over some examples ranging from simple library design to actual high performance computing code using the library to select best implementation of a function based on non-trivial architecture dependent information. Then we’ll dive into the implementation of the library and try to sketches the upcoming challenges yet to be solved.
Máster en Métodos Formales en Ingeniería Informáticamiso_uam
Presentación del Máster en Métodos Formales en Ingeniería Informática en jornadas de posgrado en la facultad de ciencias de la Universidad Autónoma de Madrid
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Designing for Privacy in Amazon Web ServicesKrzysztofKkol1
Data privacy is one of the most critical issues that businesses face. This presentation shares insights on the principles and best practices for ensuring the resilience and security of your workload.
Drawing on a real-life project from the HR industry, the various challenges will be demonstrated: data protection, self-healing, business continuity, security, and transparency of data processing. This systematized approach allowed to create a secure AWS cloud infrastructure that not only met strict compliance rules but also exceeded the client's expectations.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar
The European Union Agency for Law Enforcement Cooperation (Europol) has suffered an alleged data breach after a notorious threat actor claimed to have exfiltrated data from its systems. Infamous data leaker IntelBroker posted on the even more infamous BreachForums hacking forum, saying that Europol suffered a data breach this month.
The alleged breach affected Europol agencies CCSE, EC3, Europol Platform for Experts, Law Enforcement Forum, and SIRIUS. Infiltration of these entities can disrupt ongoing investigations and compromise sensitive intelligence shared among international law enforcement agencies.
However, this is neither the first nor the last activity of IntekBroker. We have compiled for you what happened in the last few days. To track such hacker activities on dark web sources like hacker forums, private Telegram channels, and other hidden platforms where cyber threats often originate, you can check SOCRadar’s Dark Web News.
Stay Informed on Threat Actors’ Activity on the Dark Web with SOCRadar!
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Hivelance Technology
Cryptocurrency trading bots are computer programs designed to automate buying, selling, and managing cryptocurrency transactions. These bots utilize advanced algorithms and machine learning techniques to analyze market data, identify trading opportunities, and execute trades on behalf of their users. By automating the decision-making process, crypto trading bots can react to market changes faster than human traders
Hivelance, a leading provider of cryptocurrency trading bot development services, stands out as the premier choice for crypto traders and developers. Hivelance boasts a team of seasoned cryptocurrency experts and software engineers who deeply understand the crypto market and the latest trends in automated trading, Hivelance leverages the latest technologies and tools in the industry, including advanced AI and machine learning algorithms, to create highly efficient and adaptable crypto trading bots
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Using IESVE for Room Loads Analysis - Australia & New Zealand
mtATL
1. Towards effective mutation testing for ATL
Esther Guerra, Juan de Lara
Universidad Aut´onoma de Madrid (Spain)
Jes´us S´anchez Cuadrado
Universidad de Murcia (Spain)
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 1 / 30
miso.es
2. Introduction
Model transformations
Importance of correctness of model transformations
Testing of transformations helps in detecting errors
How do you know if you did enough tests?
Mutation testing to the rescue!
It permits quantifying the quality of a test suite
Based on injecting artificial faults in the program under test
If test suite detects the artificial faults, it will likely detect real errors
Our focus is on mutation testing for ATL
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 2 / 30
3. Introduction
Mutation testing
Input
ATL transformation to test
Test suite made of:
input models (manual vs automatic)
oracle function (partial vs total)
Challenge: Identify the best test input
model generation technique
good at finding errors
few models if possible
test cases
program
under test
INPUT
1
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 3 / 30
4. Introduction
Mutation testing
Mutation operators
Mimic errors of competent developers
Used to create mutants of the program
Operators for ATL exist, but do not
mimic real errors
Challenge: Design operators based on
errors made by ATL developers
mutant
programs
mutation
operators
test cases
2
program
under test
INPUT
2
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 4 / 30
5. Introduction
Mutation testing
Mutation score
For each mutant, execute test suite
against mutant and original program
Compare results
if different, the mutant is killed
otherwise, it is alive (undetected error)
Mutation score =
killed mutants / total mutants
The higher the score, the better the
quality of the test suite
mutant
programs
mutation
operators
live mutants killed mutants
mutation score
test cases
yes no
3
program
under test
INPUT
mutant test
==
original test
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 5 / 30
6. Introduction
Mutation testing
On effectiveness
Mutation testing is very expensive
(many potential mutants)
Careful selection of mutation operators
do not produce trivial mutants
produce hard-to-kill mutants
Challenge: Analyse the effectiveness of
operators for ATL, which is unknown
mutant
programs
mutation
operators
live mutants killed mutants
mutation score
test cases
yes no
3
program
under test
INPUT
mutant test
==
original test
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 6 / 30
7. Introduction
Mutation testing
Improving the test suite
Add input models that kill live mutants
Challenge: Devise a technique to
synthesize mutant-killer models for ATL
mutant
programs
mutation
operators
live mutants killed mutants
mutation score
additional
test cases
test cases
yes no
program
under test
INPUT
mutant test
==
original test
4
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 7 / 30
8. Contributions
Mutation operators for ATL
new operators that mimic frequent ATL developer errors
evaluation of efficacy of these and other operators
Test suite
evaluation of efficacy of three test model generation techniques:
random, meta-model coverage, transformation coverage
novel technique to generate input models that kill live mutants
Open-source tool for mutation testing of ATL
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 8 / 30
10. ATL
Atlas Transformation Language
Widely used model transformation language
Dynamic, testing is needed to avoid runtime errors
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 10 / 30
11. ATL by example
create OUT : Relational from IN : Class
helper context Class!Attribute def: multiValued : Boolean =
if self.upperBound = −1 then true
else self.upperBound > 1 endif;
rule Class2Table {
from c : Class!Class ( not c.isAbstract )
to out : Relational!Table (
name <− c.name,
col <− Sequence{key}→union(c.att→select(e | not e.multiValued)),
key <− Set{key} ),
key : Relational!Column ( name <− ’objectId’ )
}
rule MultiValuedDataTypeAttribute2Column {
from a : Class!Attribute ( a.type.oclIsKindOf(Class!DataType) and a.multiValued )
to out : Relational!Table (
name <− a.owner.nameOrEmpty + ’ ’ + a.name,
col <− Sequence {thisModule.createIdColumn(a.owner), value} ),
value : Relational!Column ( name <− a.name )
}
lazy rule createIdColumn {
from ne : Class!NamedElt
to key : Relational!Column ( name <− ne.name )
}
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 11 / 30
12. ATL by example
create OUT : Relational from IN : Class // input and output meta−models
helper context Class!Attribute def: multiValued : Boolean =
if self.upperBound = −1 then true
else self.upperBound > 1 endif;
rule Class2Table {
from c : Class!Class ( not c.isAbstract )
to out : Relational!Table (
name <− c.name,
col <− Sequence{key}→union(c.att→select(e | not e.multiValued)),
key <− Set{key} ),
key : Relational!Column ( name <− ’objectId’ )
}
rule MultiValuedDataTypeAttribute2Column {
from a : Class!Attribute ( a.type.oclIsKindOf(Class!DataType) and a.multiValued )
to out : Relational!Table (
name <− a.owner.nameOrEmpty + ’ ’ + a.name,
col <− Sequence {thisModule.createIdColumn(a.owner), value} ),
value : Relational!Column ( name <− a.name )
}
lazy rule createIdColumn {
from ne : Class!NamedElt
to key : Relational!Column ( name <− ne.name )
}
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 11 / 30
13. ATL by example
create OUT : Relational from IN : Class
helper context Class!Attribute def: multiValued : Boolean =
if self.upperBound = −1 then true
else self.upperBound > 1 endif;
rule Class2Table { // matched rule
from c : Class!Class ( not c.isAbstract ) // input pattern with filter
to out : Relational!Table ( // output pattern
name <− c.name,
col <− Sequence{key}→union(c.att→select(e | not e.multiValued)),
key <− Set{key} ),
key : Relational!Column ( name <− ’objectId’ )
}
rule MultiValuedDataTypeAttribute2Column {
from a : Class!Attribute ( a.type.oclIsKindOf(Class!DataType) and a.multiValued )
to out : Relational!Table (
name <− a.owner.nameOrEmpty + ’ ’ + a.name,
col <− Sequence {thisModule.createIdColumn(a.owner), value} ),
value : Relational!Column ( name <− a.name )
}
lazy rule createIdColumn {
from ne : Class!NamedElt
to key : Relational!Column ( name <− ne.name )
}
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 11 / 30
14. ATL by example
create OUT : Relational from IN : Class
helper context Class!Attribute def: multiValued : Boolean =
if self.upperBound = −1 then true
else self.upperBound > 1 endif;
rule Class2Table {
from c : Class!Class ( not c.isAbstract )
to out : Relational!Table (
name <− c.name, // binding
col <− Sequence{key}→union(c.att→select(e | not e.multiValued)), // binding
key <− Set{key} ),
key : Relational!Column ( name <− ’objectId’ )
}
rule MultiValuedDataTypeAttribute2Column {
from a : Class!Attribute ( a.type.oclIsKindOf(Class!DataType) and a.multiValued )
to out : Relational!Table (
name <− a.owner.nameOrEmpty + ’ ’ + a.name,
col <− Sequence {thisModule.createIdColumn(a.owner), value} ),
value : Relational!Column ( name <− a.name )
}
lazy rule createIdColumn {
from ne : Class!NamedElt
to key : Relational!Column ( name <− ne.name )
}
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 11 / 30
15. ATL by example
create OUT : Relational from IN : Class
helper context Class!Attribute def: multiValued : Boolean = // helper, similar to a function
if self.upperBound = −1 then true
else self.upperBound > 1 endif;
rule Class2Table {
from c : Class!Class ( not c.isAbstract )
to out : Relational!Table (
name <− c.name,
col <− Sequence{key}→union(c.att→select(e | not e.multiValued)), // helper invocation
key <− Set{key} ),
key : Relational!Column ( name <− ’objectId’ )
}
rule MultiValuedDataTypeAttribute2Column {
from a : Class!Attribute ( a.type.oclIsKindOf(Class!DataType) and a.multiValued )
to out : Relational!Table (
name <− a.owner.nameOrEmpty + ’ ’ + a.name,
col <− Sequence {thisModule.createIdColumn(a.owner), value} ),
value : Relational!Column ( name <− a.name )
}
lazy rule createIdColumn {
from ne : Class!NamedElt
to key : Relational!Column ( name <− ne.name )
}
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 11 / 30
16. Mutation testing for ATL
rule Class2Table {
from c : Class!Class (not c.isAbstract)
to out : Relational!Table … }
CFCP
:Class
isAbstract=true
name=‘Person’
original transformation mutant transformation
Min
Mout M’out
rule Class2Table {
from c : Class!Class (not c.isAbstract
and c.name=‘’)
to out : Relational!Table … }
:Class
isAbstract=false
name=‘Female’
:supers
:Table
name=‘Female’
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 12 / 30
18. Mutation operators for ATL
Syntactic operators
Create-update-delete operations on language elements
Troya et al. [1]: 18 operators for main elements of ATL meta-model
Concept Operator
Matched rule addition
deletion
name change
In and out pattern element addition
deletion
class change
name change
Filter addition
deletion
condition change
Binding addition
deletion
value change
feature change
1
Troya et al., Towards systematic mutations for and with ATL model transformations, ICST Workshops, 2015, pp. 1-10
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 14 / 30
19. Mutation operators for ATL
Semantic operators
Operations mimic faults a developer may incur, based on authors’
experience not on empirical evidence
Mottu et al. [1,2]: 10 operators which are language-independent
Navigation operators
Relation to the same class change (RSCC) Replaces navigation by another to the same class
Relation to another class change (ROCC) Replaces navigation by another to a different class
Relation sequence modification with deletion (RSMD) Removes last step of a navigation sequence
Relation sequence modification with addition (RSMA) Adds navigation step in a navigation sequence
Filter operators
Collection filtering change with perturbation (CFCP) Modifies filter, e.g., acting on property or type of class
Collection filtering change with deletion (CFCD) Deletes filter
Collection filtering change with addition (CFCA) Adds filter, e.g., returning an arbitrary element
Creation operators
Class compatible creation replacement (CCCR) Replaces type of created object by a compatible one
Classes association creation deletion (CACD) Deletes creation of association
Classes association creation addition (CACA) Adds relation between two target objects
1
Mottu et al., Mutation analysis testing for model transformations, ECMDA-FA, LNCS 4066, Springer, 2006, pp. 376-390
2
Aranega et al., Towards an automation of the mutation analysis dedicated to model transformations, STVR 25(5-7), 2014
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 15 / 30
20. Mutation operators for ATL
Typing operators
Operators introduce typing errors or force runtime errors
S´anchez et al. [1]: 27 operators
used to test a static analyzer for ATL
coverage of ATL mm + operators for programming languages
Type Targets
Creation binding
source/target pattern element
rule inheritance relation
Deletion rule, helper, binding
source/target pattern element
rule filter, rule inheritance relation ..............
Type modification type of source/target pattern element
helper context type, helper return type
type of variable, collection or parameter ..............
Feature name modification navigation expression, target of binding
Operation name modification predefined operator (e.g., and) or operation (e.g., size)
collection operation (e.g., includes), iterator (e.g., exists, collect)
operation/helper invocation
1
S´anchez et al., Static analysis of model transformations, IEEE TSE 43(9), 2017, pp. 868-897
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 16 / 30
21. Mutation operators for ATL
Operators based on errors made in practice (zoo)
Operators emulate errors made by competent developers
Zoo set (new!!!): 7 operators emulating the 5 most frequent typing
errors in the ATL zoo [1]
Error Frequency Operator
No binding for compulsory target feature 48.8% Remove binding of compulsory feature (RBCF)
Invalid actual parameter type 11.9% Replace helper call parameter (RHCP)
Feature access over possibly undefined receptor 11.22% Remove enclosing conditional (REC)
Add navigation after optional feature (ANAOF)
Feature found in subtype 3.75% Replace feature access by subtype feature (RSF)
Binding possibly unresolved 3.7% Restrict rule filter (RRF)
Delete rule (DR)
1
S´anchez et al., Static analysis of model transformations, IEEE TSE 43(9), 2017, pp. 868-897
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 17 / 30
22. Mutation operators for ATL
Operators based on errors made in practice (zoo)
Operators emulate errors made by competent developers
Zoo set (new!!!): 7 operators emulating the 5 most frequent typing
errors in the ATL zoo [1]
Error Frequency Operator
No binding for compulsory target feature 48.8% Remove binding of compulsory feature (RBCF)
Invalid actual parameter type 11.9% Replace helper call parameter (RHCP)
Feature access over possibly undefined receptor 11.22% Remove enclosing conditional (REC)
Add navigation after optional feature (ANAOF)
Feature found in subtype 3.75% Replace feature access by subtype feature (RSF)
Binding possibly unresolved 3.7% Restrict rule filter (RRF)
Delete rule (DR)
1
S´anchez et al., Static analysis of model transformations, IEEE TSE 43(9), 2017, pp. 868-897
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 17 / 30
23. Mutation operators for ATL
Operators based on errors made in practice (zoo)
Operators emulate errors made by competent developers
Zoo set (new!!!): 7 operators emulating the 5 most frequent typing
errors in the ATL zoo [1]
Error Frequency Operator
No binding for compulsory target feature 48.8% Remove binding of compulsory feature (RBCF)
Invalid actual parameter type 11.9% Replace helper call parameter (RHCP)
Feature access over possibly undefined receptor 11.22% Remove enclosing conditional (REC)
Add navigation after optional feature (ANAOF)
Feature found in subtype 3.75% Replace feature access by subtype feature (RSF)
Binding possibly unresolved 3.7% Restrict rule filter (RRF)
Delete rule (DR)
1
S´anchez et al., Static analysis of model transformations, IEEE TSE 43(9), 2017, pp. 868-897
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 17 / 30
24. Mutation operators for ATL
Operators based on errors made in practice (zoo)
Operators emulate errors made by competent developers
Zoo set (new!!!): 7 operators emulating the 5 most frequent typing
errors in the ATL zoo [1]
Error Frequency Operator
No binding for compulsory target feature 48.8% Remove binding of compulsory feature (RBCF)
Invalid actual parameter type 11.9% Replace helper call parameter (RHCP)
Feature access over possibly undefined receptor 11.22% Remove enclosing conditional (REC)
Add navigation after optional feature (ANAOF)
Feature found in subtype 3.75% Replace feature access by subtype feature (RSF)
Binding possibly unresolved 3.7% Restrict rule filter (RRF)
Delete rule (DR)
1
S´anchez et al., Static analysis of model transformations, IEEE TSE 43(9), 2017, pp. 868-897
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 17 / 30
25. Mutation operators for ATL
Operators based on errors made in practice (zoo)
Operators emulate errors made by competent developers
Zoo set (new!!!): 7 operators emulating the 5 most frequent typing
errors in the ATL zoo [1]
Error Frequency Operator
No binding for compulsory target feature 48.8% Remove binding of compulsory feature (RBCF)
Invalid actual parameter type 11.9% Replace helper call parameter (RHCP)
Feature access over possibly undefined receptor 11.22% Remove enclosing conditional (REC)
Add navigation after optional feature (ANAOF)
Feature found in subtype 3.75% Replace feature access by subtype feature (RSF)
Binding possibly unresolved 3.7% Restrict rule filter (RRF)
Delete rule (DR)
1
S´anchez et al., Static analysis of model transformations, IEEE TSE 43(9), 2017, pp. 868-897
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 17 / 30
26. Mutation operators for ATL
Operators based on errors made in practice (zoo)
Operators emulate errors made by competent developers
Zoo set (new!!!): 7 operators emulating the 5 most frequent typing
errors in the ATL zoo [1]
Error Frequency Operator
No binding for compulsory target feature 48.8% Remove binding of compulsory feature (RBCF)
Invalid actual parameter type 11.9% Replace helper call parameter (RHCP)
Feature access over possibly undefined receptor 11.22% Remove enclosing conditional (REC)
Add navigation after optional feature (ANAOF)
Feature found in subtype 3.75% Replace feature access by subtype feature (RSF)
Binding possibly unresolved 3.7% Restrict rule filter (RRF)
Delete rule (DR)
1
S´anchez et al., Static analysis of model transformations, IEEE TSE 43(9), 2017, pp. 868-897
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 17 / 30
28. Tool support
Java framework for mutation testing of ATL:
https://github.com/jdelara/MDETesting
Implementation of all presented mutation operators (extensible)
Operators can use transformation typing info (anATLyzer)
Generator of test models (random, mm coverage, path coverage)
Generator of mutant-killer models (explained later)
DifferentialTester
MutationRegistry Mutation
ModelGenerator
Path
Coverage
MM
Coverage Random
RSCC RSF
> 50 operators
…
mutations
*
SemanticTyping Syntactic Zoo
MutantGenerator
1
1
ATL Transformation
Mutant
KillerModel
Generator
1 mutant provider
original
1
TestDriver
0..1
1 executes
uses
Type
Information
has
EMF random
instantiator
USE Validator
model finder
AnATLyzer
static analyzer
1
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 19 / 30
29. Efficacy of
Operators and
Test Model Generation Techniques
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 20 / 30
30. Evaluation of mutation operators
Experiment design
6 syntactically correct transformations from the ATL zoo
For each transformation:
create test suite with models generated by our three techniques
(random, meta-model coverage, path coverage)
create transformation mutants
compute mutation score
Overall, >32 000 mutants, >1 million executions
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 21 / 30
31. Evaluation of mutation operators
Applicability of operators
61% operators were applicable to all transformations
4 operators with poor applicability (i.e., frequently useless):
[typ] deletion of parent rule (1 application)
[typ] modification of type of variable (1 application)
[zoo] deletion of enclosing conditional (1 application)
[syn] deletion of input pattern element (0 applications)
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 22 / 30
32. Evaluation of mutation operators
Resilience and stubbornness of mutants
overall, 88% mutants were killed
most operators produced stubborn mutants (killed by few models)
Id Type Operator Mutants %Killed mutants %Killer models
0 syn In pattern element deletion 0 - -
1 sem Classes association creation addition (CACA) 14 100.00 17.87
2 zoo Replace feature access by subtype feature 48 100.00 3.97
3 typ Parent rule deletion 21 100.00 3.72
4 typ Variable modification 48 100.00 2.08
5 sem Relation sequence modification with deletion (RSMD) 72 100.00 1.94
........
18 typ,syn In pattern element creation 3818 100.00 0.03
........
21 typ,syn Remove binding 724 99.45 0.13
........
24 zoo Remove binding of compulsory feature 260 99.23 0.36
........
52 typ Helper deletion 780 89.87 0.12
53 typ Parameter deletion 513 89.47 0.15
54 typ Parameter type modification 570 89.47 0.13
55 zoo Add navigation after optional feature 44 83.33 1.04
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 23 / 30
33. Evaluation of mutation operators
Resilience and stubbornness of mutants
operators 1 to 18 only produced trivial mutants (always killed)
Id Type Operator Mutants %Killed mutants %Killer models
0 syn In pattern element deletion 0 - -
1 sem Classes association creation addition (CACA) 14 100.00 17.87
2 zoo Replace feature access by subtype feature 48 100.00 3.97
3 typ Parent rule deletion 21 100.00 3.72
4 typ Variable modification 48 100.00 2.08
5 sem Relation sequence modification with deletion (RSMD) 72 100.00 1.94
........
18 typ,syn In pattern element creation 3818 100.00 0.03
........
21 typ,syn Remove binding 724 99.45 0.13
........
24 zoo Remove binding of compulsory feature 260 99.23 0.36
........
52 typ Helper deletion 780 89.87 0.12
53 typ Parameter deletion 513 89.47 0.15
54 typ Parameter type modification 570 89.47 0.13
55 zoo Add navigation after optional feature 44 83.33 1.04
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 23 / 30
34. Evaluation of mutation operators
Resilience and stubbornness of mutants
operators 52 to 55 produced the hardest-to-kill mutants
mutants of 52–54 were among the stubbornnest
mutants of 55 were crash-prone and not so sttuborn
Id Type Operator Mutants %Killed mutants %Killer models
0 syn In pattern element deletion 0 - -
1 sem Classes association creation addition (CACA) 14 100.00 17.87
2 zoo Replace feature access by subtype feature 48 100.00 3.97
3 typ Parent rule deletion 21 100.00 3.72
4 typ Variable modification 48 100.00 2.08
5 sem Relation sequence modification with deletion (RSMD) 72 100.00 1.94
........
18 typ,syn In pattern element creation 3818 100.00 0.03
........
21 typ,syn Remove binding 724 99.45 0.13
........
24 zoo Remove binding of compulsory feature 260 99.23 0.36
........
52 typ Helper deletion 780 89.87 0.12
53 typ Parameter deletion 513 89.47 0.15
54 typ Parameter type modification 570 89.47 0.13
55 zoo Add navigation after optional feature 44 83.33 1.04
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 23 / 30
35. Evaluation of mutation operators
Resilience and stubbornness of mutants
operators 21 & 24 had similar resilience, but 24 created fewer mutants
similarly, matched rule deletion preferrable to rule deletion
Id Type Operator Mutants %Killed mutants %Killer models
0 syn In pattern element deletion 0 - -
1 sem Classes association creation addition (CACA) 14 100.00 17.87
2 zoo Replace feature access by subtype feature 48 100.00 3.97
3 typ Parent rule deletion 21 100.00 3.72
4 typ Variable modification 48 100.00 2.08
5 sem Relation sequence modification with deletion (RSMD) 72 100.00 1.94
........
18 typ,syn In pattern element creation 3818 100.00 0.03
........
21 typ,syn Remove binding 724 99.45 0.13
........
24 zoo Remove binding of compulsory feature 260 99.23 0.36
........
52 typ Helper deletion 780 89.87 0.12
53 typ Parameter deletion 513 89.47 0.15
54 typ Parameter type modification 570 89.47 0.13
55 zoo Add navigation after optional feature 44 83.33 1.04
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 23 / 30
36. Evaluation of mutation operators
Resilience and stubbornness of mutants
no operator set was more efficient than the others
zoo operators: 1 hard-to-kill, 3 trivial, 3 intermediate
Id Type Operator Mutants %Killed mutants %Killer models
0 syn In pattern element deletion 0 - -
1 sem Classes association creation addition (CACA) 14 100.00 17.87
2 zoo Replace feature access by subtype feature 48 100.00 3.97
3 typ Parent rule deletion 21 100.00 3.72
4 typ Variable modification 48 100.00 2.08
5 sem Relation sequence modification with deletion (RSMD) 72 100.00 1.94
........
18 typ,syn In pattern element creation 3818 100.00 0.03
........
21 typ,syn Remove binding 724 99.45 0.13
........
24 zoo Remove binding of compulsory feature 260 99.23 0.36
........
52 typ Helper deletion 780 89.87 0.12
53 typ Parameter deletion 513 89.47 0.15
54 typ Parameter type modification 570 89.47 0.13
55 zoo Add navigation after optional feature 44 83.33 1.04
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 23 / 30
37. Evaluation of test model generation techniques
Mutation score of test suites generated by:
random instantiation (50 models with 100 objects)
coverage of input meta-model
coverage of transformation execution path
Meta-model Transformation path Random
#M. typ sem syn zoo #M. typ sem syn zoo #M. typ sem syn zoo
t1 62 69.98 80.73 100.00 97.14 27 77.53 75.23 100.00 97.14 50 67.15 58.33 59.86 97.14
t2 200 87.44 31.68 45.54 30.33 18 82.47 71.66 89.31 95.08 50 65.64 56.71 48.36 23.58
t3 50 81.21 81.44 84.50 97.04 1 84.85 87.37 90.56 99.26 50 64.18 81.05 69.01 95.56
t4 50 98.71 68.52 86.17 100.00 92 98.14 98.60 96.33 100.00 50 99.22 98.33 95.74 100.00
t5 710 73.48 82.05 73.37 92.16 24 76.83 84.62 81.41 92.16 50 15.67 65.81 22.22 78.00
t6 26 75.91 72.84 60.96 87.88 6 82.70 70.37 60.56 87.88 50 21.60 19.28 23.51 45.45
Transformation path is the best option
produced the highest-quality test suite more often
produced the smallest test suites (less testing time)
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 24 / 30
39. Synthesis of mutant-killer models
Method (intuition)
helper context Class!Attribute def: multiValued : Boolean =
if self.upperBound = -1 then true
else self.upperBound > 1 endif;
false Mutation
live mutant
1) AST node of mutated code
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 26 / 30
40. Synthesis of mutant-killer models
Method (intuition)
helper context Class!Attribute def: multiValued : Boolean =
if self.upperBound = -1 then true
else self.upperBound > 1 endif;
false Mutation
live mutant
MVDataType
Attribute2Column
Class2Table
multiValued
control flow graph
upperBound = -1 / then
true false
Helper call
IF
Matched rule
Mutation
Matched rule
2) execution paths from matched rules to mutation
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 26 / 30
41. Synthesis of mutant-killer models
Method (intuition)
helper context Class!Attribute def: multiValued : Boolean =
if self.upperBound = -1 then true
else self.upperBound > 1 endif;
false Mutation
live mutant
Class.allInstances()-> -- rule input
select(c | not c.isAbstract)-> -- rule filter
exists(c | c.att->exists(e |
not e.upperBound = -1)) -- inlining of helper
or
Attribute.allInstances()->
exists(a | a.upperBound = -1)
OCL path condition
MVDataType
Attribute2Column
Class2Table
multiValued
control flow graph
upperBound = -1 / then
true false
Helper call
IF
Matched rule
Mutation
Matched rule
3) requirements for a test model to reach the mutated code
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 26 / 30
42. Synthesis of mutant-killer models
Method (intuition)
model finding
helper context Class!Attribute def: multiValued : Boolean =
if self.upperBound = -1 then true
else self.upperBound > 1 endif;
false Mutation
live mutant
Class.allInstances()-> -- rule input
select(c | not c.isAbstract)-> -- rule filter
exists(c | c.att->exists(e |
not e.upperBound = -1)) -- inlining of helper
or
Attribute.allInstances()->
exists(a | a.upperBound = -1)
OCL path condition
: Class
isAbstract = false
: Attribute
upperBound = -1
att
input test model
MVDataType
Attribute2Column
Class2Table
multiValued
control flow graph
upperBound = -1 / then
true false
Helper call
IF
Matched rule
Mutation
Matched rule
4) synthesis of input test model by model finding
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 26 / 30
43. Synthesis of mutant-killer models
Method (intuition)
model finding
helper context Class!Attribute def: multiValued : Boolean =
if self.upperBound = -1 then true
else self.upperBound > 1 endif;
false Mutation
live mutant
Class.allInstances()-> -- rule input
select(c | not c.isAbstract)-> -- rule filter
exists(c | c.att->exists(e |
not e.upperBound = -1)) -- inlining of helper
or
Attribute.allInstances()->
exists(a | a.upperBound = -1)
OCL path condition
: Class
isAbstract = false
: Attribute
upperBound = -1
att
input test model
MVDataType
Attribute2Column
Class2Table
multiValued
control flow graph
upperBound = -1 / then
true false
Helper call
IF
Matched rule
Mutation
Matched rule
However, reachability is necessary but not sufficient...
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 26 / 30
44. Synthesis of mutant-killer models
Evaluation of efficacy
For each mutant:
generate a killer test model
execute mutant and original transformation with the test model
compare the results
typ sem syn zoo
Mutants %Killed Mutants %Killed Mutants %Killed Mutants %Killed
t1 266 93.94 58 96.55 187 87.57 15 100.00
t2 2200 97.14 550 83.82 4045 97.11 60 81.67
t3 151 93.10 32 100.00 175 94.08 21 95.24
t4 3161 82.76 649 71.19 5993 78.66 65 73.85
t5 382 92.25 75 94.67 363 86.76 41 92.68
t6 153 59.48 42 54.76 143 58.04 16 43.75
Overall, 85% mutants killed
By cases, killed mutants >90% in 12/24 (in green)
Altogether, reasonable good results
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 27 / 30
46. Wrap-up
Today’s presentation
Analyse some steps in mutation testing for ATL
mutation operators
test model generation techniques
synthesis of mutant-killer models
to make it more effective
(and ATL transformations less buggy)
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 29 / 30
47. Wrap-up
Today’s presentation
Analyse some steps in mutation testing for ATL
mutation operators
test model generation techniques
synthesis of mutant-killer models
to make it more effective
(and ATL transformations less buggy)
Future plans
Replica of evaluation with partial oracles
Method to detect equivalent mutants for ATL
Improve synthesis of mutant-killer models
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 29 / 30
48. Towards effective mutation testing for ATL
Esther Guerra, Juan de Lara
Universidad Aut´onoma de Madrid (Spain)
Jes´us S´anchez Cuadrado
Universidad de Murcia (Spain)
esther.guerra@uam.es
Questions?
Esther Guerra Towards effective mutation testing for ATL MoDELS 2019 30 / 30