Verification and validation are terms that are used in software testing to check that everything is all right with the project. The definitions are very similar and are easy to confuse, especially because those happens in the process of software testing.
Software verification refers to the process of determining whether or not the product of a given phase of a software development process fulfill the requirements established during the previous phase.
In other words, software verification evaluates each phase of the software to determine if the software is being programed correctly in a way in which each requirement is being fulfilled from the specific phase. Another way, and more easy, to understand the definition is to ask this question: “Are we building the product right?”. With this we can say that verification is to check that the software can meet the requirements form the user.
For the definition of software validation from here we have:
Software validation refers to the process of evaluating software at the end of its development to insure that is free from failures and complies with it requirements.
This means that software validation determines if the software have the user requirements and that can be useful, because it can have all what the user wants but it can have an incorrect behavior, this is what “free from failures” of the definition refers. Validation also have a question to answer that can make the definition easier to understand which is: “Are we building the right product?”.
Is possible for a software to pass the software verification but it fails at the validation. This happens when the product is built with the right specification form the customer but it doesn’t satisfy the user needs.