An “oracle” in software testing is a procedure by which testers can decide whether the output of the program under testing is correct. In some situations, however, the oracle is not available or too difﬁcult to apply. This is known as the “Oracle Problem”.
These applications exhibit properties such that if the input were modiﬁed in a certain way, it should be possible to predict some characteristics of the new output, given the output of the original input. This approach is known as Metamorphic testing(MT).
Metamorphic testing can be implemented easily in practice. The key step is to identify a set of properties (“metamorphic relations”, or MRs) that relate multiple inputs and their outputs of the algorithm for the target program. Then, the source test cases and their corresponding follow-up test cases are constructed based on these MRs.We then execute all these test cases using the target program, and check whether the outputs of the source and follow-up test cases satisfy their corresponding MRs.