While I am learning about mutation testing, I've read in Wikipedia:
The coupling effect asserts that simple faults can cascade or couple to form other emergent faults.
Subtle and important faults are also revealed by higher-order mutants, which further support the coupling effect
I didn't quite understand the coupling effect hypothesis. Could someone eleborate on it with some concrete examples?
CodePudding user response:
The wikipedia definition of the coupling effect is nonsense. If you look through the history there were attempts to fix it around 2014/2015 but a particular user kept reverting it back.
This paper by Offut gives a clear and authorative definition.
Test data that distinguishes all programs differing from a correct one by only simple errors is so sensitive that it also implicitly distinguishes more complex errors.
Since examples of complex faults that are not coupled to simple faults can be constructed, the coupling effect is probabilistic rather than absolute.
https://cs.gmu.edu/~offutt/rsrch/papers/coupl.pdf
In other words, if a test can detect a simple fault at a location in the code it will (probably) also detect more complex faults at the same location.
This is considered to be important as the faults inserted by mutation testing are usually simple single changes to the code.