Metamorphic testing

Metamorphic testing (MT) is a testing technique that alleviates the oracle problem.
Basically, MT consists on modeling the properties of the system under test, which are formulated as metamorphic relations (MRs). The essential idea is that instead of checking the output o1 produced when testing with one input x1, we test with a second (follow-up) input x2, observing output o2, and check that o1 and o2 are related as specified by the MRs. Hence, an MR can be defined as a tuple (MRi, MRo), where MRi refers to the relation between the source test case and the follow-up test case, and MRo refers to the relation that must be fulfilled by the outputs obtained from the source test case and the follow-up test case.

Currently, we are working on designing MRs to be applied in Expert Systems for testing memory systems. The current list of MRs is available here .

Mutation testing

MuTomVo is a mutation testing framework for Omnet-based simulated environments.
Although the current version of MuTomVo has been built using SIMCAN, any other simulation tool based in OMNeT++ can be also used.
In essence, MuTomVo uses SIMCAN to simulate different distributed architectures, where applications are executed to provide an output. These applications are tested using test suites. The correctness of a test suite is checked by applying mutation testing techniques. Thus, applications are mutated by injecting faults in its source code.

Link to download MuTomVo: Available soon!


SIMCAN is a simulation platform for modeling and simulating both distributed systems and applications, which is currently available as open source software. SIMCAN has been written in C++ using OMNeT++, a simulation framework focused on building network simulators.
The main objective of SIMCAN is three-fold. First, to provide a high level of flexibility and scalability, allowing users to model a wide range of highly distributed system configurations. Second, to ease the development of distributed applications by providing intuitive APIs. Third, to investigate the performance of distributed and HPC applications executed over distributed systems with different architectural configurations.

For more information, please check the SIMCAN site.