【Software Testing】Difference between Verification and Validation

Posted by 西维蜀黍 on 2018-12-01, Last Modified on 2024-05-02

Most people think verification and validation are exactly the same thing, but only different words. However, these two is not the same thing. I would like discuss both of them, especially the distinction between them.

Difference between Verification and Validation

  • Verification [Process-related]: a static practice of checking documents, design code and program

  • validation [Product-related]: a dynamic practice of validating and testing the actual product

    • validation will be done by testing

In simple terms, software verification is: “[From the developer’s perspective] Assuming we should build X, does our software achieve its goals without any bugs or gaps?” On the other hand, software validation is: “[From the end user’s perspective] Was X what we should have built? Does X meet the high level requirements?”

Narrow scope for the different between verification and validation

When it is defined more strictly, verification is equivalent only to static testing and it is intended to be applied to artifacts. And, validation (of the whole software product) would be equivalent to dynamic testing and intended to be applied to the running software product (not its artifacts, except requirements). Notice that requirements validation can be performed statically and dynamically

Program verification aims at proving the correctness of programs by showing that it contains no errors. This is very different from testing that aims at uncovering errors in a program.

Difference between verification and testing

Verification promises to verify that a program is free from errors, while testing is not a perfect technique in that a program might contain errors despite the success of a set of tests.

Program verification and testing are best considered as complementary techniques. In practice, program verification is often avoided, and the focus is on testing.

Reference