software-engineering

Definition

Verification

“Are we building the product right?”

Evaluation of work-products to determine compliance with specified requirements.

  • Reference: Specification.
  • Goal: Correctness, consistency, completeness.
  • Methods: Static analysis, unit testing, code review.

Validation

“Are we building the right product?”

Evaluation of the software to determine if it satisfies user needs and business goals.

  • Reference: User Needs.
  • Goal: Utility, fitness for purpose, user satisfaction.
  • Methods: Acceptance testing, usability testing, A/B testing, reviews, prototyping.

Classification

Ambiguity

The distinction depends on the existence of explicit specifications.

Example: “Slow loading time” is a Verification failure if a performance spec exists (e.g. “Response < 500ms”), but a Validation failure if the spec was silent but users are unsatisfied.

Verification Failures

Failures to meet the specification or logical correctness.

  • “A button does nothing when pressed.”
    • Functional defect. The implementation contradicts the implied behaviour.
  • “The ‘Upload File’ form provides no file selector.”
  • “Stored files are deleted when the server restarts each week.”
    • Defect. Persistence is a standard requirement; data loss is a violation of system invariants.
  • “Telephone numbers are not validated correctly.”
    • Correctness failure. The implemented logic does not match the formatting rules.
  • “The website takes a very long time to load.”
    • Non-functional failure. Violation of performance specifications (e.g. latency < 2s).

Validation Failures

Failures to meet user needs or constraints, despite potentially “correct” code.

  • “The website only supports the latest versions of Firefox and Chrome.”
    • Environmental constraint. Fails users on other browsers/hardware.
  • “There is no app available for Android users.”
    • Market fit. The product strategy ignores a segment of the user base.
  • “The feature to change your username is very difficult to find.”
    • Usability failure. The feature exists (verified) but blocks the user’s workflow.
  • “The website is available only in English.”
    • Accessibility/Demographic failure. Fails to meet the needs of non-English speakers.