This article provides guidance to application delivery teams regarding the planning and execution of User Acceptance Testing, commonly known as UAT. Although UAT is typically carried out by customer resources, it is important that all team members understand the role of UAT in ensuring a successful implementation. This document should be used by Appian project leads to provide guidance to the customer — preferably during Sprint 0 — about the value and importance of UAT. This will help ensure that UAT is given sufficient attention during the execution of the project.
UAT is a distinct test activity from the testing of individual stories, which is carried out to verify that the acceptance criteria defined in a story have been met. UAT has a broader perspective of end-to-end business scenarios, which will normally be supported by the features provided in a group of related stories rather than in a single story.
For example, an application in the financial services domain may involve an enquiry from a customer, resulting in a proposal to provide a product, which on acceptance by the customer leads to the opening of an account. Numerous user stories would have been created in a product backlog for this scenario, but UAT is concerned with the overall process flow: does the application appropriately handle all expected (and unexpected) scenarios, does it allow the required outcome to be achieved, does it provide a good user experience for both the customer and application users?
UAT validates that an application is fit for purpose, and not just ‘fit for specification’. To be effective, UAT should be carried out by a representative cross-section of the actual users of the application, not by specialized test resources or by business analysts, to ensure that a real-world perspective is brought to the testing activity.
With the above definition of UAT in mind, it can be seen that UAT brings a number of benefits:
In the old word of waterfall projects, UAT was usually seen as the last phase of the project before an application goes live. This is clearly not aligned with Agile principles. If UAT uncovers new requirements (which is quite possible) only towards the end of the project, there is little room to re-prioritize the product backlog to take account of these requirements.
UAT should therefore be carried out on an ongoing basis, starting as soon as possible after the start of a project, i.e. when enough features have been developed (i.e. are ‘Done’, including completion of story-based testing) to support an end-to-end business scenario.
To prepare for this ongoing test effort, the Product Owner should appoint a regular team of end users that spend a part of their day job testing new features, both on an ad-hoc basis on completion of each sprint and as a more intensive activity when a discrete UAT phase is included in the project schedule. This same UAT team should participate in all sprint showcases so that they are aware of the new features being delivered and can formulate appropriate test scenarios.
Typically, there is a testing environment shared by dedicated testers on the development team (story-based testing), and by end users conducting UAT. Since the recommendation is that both types of testing take place in parallel over the duration of a project, in a shared environment it is important to define the rules of engagement so that testers do not corrupt each other's tests. This requires ‘logical separation’ of test data, e.g. by agreeing on naming conventions for data that will be used by the two different teams, so that data that is prepared by one team to support a specific test case is not inadvertently consumed and rendered unusable by the other team.
A separate UAT environment is worth considering, particularly for ongoing development programs where multiple applications will be developed over a period of years rather than months. This allows UAT testers to have full control over their test data, and also ensures that they will only be testing application features that have purposely been deployed to this environment, once all story-based testing is completed.
UAT Roles
Role
Responsibility
Product Owner
Provides oversight of the UAT activity, communicates the product vision and minimum viable product (MVP) to the UAT team, reviews and prioritizes defects raised during UAT, determines whether the outcome of UAT means that the application should proceed to go live, or whether more features need to be added.
Test Manager
Defines and communicates to the UAT team the test process and tools that will be used, ensures that a full-coverage test case suite is defined of the application features, manages the test team, tracks the progress of test execution and defect resolution.
Tester
Executes test cases, documents their outcome, and provides feedback on application usability.
Test Case Writer
Develops test cases by consolidating acceptance criteria from multiple stories into coherent end-to-end process scenarios. Prepares test data to support the design of each test case.
In a small-scale project these roles may be compressed, for example the Product Owner may also be the Test Manager, the business analyst who supports story grooming and definition of acceptance criteria may also be the Test Case Writer. It is critical however that Testers come from outside the project team, to lend a different perspective, and that they are representative of all the personas that will use the system.
How to Prepare For and Execute UAT
Risk
Mitigation
Users will try to test that the application supports current ways of working.t
The Product Owner must communicate the product vision and explain what the target state looks like. Users identified for participation in UAT should be aligned with (or neutral to) the product vision. Don’t let UAT be dominated by change-resistant users.
UAT uncovers new requirements that put go-live at risk if the application is not considered production-ready.
Following Agile development methodology should have minimized this risk, with a business-empowered Product Owner who has identified and prioritized the features required for MVP. The Product Owner must remain engaged throughout UAT to ensure new requirements are given appropriate priority, and to negotiate with users to exclude certain features from the MVP.
UAT is considered an afterthought and not actively addressed until late in the project schedule.
Follow the guidance in this document!
Customer does not have sufficient resources to dedicate to UAT activity.
Project manager should track this risk and continue to encourage and educate the client on the benefits of performing UAT early and often.
User Acceptance Testing is an important part of any successful Appian project. Hopefully, you find that the recommendations in this guide provide a foundation from which to construct a UAT plan that works best for your project's context and circumstances. Regardless of how your UAT is designed and implemented, be sure to continually incorporate it throughout the project lifecycle to help minimize missed requirements, validate and reshape the product roadmap, and ultimately ensure that end users will derive value from using the application your team has worked so hard to build!