User acceptance testing (UAT) is a step in the lifecycle of a software project. The customer sets his specification(s) and the engineer realizes the software system. After finishing the software system the customer gets it to test whether the functionality fits his requirements or not.
It’s also possible that user acceptance testing is done between departments. For example if one department is realising a part of a system for an other department.
The user acceptance testing is always done by the user or by testers who have been charged by the customer. User acceptance testing is never done by the development team. The user will not get the code which means the user is doing a blackboxtest. The customer expects the developers to realize the software system based on the latest technical improvements/ the actual state of the art. This also includes the code review, implementation test and system test and unit test.
There are three goals of user acceptance testing:
1. Checking if every requirement is implemented
2. Checking if the software system is running as it should (without errors or exceptions)
3. Finding Bugs
The most important goal of user acceptance testing is to find bugs. So those issues could be fixed before the system is going live/productive. Usually it is impossible to check if every function is running as it should because of the complexity of the software system.
1. Requirement analysis
2. Creating test scenarios
3. Creating a test plan
4. Creating test cases
5. Exection of the user acceptance test
6. Tracking the results of the user acceptance test
7. Checking whether the requirements of the customer are accomplished
To execute a user acceptance testing as correct as possible two documents should be created. One is the test specification which describes the aims of the user acceptance testing in detail. The other one is a test plan which depends on the test specification. The test plan contains possible solutions to reach the aims mentioned in the test specification.
The user acceptance test is successful when an error was found. The aim of user acceptance testing is to find as few issues as possible. The user acceptance testing should also be done as quick as possible because the customer wants to implement the software system as soon as possible.
As you can see there is discrepancy between having a software system with no errors but a user acceptance test that is successful when an error was found.
The results of an user acceptance test is dependent on the motivation of the tester doing the user acceptance test.
When user acceptance tests needs to be done too often, the customer might lose confidence in the developing team because they are going to present him the software system as completed. When the user acceptance test fails several times the customer might guess that the development team is not able to implement his requirements correctly.