User Acceptance Testing (UAT) in Agile Practices

User acceptance testing (UAT) is the final phase of the software testing process and has always been considered a very critical phase. During UAT, actual software users test the software to make sure it can handle required tasks in real-world scenarios, as specified.
UAT is an important procedure in a software project and must be completed before the software is rolled out to the market. It is also known as beta testing, application testing or end user testing.

User Acceptance Testing (UAT) in Agile practices

UAT directly involves the intended users of the software. The steps in conducting UAT include:

  1. Planning
  2. A plan outlining all details of the UAT is drawn up.

  3. Designing test cases
  4. Test cases are designed so that they cover all the functional scenarios of the software in real-world usage. They are defined clearly for the convenience of the testers.

  5. Selection of testing team
  6. A testing team made up of real-world end users is created.

  7. Executing test cases and documenting
  8. The testing team executes the test cases, and possibly some additional tests. Bugs and comments are logged.

  9. Bug fixing
  10. The software development team resolves the reported bugs.

  11. Sign-off
  12. When the bugs have been fixed, the testing team indicates acceptance of the software application, which indicates that the application meets user requirements and is ready to be rolled out in the market.

How is this approach to UAT affected once the organization follows Agile practices? There is a way to achieve desired results by implementing UAT within the Agile framework. UAT now needs to be done in a Scrum environment, where an increment of working software is delivered every month or more often.

In the Agile environment, a Product Backlog is composed of user stories. User stories describe the user, the feature he/she wants to use and finally
the reason he/she needs it.

  • As a (user),
  • I want (a feature)
  • So I can (reason of need/business benefit)

This provides a valuable guideline for the UAT. The feature has been defined, and what kind of user the feature is for and how she or he will benefit. The acceptance criteria should become apparent during Backlog Refinement, which is done by the Product Owner and the Development Team. In this session they collaborate on the details of user stories, including acceptance criteria. Additional user acceptance testing criteria may also be defined, for particular features – functional or non-functional.

An increment is only considered to be done when it is a working – meaning fully tested – piece of software, fulfills the customer need, has the feature that the customer wanted and meets all the acceptance criteria.

In Agile teams, the Product Owner has the responsibility of maximizing the value of the product, and represents all stakeholders, including customers and users. The Product Owner is the other authorized entity mentioned in the definition of User Acceptance Testing. The Product Owner must work in close collaboration with stakeholders to understand their expectations and help the scrum team to understand.

The Product Owner collaborates closely with the Development Team to give feedback about the product. She will accept a user story to be done when it meets the definition of done.

During Sprint Review, feedback should also be collected from all stakeholders as input for the Product Backlog. This continuous feedback loop enables the Scrum team to deliver what the Product Owner and stakeholders want.

There can be challenges when a team works only on a small part of the bigger chain and doesn’t integrate with the other software components in the chain until the very end, for testing as a whole.

However, this late integration problem can be overcome by reorganizing the teams to become feature teams that are responsible for the entire chain that feature includes. Scrum teams working in the same chain can be brought together, with an agreement to integrate often, or even Continuous Integration.

With this approach, all checks defined in the formal definition of User Acceptance Test can be done within a sprint. A Scrum Master should ensure frequent integration. This way, there is no need for an official tollgate, which improves throughput, and reduces the time of the feedback loop. This saving of time makes the product of higher value to the customer, so the objective of UAT is achieved.