What Google Can Teach You About Toto Site Verification Sites
Eat-and-run verification answers the question "Are we building this (software) product correctly?
Validation answers the question "Are we building the correct (software) product?
Whilst there are actually variations on the definitions of both of these terms, in the broad software QA and testing fields, there is general consensus that verification refers to correctness whilst validation refers to the value of the final product.
Applying these general definitions to software testing, we see that the practical differences apply to the context and goals of the testing, rather than any difference in software testing methods or tools. The context and goals of 'validating' software will be the end user or customer context whilst the context of software verification is 'meets the specification'. Indeed many software products are built correctly, that is they meet standards and specifications, but they fail to meet the real end user (i.e. customer) requirements.
Ultimately validation is the focus of precisely what the customer is paying for and whoever does validation represents the voice of the customer (or end user in the matter of software applications developed for internal use). In practical terms therefore separating the software quality control teams (i.e. test teams) into two broad groups, one which has intimate comprehension of the customer context of the finished product and another group that has strong comprehension of how a software product should be produced.
By way of example consider an accounting application that records general ledger bookings. The business requirements will be produced which outline the business (accounting) rules to be followed. From the business requirements a technical specification could be produced which would document the behavior (i.e. program specification) of the 'to be' delivered software.
In the above example software validation would include the initial walkthrough of the business requirements, with the business representatives, to 'validate' that the requirements do in fact reflect exactly what the application is essential to do for the business. When the final application has been developed any testing against the business requirements is also a validation activity. The walkthrough of the technical specification to make sure it contains all the functionality of the business requirements is a verification activity. Also the testing of the delivered software against the technical specification is additionally a verification activity.
In essence validation may only be done by those that have comprehension of how the delivered software will probably be used whilst verification can be done by anyone who can read a specification (or standard) and determine if it really is correct. Although we use the phrase 'only', this isn't to demean the value of the verification team but instead to convey the fact that strictly speaking the act of verification only requires understanding of standards and specifications.
In practical terms the degree of complexity of the business requirements will assess whether or not only a specialized software validation team needs to exist. If there is considerable complexity and effort in comprehending the business requirements then the business analyst would typically take on the role of software validation. In instances of high business complexity the analyst would concentrate on given business areas so that you can breakdown the problem domain.
Given a business facing team, to perform validation, a supporting team of software testers may be formed to perform verification. The advantages of splitting off the verification team, for large complicated projects, are concerned with efficiency (cost) and effectiveness (on communicating the business requirements to developers).
Many organizations will offshore the verification of a software application but keep the validation onshore (e. g. in the US) as this arrangement optimizes cost whilst respecting the value of communicating the true voice of the customer.
Irrespective of how a QA team is organized, identifying validation and verification activities (along with skills and resources to optimally perform them) will yield higher degrees of productivity within the development of software which is truly fit for the intended purpose.