The Gotten Framework

Generic MDE framework fOr meTamorphic TEstiNg

View project on GitHub

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 installation

You also need to have installed Java 11 in your local machine:

Java 11

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):

Gotten environment in action

Presentation of the Gotten environment

  • A short introduction video presentation of the Gotten environment (click on image to see YouTube presentation):

Gotten environment presentation

  • This is the Gotten wizard to execute the MT process:

Gotten wizard

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.
  1. 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.
  2. 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).
  3. 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”).