Welcome to the Gotten Framework Page
The Gotten environment
We propose a model-driven engineering approach to automate the construction of Metamorphic Testing (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 (MRs), their evaluation, detailed reporting of the testing results, and the automated search-based generation of follow-up test cases.
The mrDSL language for the definition and execution of MRs
With that purpose, the Gotten environment provides a DSL called mrDSL to define and execute MRs. There you can declare the domain meta-models and the instance names used, the input features, that are defined by means of an OCL expression, the output features, the processors’ attributes and the MRs.
metamodel datacentre "/sample.gotten/model/datac.ecore" with m1, m2
models "/sample.gotten/model/dcmodels"
metamodel workload "/sample.gotten/model/workload.ecore" with w1, w2
models "/sample.gotten/model/workloads"
datacentre input Features {
context DataCentre def: NNodes: Int = racks->collect(numBoards*board.nodesPerBoard)->sum()
context DataCentre def: CPU: Int = racks->collect(
numBoards*board.nodesPerBoard*board.nodeType.CPUCores*board.nodeType.CPUSpeed)->sum()
}
output Features {
Time : Long
Energy : Long
}
Processor {
Name: String
Version: String
}
MetamorphicRelations {
MR1 = [(( NNodes(m1) > NNodes(m2) ) and ((w1) == (w2)) ) implies ((Time(m1) <= Time(m2)))]
MR2 = [(( CPU(m1) > CPU(m2) ) and ((w1) == (w2)) ) implies ((Energy(m1) <= Energy(m2)))]
}
The fowDSL language for the follow-up test cases generation
Gotten provides a DSL for the follow-up test cases generation called fowDSL. The followup-test cases generation method is based on MOMoT. There you can define the conditions of the followup-test cases generation for each MR. You can define for the corresponding feature the desired operations to increase/decrease numeric attributes or to create/delete objects, also setting the operation limits.
followups for datacentre using MR1
with source folder = "/sample.gotten/model/dcmodels"
and output folder = "/sample.gotten/model/dcmodels"
NNodes -> decrease [1..4] Rack.numBoards keeping {Rack.numBoards > 0};
decrease [1..4] Board.nodesPerBoard keeping {Board.nodesPerBoard > 0}
maximize ( NNodes(m2) - NNodes(m1) )
maxSolutions 10
iterations 2
algorithms [Random, NSGAII, NSGAIII, eMOEA]
Gotten installation
- Gotten environment update-site to be used from the Eclipse Install New Software facility:
You also need to have installed Java 11 in your local machine:
- For Windows users, we provide this Standalone Eclipse+Gotten for Windows version.
- For Ubuntu users, we provide this Standalone Eclipse+Gotten for Ubuntu version.
- To use Gotten directly, we provide this Ubuntu 20.04 VirtualBox VM+Gotten version.
Gotten for cloud projects
Gotten for video streaming APIs
The Gotten environment in action
- This is the Gotten development environment in action (click on image to see YouTube demo):
Presentation of the Gotten environment
- A short introduction video presentation of the Gotten environment (click on image to see YouTube presentation):
- This is the Gotten wizard to execute the MT process:
Authors and contributors
Gotten has been developed by Pablo C. Cañizares, Pablo Gómez-Abajo, Alberto Núñez, Esther Guerra and Juan de Lara. At this point, we would like to thank the developers of the following frameworks, which we have used in order to develop Gotten:
- Xtext: Xtext tailors the development of programming languages and domain-specific languages. With Xtext you define your language using a powerful grammar language.
- Henshin: Henshin is used to formulate the transformation units to manipulate the model.
- MOMoT: MOMoT is a framework that combines MDE techniques with search-based optimization (population-based search and local search) to solve highly complex problems on model level.
Related publications
- Gotten: A model-driven solution to engineer domain-specific metamorphic testing environments. Pablo Gómez-Abajo, Pablo C. Cañizares, Alberto Núñez, Esther Guerra, Juan de Lara. 2023. In ACM/IEEE 26th International Conference on Model Driven Engineering Languages and Systems (MoDELS 2023), Västerås.
- Automated engineering of domain-specific metamorphic testing environments. Pablo Gómez-Abajo, Pablo C. Cañizares, Alberto Núñez, Esther Guerra, Juan de Lara. 2023. In Information and Software Technology (Elsevier).
- New ideas: Automated engineering of metamorphic testing environments for domain-specific languages. Pablo C. Cañizares, Pablo Gómez-Abajo, Alberto Núñez, Esther Guerra, Juan de Lara. 2021. In ACM SIGPLAN International Conference on Software Language Engineering (SLE 2021), Chicago. Best new ideas/vision paper award at SLE’21.
Acknowledgements
This work has been funded by the Spanish Ministry of Science (RTI2018-095255-B-I00, project “MASSIVE”) and the R&D programme of Madrid (P2018/TCS-4314, project “FORTE”).