Throughout my years as a software tester, I undertook many different roles during User Acceptance Testing cycles on both small and large projects and participated in defining the vision of how UAT will affect these projects.
UAT is typically considered to be the last phase of testing that a project undergoes prior to releasing software to production. UAT can be regarded as a collaboration between the project team and the end users, allowing the project team to view the software through the eyes of the end user. UAT is performed to validate that the project’s results include and address the end users’ business needs. The cost of UAT, the participants’ workloads, the relationship between the project and business community, and the impact to business, are all taken into consideration and usually dictate when or if a project will require a UAT phase. Based on past experiences, some changes to software may not require UAT participation at all.
Replacing Existing Software
The arrival of new software to replace existing software may cause stress and anxiety for the business community being impacted. Inclusion of UAT can increase the confidence of the end users in the product and assist them in understanding that the new software will continue to support them with their daily functions, in addition to providing new features that will improve their activities.
UAT participants may, through testing, find real-life workflow defects and provide suggestions for future enhancements to make the product more robust for the end user.
The project will benefit by gaining support from end users even before the transition to the new software. Additionally, UAT participants will give developers and testers insight about the integration between the software and the end users, allowing them to adapt and adjust the final product.
Enhancements of Existing Software
Conversely, depending on the complexity of the enhancement, UAT may not be necessary.
Enhancements that rework the performance and processing of crucial functions within software should go through a UAT phase. However, if it is a minor adjustment to an established software, it is likely that the software will not need to go through a structured UAT session, but rather a small group of end users can be tasked with the responsibility of validating and approving the development.
Improvements to Existing Software
Improvements such as button placements, label changes, and changes to screen layouts are usually released into production as per project release standards. This type of software release can be viewed as improving the end user experience rather than enhancing the functionality. While the decision to perform UAT for these types of improvements typically varies from project team to project team, it is not necessary to go through a UAT cycle to validate the changes.
Minor and Major Defects
Some projects deliver minor software releases to production which only contain fixes to low impact defects. In general, these releases are delivered to production without going through a UAT phase and the project team validates the fixes instead of a group of end users.
Other defects can be considered major flaws to the functionality of the product and the crucial solution will, more often than not, go through a UAT phase. This UAT cycle can often be accomplished with one or two representatives from the end user community and will not require a full UAT phase.
Conclusion
User Acceptance Testing can be a challenge, however, the information brought forward by the end users is valuable to a project team in order to determine how successful the product will be.
When end user participation is not feasible, UAT can be executed on various work sites and monitored by a UAT Lead. Adding end users to the System Integration Test Team can also be a means through which to obtain end user feedback when a full UAT cycle is not feasible.
Overall, UAT necessity will vary from project to project. As a result, it is important for project teams to review their requirements during the planning stages to determine if UAT is required. If it is, they can then design a cycle that will provide them with the correct feedback needed to build better software.