Equivalence Modulo Input Fuzzers & testing is a type of [[Metamorphic Testing]] that involves generating a program that given some input
By modifying code that is not covered validly (still compiles) we can compare the behaviour of equivalent programs.
- Get a program.
- Get an input,
$I$ get coverage$Cov_I$ - Mutate lines that
$\not\in Cov_I$ , this is dead code, so should make no difference. - Test outputs of mutated programs are identical.
This is a mix of a [[Mutation-Based Fuzzer]], [[Smart Fuzzing]], and [[Black-Box Fuzzing]] (as the SUT is the compiler with unknown internals, we can still have knowledge about the language)