 So two different programs with the same functionality, but with different sets of data and different implementations are executed.Their outputs are compared, and must be equal.This method covers not just bit-flips or processor faults but also programming errors (bugs).