Verification vs Validation
Verification and validation are two different questions about a product and the work products that lead to it. Verification asks whether a work product meets its specification: requirements, acceptance criteria, design or agreed standards. Validation asks whether the product meets the needs of its users and other stakeholders in its intended use and real environment. The classic shorthand, usually credited to Barry Boehm: verification is "are we building the product right?", validation is "are we building the right product?"
An example: a requirement says "On the 1st of each month, the system emails the store manager a PDF sales report for the previous month." Tests confirm that the email arrives on the 1st and that the totals match the database, so verification passes. But the manager orders stock every Sunday from the previous week’s sales, and a monthly report comes too late to help. The product was built right, but it is not the right product.
Why it matters
Each question guards against a different risk. Without verification, the product drifts from what was agreed: a rule coded as "greater than" instead of "greater than or equal", a missing error message. Without validation, the team can deliver exactly what was written and still waste the release, because the requirement described the wrong thing.
For a tester, the distinction exposes a trap. Test cases are usually derived from the requirements, so a defect in a requirement is copied into the tests, and those tests still pass. A green test report shows conformance to the specification, not usefulness. Knowing which question each activity answers lets you report precisely what your testing showed and what it did not.
Two questions, two reference points
The ISTQB Foundation syllabus (CTFL v4.0) describes testing as involving both: verification, checking whether the system meets specified requirements, and validation, checking whether it meets users’ and other stakeholders’ needs in its operational environment. The difference is not what you do but what you compare the product with.
- Verification compares a work product with its specification: code with the design, a screen with its acceptance criteria, an API response with the API contract, a requirement with the qualities of a good requirement (clear, consistent, testable).
- Validation compares the product with its intended use: the users’ goals, workflow, devices and data, and the business outcome the feature should deliver. Much of this is never written down, so you have to ask and observe.
- Some teams also say "validation" for input checks (a form that rejects an invalid email) or for schema checks on an API response. Those are behaviours of the software; testing them against the specification is verification.
Both come in static and dynamic forms
Static testing examines a work product without running the software: people review it or tools analyse it. Dynamic testing runs the software. The ISTQB syllabus notes that static testing can be applied for both verification and validation. Dynamic testing serves both too: running tests derived from the requirements is verification, while acceptance testing, which the syllabus describes as focusing on validation, is ideally done by the intended users. So the popular shortcut "verification is reviews, validation is testing" is wrong.
- Static verification: reviewing a story for clear, testable criteria; comparing an API contract with the requirement; static analysis of code.
- Dynamic verification: executing test cases derived from the acceptance criteria.
- Static validation: walking through a story or screen sketches with future users before any code exists.
- Dynamic validation: user acceptance testing, a pilot or beta with real users, usability sessions.
Worked example: booking a clinic appointment
A clinic wants patients to book appointments on its website. The story: "As a patient, I want to book an appointment online, so that I do not have to call the reception." Acceptance criteria: AC1, 15-minute slots from 08:00 to 16:00, Sunday to Thursday; AC2, a patient account can hold at most one future appointment; AC3, a confirmation SMS is sent within 1 minute of booking. Here are four checks on it, in the order they happen: the two static ones in refinement, the two dynamic ones once the feature is built.
- Static verification: in the story review the tester asks whether 16:00 is the last start time or the closing time. The product owner says the last slot starts at 15:45, and AC1 is corrected before any code exists.
- Static validation: reception staff walk through the story and screen sketches. They point out that parents book for their children from one account, so AC2 would stop a parent booking for two children. The limit becomes one future appointment per patient.
- Dynamic verification: tests of the corrected criteria book the 08:00 and 15:45 slots, confirm that no 16:00 slot is offered, check that a second future booking for the same patient is rejected while one for a second child on the same account is accepted, and time the SMS. All pass.
- Dynamic validation: a one-week pilot shows that many patients pick the first free slot without saying what the visit is for, yet a dental cleaning takes two slots. Every criterion was met; the requirement missed a need.
Verification
Are we building the product right?
- Compared with:
- The specification: requirements, acceptance criteria, design, contracts, standards
- Static form: nothing runs:
- Story review: is 16:00 the last start time or the closing time?
- Dynamic form: the software runs:
- Tests of the corrected AC1 to AC3: 08:00 and 15:45 booked, a patient’s second booking rejected, SMS timed
- What a miss looks like:
- The product breaks an agreed rule
Validation
Are we building the right product?
- Compared with:
- Users’ and stakeholders’ needs for the intended use, in the real environment
- Static form: nothing runs:
- Sketch walkthrough with reception: parents book for their children from one account
- Dynamic form: the software runs:
- One-week pilot: patients book without saying what the visit is for
- What a miss looks like:
- Every rule is met, and users still cannot do their job well
Try it: User Story → Test Scenarios Try it: Requirements → Test Cases
Why you need both
Verification without validation gives software that conforms to a wrong or incomplete specification: no test written from AC1 to AC3 could have failed on the visit-length problem. The ISTQB syllabus lists this trap among its seven testing principles as the absence-of-defects fallacy: testing all the specified requirements and fixing every defect found can still produce a system that does not meet users’ needs, so validation is needed in addition to verification.
Validation without verification is just as risky. Patients trying the main path in a pilot will rarely notice that two people can book the same slot at the same moment, or that a cancelled booking still blocks its slot; such failures need deliberate test data and timing. And legal, security and accessibility rules must be met whether users ask for them or not.
Common mistakes
- Treating "all tests passed" as proof that the product is right. Tests derived from the requirements verify those requirements, not whether the requirements describe what users need.
- Equating verification with reviews and validation with running tests. Both have static and dynamic forms.
- Leaving validation to a UAT phase at the end, when the cheapest validation happens before coding, in a story review with the people who will use it.
- Confusing input validation or schema validation, which are checks the software performs, with validation in the sense of this lesson.
- Quietly testing against your own idea of what users need. If a requirement looks wrong for users, raise it with the product owner instead of changing the expected result yourself.
The QA perspective
On a working team you ask both kinds of question from the first refinement meeting. Verification questions are about the story itself: is each criterion clear, consistent and testable? Validation questions are about its purpose: who uses this, in what situation, on which device, and what problem does it solve? The product owner or business analyst owns the answers; support staff often know the real workflow best.
Keep the two kinds of finding apart. A test that fails against an acceptance criterion is a defect, traced to that criterion. A doubt that the criterion fits real use is a question or change request for the product owner, with your evidence. In test reports, say what each kind of check covered: "all 14 acceptance criteria verified; validation limited to an internal demo so far".
Practice exercise
Classify the checks on a leave request feature
An HR app has the requirement below, and the team carried out six activities. Classify each as verification or validation, and as static or dynamic. Then decide where each finding goes: a defect against the specification, or a question or change request for the product owner.
Finally, write one validation question that the requirement leaves open.
Requirement LV-4
An employee can request 1 to 30 working days of annual leave. The request goes
to the direct manager, who must approve or reject it within 3 working days;
otherwise it is escalated to HR.
Activities
1. Requirement review: "working days" is not defined (weekends? public holidays?).
2. The API contract for the leave endpoint is compared with LV-4: it allows 31 days.
3. A test submits a 31-day request and checks that it is rejected.
4. Three managers look at screen sketches: they approve requests on their phones
between meetings, but the sketches show a desktop-only approval page.
5. Two-week pilot in one department: managers on business trips miss the 3-day
window, and many requests escalate to HR.
6. Usability session on the test build: most employees look for their remaining leave
balance before choosing dates; the form does not show it.- Name what the product is compared with: the specification, or users’ needs in real use.
- Decide whether the software runs during the activity (dynamic) or not (static).
- Decide whether the finding shows a product that breaks the specification, or a specification that may be wrong.
- Write one more question about intended use that LV-4 does not answer.
Show the model answer
1: verification, static. The requirement is checked against the qualities of a good requirement. Raise a question for the product owner: how are working days defined, including weekends and public holidays?
2: verification, static. Two work products are compared, and the contract contradicts LV-4. Report a defect now, before code is built on it.
3: verification, dynamic. If the 31-day request is accepted, that is a defect.
4: validation, static. Nothing runs; real users judge the sketches against how they work. Change request for the product owner: managers need to approve on a phone, which no requirement says.
5: validation, dynamic. Escalation works as specified, so verification passes, but the rule does not fit how managers work: a change request (for example a deputy approver), not a defect.
6: validation, dynamic. Real users work with the running build and reveal a need nobody wrote down. Change request: show the remaining balance on the form.
Possible open questions: Can approved leave be cancelled? Who approves when the manager is on leave? Do employees need half days?
Frequently asked questions
Is user acceptance testing the same as validation?
No, but it is a common form of dynamic validation: users or their representatives check that the product supports their work before accepting it. UAT usually re-checks the acceptance criteria as well, which is verification. Validation also happens earlier, in story and prototype reviews with users, and later, in pilots, beta releases and feedback from real use.
Which of the two does a tester do?
Both. Most day-to-day test execution against requirements and acceptance criteria is verification. Testers contribute to validation by asking about users and intended use in reviews, by testing with realistic data, devices and workflows, and by preparing and supporting UAT. The final judgement on whether needs are met belongs to the users and the product owner.
Can a product pass verification and fail validation, or the other way round?
Yes. The monthly sales report met its specification and failed its user. The reverse is a product that users like in a demo but that calculates VAT wrongly: it fails verification of a requirement that users do not check but the business must meet.
References
- ISTQB Certified Tester Foundation Level (CTFL) v4.0The foundation syllabus of software testing: test levels and types, test design techniques, test management and tools.
- ISTQB GlossaryThe standard definitions of testing terms — test case, regression testing, severity, priority, boundary value analysis and the rest.
Practise with Mutqan tools
Convert a list of numbered requirements into traceable test cases with a requirement-to-test matrix.
Derive end-to-end test scenarios from a user story, including alternate and exception flows.
Generate Given/When/Then acceptance criteria and a definition-of-done checklist from a user story.
Find missing requirements — error handling, permissions, edge conditions, non-functional needs — with Mutqan AI.
Go deeper
- Static TestingStatic testing vs dynamic testing
- How to Review RequirementsHow to review requirements and user stories: an 8-point checklist, red-flag words, a worked example with review comments, and where AI tools help.
- End-to-End Product Quality AssuranceTest levels: unit, integration, system and acceptance
Your progress on this topic
Not started
Mark the topic complete when you have studied it and done the exercise.
Sign in to track your progress
Mark topics complete, continue where you left off and unlock specialisation exams.