skip to content

questions

4

What is the difference between verification and validation in a software lifecycle?

level: juniorimportance: must knowfreq 78%

answer

  1. Two different reference points
  2. One compares against a document
  3. One compares against a real need
  4. Ask what the oracle is
  5. Right thing versus thing right

basics

~20 s

Verification asks whether the product was built according to its specification. Validation asks whether that specification described the right thing to build. One checks conformance to a written statement, the other checks fitness for a real need.

solid answer

~50 s

Verification and validation answer two different questions about the same build. **Verification** is conformance: does this work product match the specification, design or acceptance criteria it was written against? Reviews, static analysis and most automated checks are verification, because they compare the artefact to a written statement of what it should be. **Validation** is fitness: does the built system actually solve the user's problem in their real context? That needs contact with real users, real data volumes and real workflows, so it usually arrives through acceptance work, usability sessions and observation of live use. The distinction matters because a system can pass every verification check and still be wrong: if the specification misread the need, verification faithfully confirms the wrong behaviour. The interview shorthand is "did we build the thing right" versus "did we build the right thing", but say what each one compares against, not just the slogan.

go deeper

for a junior

Be ready to give both definitions in one breath and name the reference each one uses: a document for verification, a real user need for validation. The slogan alone is not enough; interviewers listen for what is being compared.

for a middle

Explain that verification can be static or dynamic and that both can start early. Be able to classify concrete activities — a design review, a component check, a usability session — and justify each classification by naming its oracle.

for a senior

Show the failure mode you have actually seen: a build that passed everything because the specification itself was wrong. Describe how you get validation evidence early and cheaply instead of discovering it at acceptance.

for a principal

Own the balance. Argue where an organisation should invest when verification evidence is abundant and validation evidence is thin, and how you make validation repeatable enough to trust without pretending it can be fully automated.

## Two questions, not two phases Verification and validation are often taught as two boxes late in a lifecycle diagram, which is the wrong picture. They are two *questions*, and both can be asked at almost any point. The difference is what each one compares the system against. **Verification compares an artefact to a stated intent.** The stated intent is a document, a model, a set of acceptance criteria, an interface agreement, a coding standard — something written down and agreed. Because the reference is written, verification can be delegated, automated and repeated. A review of a requirements document against a template is verification. A static analyser checking a rule set is verification. An automated check asserting that an endpoint returns the documented shape is verification. All of them share one property: **the specification is the oracle** — the thing that decides whether observed behaviour is wrong. **Validation compares a system to a real need.** The reference is not a document but a person, a job to be done, an operating context. Because the reference is not written down, validation cannot be fully automated. It looks like acceptance work with the people who asked for the system, usability observation, piloting with a subset of real traffic, or simply watching how the thing is used once it is live. Validation can discover that a perfectly implemented, perfectly documented behaviour is useless or harmful. ## Why the distinction has teeth The expensive failure mode is a system that passes everything and is still wrong, and it happens whenever the specification itself is the defect. Consider a smart-meter reading feed that ingests half-hourly consumption from roughly 218,400 meters and exposes a history endpoint. The specification says the endpoint returns thirteen months of readings for "the requesting operator's assigned meters". Every verification activity passes: the interface agreement matches the document, the parameter validation matches the document, the retention window is exactly thirteen months, the reviewers signed off because the code does what the page says. Then a field technician is put in front of it during acceptance work and the assumption collapses. Technicians are not assigned meters; they are assigned regions, and a region is resolved at request time from a role attribute that nobody pinned down. The implemented rule is broader than anyone intended, and a technician can pull any household's consumption history — a permission escalation that no verification activity could ever have caught, because the specification never said what "assigned" meant and verification only ever compares the build to the specification. Validation caught it in one session because its reference was a real person doing a real job. The inverse failure is just as real: a team that only validates. If the only evidence is a stakeholder saying "looks right", nothing is repeatable, nothing regresses safely, and the same judgement has to be re-made by hand on every release. ## Where each one shows up in practice - **Static verification** — reviews, walkthroughs, inspections, analysis of specifications, designs and code. No execution needed, and it can start before code exists because it only needs the artefact and its reference. - **Dynamic verification** — executing the system and comparing behaviour to a documented expectation at any level, from a single component up to the assembled system. - **Validation** — user acceptance work, usability observation, piloting, business-facing exploration where the tester's own judgement about fitness is the oracle, and post-release observation of how the system is actually used. A useful test when you cannot tell which one you are doing: **ask what would have to change for the check to become wrong.** If the answer is "the document", it is verification. If the answer is "the users' needs or their context", it is validation. ## Common confusions to avoid Validation is not a synonym for acceptance activity by role; a business analyst reviewing a requirements document against a checklist is verifying. Validation is not necessarily late; showing a rough prototype to a user before any real implementation exists is validation performed early. Verification is not a synonym for automated, and validation is not a synonym for manual — the split is about the reference, not the technique. Finally, both are needed and neither substitutes for the other. Verification without validation ships a faithful implementation of a misunderstanding. Validation without verification ships an opinion that cannot be reproduced next release.

  • Can validation happen before any code is written?
    Yes. Showing a paper sketch, a clickable mock or a worked example to the people who will use the system is validation: the reference is their real need, not a document. It is often the cheapest validation available, because nothing has been built yet that would have to be unbuilt. What it cannot do is confirm behaviour under real data volumes or real operating conditions, so it reduces the risk of building the wrong thing without removing the need for validation against the running system later.
  • Is a review of a requirements document verification or validation?
    Reviewing a requirements document against a template, a standard, a checklist or an upstream business objective is verification: it compares one artefact to a stated reference. The same session becomes validation the moment the reference stops being a document and starts being a person's actual job — for example when a real operator reads a scenario and says it does not match how the work is done. Many effective review sessions do both, but they are different activities and it helps to name which one you are running.
  • If every check passes and the customer is still unhappy, what does that tell you?
    It points at the specification, not the checks. Passing verification means the build matches its stated intent, so unhappiness means the stated intent was wrong, incomplete or based on a misread context. The response is to go find the reference that was missing — talk to real users, observe the actual workflow, and fix the specification — rather than to add more checks against the same document, which will only confirm the same misunderstanding more thoroughly.

Verification is proofreading a translation against the source text; validation is handing it to a native speaker and finding out that the source text said the wrong thing.

saying these in an interview costs you the question

  • Says verification is manual and validation is automated
  • Treats validation as just the last activity before release
  • Cannot say what each activity compares against
  • Claims a full pass of every check proves fitness for use
  • Uses the two words interchangeably throughout the answer
  • Thinks only one role is allowed to validate

context

open as a page

In the V-model, how does each specification stage pair with a verification level?

level: middleimportance: must knowfreq 64%

basics

~20 s

The V-model bends the sequence into a V. Each specification stage on the descending arm has a partner verification level at the same height on the ascending arm, and that stage's document is the source for the checks performed at its partner level.

open as a page

How do you decide what moving from stage-gated verification to continuous verification actually changes?

level: principalimportance: should knowfreq 38%

basics

~20 s

Sort the existing checks by what makes them safe to run constantly: speed, determinism, self-diagnosis and freedom from scarce resources. Those become standing assertions evaluated on every change and against the running system; the rest still needs a release boundary, and saying which is which is the decision.

open as a page

How do you use the agile testing quadrants to decide which checks a release needs?

level: seniorimportance: nice to knowfreq 26%

basics

~20 s

The quadrants classify checks on two axes: business-facing versus technology-facing, and supporting the team versus critiquing the product. Plot the planned checks on the grid, and an empty cell shows a kind of evidence the release does not have.

open as a page