Software and cathedrals are much the same: first we build them, then we pray.

Anonymous

What is Acceptance Testing?

Acceptance Testing checks whether the software is compliant with the business requirements and evaluates its delivery readiness to end-users.

Sometimes also known as user acceptance testing (UAT), it is the final step in the software testing process before the software product is released to end-users.

It is a black-box technique in which the software is tested against acceptance criteria related to:

  • Functionality
  • Usability
  • Performance
  • Scalability
  • Documentation
  • Reliability
  • Compliance
  • Compatibility
  • Recoverability

Why Acceptance Testing?

One can understand the need for acceptance testing through an example.

Assume that a software development company was hired to build an online shopping website. After software passed the system testing phase, the company presented it to the customer for acceptance testing. The customer's team ran acceptance tests and came up with a few problems. Some of them were:

  • The functionality of buying a product directly, without adding it to the shopping cart, was missing.
  • Users could not find the link to view all reviews of a product.
  • The version of OpenSSL library was not the latest released version. The contract required the use of the latest released versions of all libraries used.
  • The software did not encrypt its daily database backup.

As you can see, acceptance testing exposed some missing functionality, usability issues, contractual issues and operational issues.

Types of Acceptance Testing

There are a few types of acceptance testing. Depending on the nature of the software product being developed, some of the following may or may be applicable:

User Acceptance Testing (UAT)
User Acceptance Testing is also well known as end-user testing. It is performed to evaluate whether the product works as expected for the end-user.
Business Acceptance Testing (BAT)
Business Acceptance Testing is used to decide whether the product meets the business objectives or not. It could happen that even though the end-users like the product, it may not meet the business motives.
Contract acceptance testing (CAT)
Contract Acceptance Testing verifies whether the software product meets the criteria and specifications agreed upon in the contract.
Regulations acceptance testing (RAT)
Regulation Acceptance Testing, also called Compliance Acceptance Testing, evaluates whether the software product complies with the laws and regulations.
Operational acceptance testing (OAT)
Operational Acceptance Testing, also called Operational Readiness Testing (ORT), evaluates the adequacy of processes and tools required to support the software product that is to be released to end-users. It is concerned with support aspects such as installation, upgrades, backup, recovery, availability and monitoring.
Alpha testing
Alpha testing is performed to evaluate the product in the development environment by a specialized tested team known as alpha testers: the tester's suggestions and feedback help improve product consumption and fix bugs.
Beta testing
Beta testing, also called field testing, is performed to evaluate the product by exposing it to real end-users called beta testers. Constant feedback from the users is collected, and the issues are fixed. It helps in improving the quality of product and deliver a high user experience.