Acceptance testing is carried out to test if the contract between customer and developer is still on track. It ensures that software product met all customer requirement and changes that happened during the development phase.
It is useful because:-
- It allows customer to verify the product
- Identify the issue or provide suggestion which unit or integration test cannot.
A product is said to pass acceptance testing successfully after fulfilling these criteria:- timely delivery, performance, scalability and upgradeability, functional correctness and completeness, requirement completion etc.
An acceptance test is a level of software testing and its purpose is to evaluate whether a product is acceptable for delivery. Let me explain it with an example of a desktop machine. During the process of manufacturing a keyboard, mouse, monitor, CPU and others are developed separately and thus unit tested separately. When two or more unit is ready then they are assembled and again tested, so integration test is performed. When the complete desktop is integrated, system test is performed. Once system test is completed, the acceptance testing is performed to ensure that the desktop is ready as per the requirement of an end user.
There are several roles that are involved in acceptance test:-
Alpha Acceptance testing
This is performed by the organization who developed the application but were not directly involved in the development (developer). They can be managers, sales person or anyone else from the organization who will verify the product created in accordance with client requirement. This testing is done before beta testing to find out any possible issues/bugs before releasing product to the client. Alpha testing uses both white box and black box testing, issues are usually fixed immediately by developers, ensures product quality before moving to beta testing and it is carried on the test environment.
User Acceptance (Beta) testing
This testing is performed by an end user of the software, the product is released to some of the end-users (a limited number of user) to perform the testing on real environment, this reduces the risk of issues/bugs that other end-users might find after full product delivery. It takes direct feedback from customer thus it adds an advantage to product quality delivery. Beta testing mainly uses black box testing, most of the issues or suggestion collected will then be implemented in the future version, and it is to make sure that product is ready for real time users.