Acceptance Testing

Medium

Acceptance Testing is a formal testing process where a software system is evaluated against business requirements to determine if it is acceptable for delivery. Typically performed by end-users or clients, it is the final phase of testing before the software is released to production.

First used·1970s

Definitions·1

Synonyms·5

Category·Software Testing

Also known as

User Acceptance Testing (UAT)End-User TestingOperational Acceptance Testing (OAT)Field TestingFinal Testing

Definitions

What it means.

  1. 01

    Acceptance Testing in Software Development

    Acceptance Testing is a formal level of software testing where a system is evaluated for acceptability. Its primary purpose is to assess the system's compliance with business requirements and determine if it meets the acceptance criteria for delivery to end-users.

    This testing phase is a crucial final checkpoint before a product goes live. It is not focused on finding low-level defects like coding errors (which should have been caught in unit and integration testing), but rather on verifying that the software solves the intended business problem from a user's perspective. It is a form of black-box testing, where the tester is not concerned with the internal workings of the system.

    Key Concepts

    • Acceptance Criteria: A set of predefined conditions that the software must meet to be accepted by the user, customer, or other stakeholder.
    • User-Centric Focus: It validates the software against user needs and business processes, answering the question, "Did we build the right product?"
    • Final Verification: It is typically the last testing phase before the software is released to production.

    Types of Acceptance Testing

    • User Acceptance Testing (UAT): The most common form, where end-users test the software to ensure it can handle required tasks in real-world scenarios.
    • Business Acceptance Testing (BAT): Focuses on whether the software meets its business objectives and provides value.
    • Operational Acceptance Testing (OAT): Verifies the operational readiness of the product, checking aspects like recoverability, security, performance, and maintainability.
    • Contract Acceptance Testing (CAT): The software is tested against criteria and specifications defined in a contract before it is accepted.
    • Alpha & Beta Testing: Forms of external acceptance testing where the software is tested by a limited group of internal staff (Alpha) or a wider external audience (Beta) to get market feedback.

Origin

Where it comes from.

Etymology

The term originates from the core purpose of this testing phase: for the client, customer, or end-user to formally "accept" the software system. It signifies that the product has met the agreed-upon requirements and is fit for its intended purpose, clearing it for delivery or deployment.

Historical context

The concept of Acceptance Testing has its roots in manufacturing and engineering quality control, where a product is inspected against specifications before being accepted by the purchaser. In software, it became a distinct, formal phase with the rise of structured development methodologies like the Waterfall model in the 1970s and 1980s. In this model, Acceptance Testing was a final, gatekeeping step that occurred just before deployment, after all other development and testing activities were complete.

With the advent of Agile and DevOps methodologies in the 2000s, the role of Acceptance Testing evolved. Instead of being a single phase at the end of a long project, it became a continuous activity. In Agile, acceptance criteria are defined for each user story, and acceptance tests are often run at the end of every sprint or iteration. This shift allows for earlier feedback from stakeholders and ensures the product stays aligned with business needs throughout the development lifecycle. Practices like Behavior-Driven Development (BDD) further integrated acceptance testing into the development process by using acceptance criteria to drive the coding itself.

Usage

In context.

  • The project cannot go live until it passes Acceptance Testing, which serves as the final sign-off from the business stakeholders.

  • During User Acceptance Testing (UAT), the client discovered that the reporting feature did not match their workflow, prompting a last-minute change request.

  • Our team has a strict policy that all features must clear Acceptance Testing before being merged into the main release branch.

  • The End-User Testing phase is scheduled for next week, where we will observe real users interacting with the system for the first time.

FAQ

Common questions.

System Testing verifies that the fully integrated software system meets the specified technical requirements. It is typically performed by the QA team and answers the question, "Did we build the system correctly?"

Acceptance Testing, on the other hand, is performed by end-users or clients to confirm that the system meets business requirements and is fit for purpose in a real-world context. It answers the question, "Did we build the right system?"

Taxonomy

Filed under.

Categories

Software TestingQuality AssuranceSoftware Development

Tags

TestingQAUATSoftware Development LifecycleVerification and Validation