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.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store