Verification and Validation
Suppose a program P exhibits behavior X— when executed, P will create file “out.txt” in the current folder.
To validate behavior X, we can execute program P in an empty folder and check if the folder contains a file named “out.txt” after P completes execution. Since the file did not exist before the execution of P and did exist after the execution of P, we have evidence suggesting that execution of P created the file. In other words, our supposition is validated because the evidence is consistent with our supposition. However, we do not rule out other possibilities, e.g., a devious background program Q that monitors P and creates the file :)
To verify behavior X, we can monitor the actions performed by P and possibly other programs to ascertain P’s action indeed created the file in the current folder. The sequence of observations from such monitoring can be used to establish/prove the truthfulness of our supposition about P and X. Unlike in the case of validation, we attempt to rule out other possibilities.
In short,
Validation is about checking consistency of statements. Verification is about checking truthfulness of statements.