Skip to content
Bugwise
Menu
Testing Fundamentals

Verification vs Validation

"Are we building the product right?" vs "Are we building the right product?" Learn the difference, static vs dynamic testing, and how testers help with both.

beginner Mobile & web
Short on time? Switch to the quick version.

A grocery app ships a new checkout. The testers ran every test case, and every one passed. The developers built exactly what the specification said. Two days later, support is flooded: customers’ groceries are arriving at their offices on Saturday morning.

Nobody made a coding mistake. The product was built right. It just wasn’t the right product. That gap is what this lesson is about.

Two questions every product must pass

Verification

”Are we building the product right?”

Does it match the specification, the design and the rules we agreed on?

Validation

”Are we building the right product?”

Does it actually meet the needs of the real people who will use it?

The quick version

How each one is done

VerificationValidation
Compared withSpecs, stories, designsReal user needs
Typical activitiesReviews, walkthroughs, inspections, running test cases against acceptance criteriauser acceptance testingUser acceptance testingReal users or business people checking the product meets their needs before release.Open in glossary →, usability testingUsability testingChecking how easy and pleasant the product is for real people to use.Open in glossary →, beta testingBeta testingTesting a pre-release build with a group of testers or real users before store release.Open in glossary →, demos to real users
WhoTesters, developers, analystsReal users, customers, business people (with testers)

Static vs dynamic testing

  • Static testing checks things without running the software: reading a user story for gaps, reviewing a design, a developer reviewing code. It is a big part of verification, and it is cheap because problems are found before any code exists.
  • Dynamic testing runs the software and checks what happens. It can serve both: a test case checked against the spec is verification; watching a customer use the app is validation.

They can disagree

  • Passes verification, fails validation: a checkout built exactly to spec confuses real users, or the spec simply forgot something users need.
  • Passes validation, fails verification: users love a feature, but it breaks a written rule, such as a legal requirement to show fees before payment.

A good product needs both.

Verification in detail

Verification asks: did we build what we said we would build? You need something written to compare against: a requirement, a user story with acceptance criteria, a design file, an API spec, a regulation.

Static verification: checking without running anything

Static testing means examining a work product without executing it. The work product can be a user story, a design, a test plan, or code. Common forms, from most informal to most formal:

  1. Informal review. A teammate reads your story or test cases and comments. “What happens if the card is declined?”
  2. Walkthrough. The author walks a small group through the document or design step by step, to share understanding and collect questions. For example, the designer walks the team through the new checkout screens.
  3. Technical review. Peers with the right expertise check a document or a piece of code for problems and agree on fixes. A developer’s pull-request code review is a common everyday example.
  4. Inspection. The most formal kind: defined roles (moderator, reviewers, scribe), checklists, prepared reviewers and recorded findings. Common in banking, health and other regulated industries.

Developers also use static analysis tools that scan code for problems (unused variables, security weaknesses) without running it.

Dynamic verification: running tests against the spec

Most of your test casesTest caseA written set of steps, data and an expected result used to check one specific behavior.Open in glossary → are verification. Each one has an expected result taken from the spec:

  • The password field rejects “abc12” because the acceptance criteria say “at least 8 characters”.
  • The coupon SAVE10 reduces the subtotal by exactly 10%.
  • The transfer limit of $1,000 per day is enforced, including at exactly $1,000 (see Boundary value analysis).

If the result matches the spec, the test passes. Whether the spec itself makes sense is a different question.

Validation in detail

Validation asks: did we build something people actually need, that works for them in real life? The pass/fail judgment comes from users and their goals, not from a document.

Common validation activities:

Static vs dynamic testing

These two terms describe how you test, and they overlap with verification and validation in a way that confuses many beginners.

Static testingDynamic testing
Runs the software?NoYes
ExamplesStory reviews, design walkthroughs, code reviews, inspectionsRunning test cases, exploratory testing, usability sessions, UAT
FindsDefects in documents and code: gaps, contradictions, ambiguityFailures in the running product
Mostly servesVerificationBoth verification and validation

When they disagree

The interesting cases are the ones where a product passes one check and fails the other.

Passes verification, fails validation

Passes validation, fails verification

Less common, but real:

  • The beloved but non-compliant feature. Users love the new one-tap “Buy now” button. But the spec (and consumer law in many countries) requires showing the total including fees before payment. Users are happy; the product fails verification and could get the company fined.
  • The good-enough rounding. Customers never notice that a currency converter rounds to 1 decimal instead of the specified 2. It “works” for them, but it breaks the agreed rule and adds up to real money across millions of transactions.

In both cases the fix is to bring the product and the spec back in line, either by changing the product or, if the users are right, by updating the spec.

How testers contribute to both

A manual tester isn’t just “the verification person”. You help on both sides.

  • Review stories and acceptance criteria early. Ask “what happens if…?” for empty, maximum, invalid and interrupted cases. Use Equivalence partitioning and Boundary value analysis to spot missing rules.
  • Review designs. Are all states there: loading, empty, error, disabled? See Button and Text field.
  • Write test cases that trace back to requirements, so every rule is checked. See Writing test cases.
  • Run them and report mismatches with clear bug reports.
  • Think like a real user during exploratory testing: “would my mom understand this screen?”
  • Report usability concerns even when the spec is met. Label them clearly as “matches spec, but confusing” so the team can decide.
  • Bring real-world context: small phones, bad networks, interruptions, one-handed use, screen readers. See Interruptions and Accessibility basics.
  • Support UAT and beta: prepare environments and test data, collect and triage user feedback.

See it happen: built right, but the right thing?

Run the spec checks on version 1.0 of this grocery checkout, then watch five customers use it. Then switch to version 1.1.

Built right, but the right thing?

A grocery app checkout. Run the spec checks, then watch five real customers use it.

9:41

Verification: does it match the spec?

  • Not run: Checkout lists the user's saved addresses. The first saved address is preselected.
  • Not run: The order summary shows items, delivery fee and total.
  • Not run: Total = items + delivery fee, rounded to 2 decimals.
  • Not run: "Place order" submits the order and shows a confirmation.

Not run yet.

Validation: does it work for real people?

    Not run yet.

    Practice: verification or validation?

    Sort each activity. The trick: look at what the result is compared with. A document means verification; real people’s needs mean validation.

    Verification or validation?

    Sort each activity. Ask yourself: is it checked against a spec, or against what real users need?

    Verification: built right? Validation: right product?0 / 10 sorted · 0 correct
    1. 1.Reading the user story for bank transfers and noticing the acceptance criteria never say what happens above the daily limit.

    2. 2.Running test case TC-014: "Coupon SAVE10 reduces the subtotal by 10%" and comparing the result with the acceptance criteria.

    3. 3.Watching five real customers try to reorder their last meal, and noting where they hesitate or give up.

    4. 4.A design walkthrough: the tester, designer and developer step through the checkout mock-ups and compare them with the requirements.

    5. 5.The bank's branch staff try the new standing-order feature with their everyday customer cases during user acceptance testing (UAT).

    6. 6.A beta build goes to 200 runners. Many ask for a "pause workout" button that nobody had written in any requirement.

    7. 7.A developer reviews a colleague's code change for the delivery-fee calculation before it is merged.

    8. 8.Checking that the password field rejects "abc12" because the acceptance criteria say "at least 8 characters".

    9. 9.Two weeks after launch, reading app-store reviews and support tickets to see whether "Split the bill" really solves the problem it was built for.

    10. 10.At the sprint review, the product owner tries the new "Favorites" screen and asks: "Is this what our customers asked for?"

    Exercise: one feature, both questions

    Here is a short user story for a food delivery app. Plan how you would verify it and how you would validate it, and look for one thing the spec forgot.

    User story: As a hungry customer, I want to reorder a previous order with one tap, so that I can get my usual meal quickly.

    Acceptance criteria

    1. Each past order in Order history has a “Reorder” button.
    2. Tapping “Reorder” adds all items from that order to the cart, with the same quantities.
    3. The cart opens after the items are added.
    4. If the restaurant is closed, the button is disabled.

    Write down: two verification activities, two validation activities, and at least one gap in the spec.

    Verification

    • Review the story before development: is “closed” defined (temporarily closed, outside opening hours, no delivery to this address)?
    • Test cases for each criterion: same items and quantities in the cart, cart opens, button disabled for a closed restaurant (positive and negative cases).

    Validation

    • Watch a few real customers reorder their usual meal: do they find the button, and do they notice what is in the cart?
    • After a beta release, check how many people use Reorder and whether support tickets mention wrong items.

    Gaps the spec forgot (any of these is a great catch)

    • What if an item is no longer on the menu or sold out? Silently skipped, or a clear message?
    • What if the price changed since the last order? Users expect to see the new price before paying.
    • What about customizations (“no onions”, extra cheese)? Customers expect them to be kept.
    • What if the cart already has items from another restaurant?

    Finding these during a story review is verification of the spec itself, and it prevents validation failures later.

    Verification and validation for a feature

    0 of 6 checked

    Check your understanding

    Quick quiz

    0/5 answered · 0 correct

    1. 1.Which question does verification answer?

    2. 2.A tester reads a user story and points out that it never says what happens when the card is declined. What is this?

    3. 3.A checkout passes every test case, but real customers keep sending orders to the wrong address. What happened?

    4. 4.Which activity is the clearest example of validation?

    5. 5.Is 'verification is static, validation is dynamic' accurate?

    Key takeaways

    • Verification: “Are we building the product right?” It compares the product with specs, stories and designs.
    • Validation: “Are we building the right product?” It compares the product with real users’ needs.
    • Static testing (reviews, walkthroughs, inspections) finds problems without running anything, and it is the cheapest place to catch them.
    • Dynamic testing runs the software and can serve both verification and validation.
    • A product can pass one and fail the other: built exactly to a flawed spec, or loved by users while breaking a written rule.
    • Testers help on both sides: question requirements early, and speak up for real users even when the spec is met.

    Finished this page?Nice work, this page is complete!

    Mark it as done to track your progress. It's saved in this browser, no account needed.

    Its review cards are now in Bites ⚡
    Esc

    Type to search the whole site.