What is user acceptance testing (UAT)?
User acceptance testing (UAT), also called application testing or end-user testing, is a phase of software development in which the software is tested in the real world by its intended audience. UAT is often the last phase of the software testing process and is performed before the tested software is released to its intended market. The goal of UAT is to ensure software can handle real-world tasks and perform up to development specifications.
In UAT, users are given the opportunity to interact with the software before its official release to see if any features have been overlooked or if it contains any bugs. UAT can be done in-house with volunteers, by paid test subjects using the software or by making the test version available for download as a free trial. The results from the early testers are forwarded to the developers, who make final changes before releasing the software commercially.
UAT is effective for ensuring quality in terms of time and software cost, while also increasing transparency with users. UAT also enables developers to work with real cases and data, and if successful, the process can validate business requirements.
What is the purpose of UAT?
User acceptance testing validates the testing done at the end of the development cycle. It is typically completed after unit testing, quality assurance, system testing and integration testing. The software may undergo other testing phases and be completely functional but might still not meet its requirements if it is not well received by its intended users. This can happen if software requirements were not clearly defined to the developers, if certain modifications made during development changed the scope of the project or if the software just was not ready to be tested in a dynamic, real-world environment. Overall, UAT safeguards against faulty, ineffective or unfinished software products being released.
To be effective, UAT should be thorough and reflect user requirements, while also identifying potential problems not yet detected in previous tests. Without UAT, tested software may be released with bugs or a lack of a clearly defined goal for end users. These issues can be costly and potentially damaging to the software vendor's reputation.
Who performs UAT?
End users normally perform user acceptance testing. They are the most effective group to test software in this form because they know exactly how the software will be used on a daily basis and what changes need to be made to be suitable for this day-to-day use.
Internal functional experts also play a role in UAT, as they help shape UAT cycles and test management, as well as interpret the results.
Types of UAT
Multiple types of software tests qualify as user acceptance testing. These tests include the following:
- Beta testing. The software is given to groups of end users who evaluate it for its intended purpose and provide feedback to developers for improvements.
- Black box testing. An end user tests specific software functions without seeing the internal code.
- Operational acceptance testing. The focus is on predefined workflow for the software and operational readiness, such as product compatibility, reliability and stability.
- Contract acceptance testing. Software is tested based on specific criteria and specifications that the project team defines in their contract.
- Regulation acceptance testing. This test focuses on ensuring the software meets legal rules and regulations.
How to perform UAT
The number of steps involved in a user acceptance test may differ, depending on how granularly the team wants to define each step in the process. For the most part, however, these steps commonly include the following:
- Plan. The business requirements, time frame and strategies for UAT are outlined.
- Identify and create real-world test scenarios. These test scenarios should cover as many functional cases as possible that end users may face.
- Select the testing team. Developers can decide whether to have only a few end users test the software or to open up testing to more participants by offering a free trial over the web. End users should have knowledge of the business and how to detect and report issues.
- Test and document. The end users begin testing the software, logging any potential bugs or other issues. All bugs should be recorded in a bug tracker with notes on how to reproduce the errors.
- Update code, retest and sign off. The development team adjusts the code based on test results -- resolving any bugs or making suggested changes -- and then retests. Once the software meets the users' criteria, the tester signs off on the changes.
After this, the software should be ready for release into production.
Challenges of UAT
Some of the possible challenges or downfalls of user acceptance testing include the following:
- Poor test planning. Because UAT is the last stage of the software development lifecycle, any delays in previous stages mean less time and more pressure to complete this stage faster. Better planning should be done for both UAT and software development, and the proper development time should be allotted to each.
- Bad choice of UAT users. If UAT testers are not properly trained, they may not know how to properly submit bugs or reports. This can cause the organization to be unaware of the different bugs or how to replicate them. UAT testers should be properly trained.
- Testing environment and deployment. Using the same environment that was used with functional testing and system testing could lead to software dependencies in that particular environment. Organizations should use a different environment for UAT.
- Communication gaps. Gaps in communication between UAT and testing teams could cause delays or problems with reporting of bugs or testing scenarios. Teams need to ensure they have good planning and communication processes in place.
UAT best practices
Some best practices of user acceptance testing include the following:
- Gather information. The correct data must be collected, including the process being tested, the actions that must be taken for tests and a set of guidelines for selecting test data.
- Properly identify the target audience. This helps identify UAT users who know what to look for and how to provide useful feedback.
- Understand the project scope. Specific processes may not need to be tested, so data can be collected from only the processes needed.
- Design. Different testing steps can be assigned to different users. Test cases should also be detailed and specify procedures, expected results and conditions a tester may need to verify.
- Confirm business objectives. Once the testing is done and bugs are resolved, a sign-off confirmation should be in place to indicate that changes meet business requirements.
Learn how to streamline UAT with processes from Agile.