What Is Acceptance Testing?
Acceptance testing verifies that software meets its business requirements and is ready to be accepted by users or stakeholders.
Where unit and integration tests ask "does the code work," acceptance testing asks "did we build the right thing." It checks the system against the requirements a customer or product owner actually cares about, usually from the outside, in terms of user-visible behavior. Passing acceptance tests is the signal that a feature is done.
The question it answers
Acceptance testing validates against requirements, not implementation. It confirms that the agreed-upon behavior is present and correct from the user perspective. A feature can pass every unit test and still fail acceptance if it solves the wrong problem.
User versus automated acceptance
Acceptance testing comes in two flavors. User acceptance testing (UAT) is performed by real users or stakeholders, often manually. Automated acceptance tests encode the same requirements as runnable scenarios, frequently written in a BDD Given-When-Then style so they double as living documentation.
A quick example
An automated acceptance test describes a requirement in user terms, then drives the system to confirm it is met.
Scenario: New user sees onboarding
Given a brand-new account
When the user signs in for the first time
Then the onboarding wizard is shownWhere it sits
- After unit and integration tests pass.
- At the boundary between engineering and the business.
- Often expressed as BDD scenarios for shared understanding.
- As the gate that declares a feature truly done.
Acceptance testing in CI
Automated acceptance tests run in the pipeline like other end-to-end tests, exercising the whole system, so they are slower and occasionally flaky. Running them in parallel on fast, isolated runners and retrying transient failures keeps them dependable enough to gate a release.
Key takeaways
- Acceptance testing checks the software meets business requirements.
- It validates the right thing was built, from the user perspective.
- Automated acceptance tests run in CI, often as BDD scenarios.