Acceptance Testing
- In Turkish
- Kabul Testi
In short
Acceptance testing checks whether software meets the requirements agreed with its users or customers, so the team can decide if it is ready to release.
What is acceptance testing?
Acceptance testing verifies that a feature or a whole system does what its users, customers, or business owners actually asked for. It answers the question of whether the team built the right thing, rather than whether one function returns the right value. The checks usually come straight from the acceptance criteria of a user story, a requirements document, or a contract.
There are two broad forms. Automated acceptance tests are written by developers or testers against the system's public interface, such as its UI or API, and run in the CI/CD pipeline, with each test mapped to one agreed requirement. User acceptance testing (UAT) is done by real users, customers, or the Product Owner, who try the software in a staging environment and formally sign off before release. Some industries add alpha and beta testing, or operational acceptance testing that checks backups, monitoring, and recovery.
Think of the final walkthrough before buying a new house: the buyer checks the house against what was promised, such as three bedrooms and working heating, not how the pipes were soldered. Teams run acceptance tests at the end of a sprint, before a major release, or before handing over software built under a contract.
Acceptance testing is often confused with end-to-end testing. End-to-end describes the scope of a test, the whole system driven through its real interface, while acceptance describes its purpose, checking a requirement from the user's point of view. Many acceptance tests are end-to-end tests, but an acceptance test can also call an API or a service layer directly. It also differs from acceptance criteria: the criteria are the conditions, and the acceptance tests are the checks that verify them.
Key takeaways
- Acceptance testing checks software against agreed user or business requirements.
- Automated acceptance tests usually map one test to one acceptance criterion.
- User acceptance testing (UAT) is done by real users or customers before sign-off.
- End-to-end describes a test's scope; acceptance describes its purpose.
Example
# Story: "As a shopper, I get free shipping on orders of $50 or more."
# Each test checks one acceptance criterion through the public API.
def test_orders_of_50_dollars_or_more_ship_free(api):
cart = api.create_cart(items=[{"sku": "BOOK-1", "price": 50.00}])
assert api.checkout(cart).shipping_cost == 0
def test_orders_under_50_dollars_pay_standard_shipping(api):
cart = api.create_cart(items=[{"sku": "PEN-1", "price": 12.00}])
assert api.checkout(cart).shipping_cost == 4.99Readers ask
What is UAT?
UAT stands for user acceptance testing. Real users, customers, or their representatives try the finished software in a realistic environment and confirm that it supports their work before it goes live.
What is the difference between system testing and acceptance testing?
System testing is done by the development or QA team to check that the complete system meets its technical specification. Acceptance testing looks at the same system from the user's or business's point of view and decides whether it is acceptable to release.
Who writes acceptance tests?
The criteria are agreed by the Product Owner, developers, and testers together. Developers or testers usually automate them, while user acceptance testing is performed by the users or customers themselves.
See also
- Acceptance CriteriaTeams & Process, p. 1Acceptance criteria are the specific, testable conditions a single user story or backlog item must meet before the Product Owner accepts it as complete.
- End-to-End TestTesting & Quality, p. 8An end-to-end test is an automated test that runs a complete user journey through the whole application, from the user interface to the database and back.
- Behavior-Driven DevelopmentTesting & Quality, p. 4Behavior-driven development is a practice where developers, testers, and business people agree on plain-language examples that become automated tests.
- User StoryTeams & Process, p. 30A user story is a short, plain-language description of a feature told from the user's point of view, explaining who wants it, what they want, and why.
- Definition of DoneTeams & Process, p. 7The Definition of Done is a shared checklist of quality standards that every piece of work must meet before a team can consider it complete.
- Integration TestTesting & Quality, p. 12An integration test is an automated test that checks whether several parts of a system, such as code, a database, and an API, work correctly together.
- Black-Box TestingTesting & Quality, p. 5Black-box testing checks software only through its inputs and outputs, against what it is supposed to do, without looking at or relying on the code inside.
Spotted a mistake or something missing on this page?Suggest an edit