As a Project Manager within a consulting organization developing custom software solutions for clients, I have found that successful User Acceptance Testing (UAT) is largely dependent on how closely we work together with client resources to plan, develop and execute UAT - combining the client's knowledge of business processes and typical day-to-day interactions with our experience and knowledge of best practices related to testing and general project management. Conversely, I have seen UAT go "off the rails" when it is treated as a line item in a project plan for which the Client is assumed to be both Responsible and Accountable for completing.
There is some validity to the approach of having only Client resources develop and execute UAT scripts as it can help ensure that UAT is focused on evaluating and testing the boundaries of Business rather than Technical scenarios (something that should be done in Unit and Integration testing prior to UAT) and can also lead to serendipitous discovery of issues that the technical team might not have considered possible. However, development and execution of UAT test plans and cases is typically not the primary job function of the individuals tasked to do so. They are also usually working on UAT "off the side of their desks" as they continue to do their full time jobs. Consequently the results of this approach are usually a blend of incomplete test scenarios, missed deadlines for test development and execution, defects and missed requirements identified after go-live, and a generally stressed out Client and Consultant team.
As Project Managers functioning as true "Servant Leaders" in partnership with our clients, it is our job to ensure the success of the project as a whole, not just that our team completes the tasks we are responsible for. I have found the best way to do this is to treat Client resources who are Responsible for UAT as if they were our own, and consider myself Accountable for the successful execution. This means making sure the Client resources have the system knowledge, bandwidth and time required to successfully complete their tasks. More often than not, it is a safe assumption that they will have none of these things, and that we should be prepared to provide the resources and assistance required to make the project a success.
We also need to make sure that the time and resources we provide are included in proposals and project plans and that they are not treated as un-budgeted afterthoughts to the scope of project deliverables. The specific resources and assistance required will vary based upon the complexity and scope of the project as well as the experience and bandwidth of client resources, but the general tasks and responsibilities that should be considered are as follows:
- Consultant Business Analysts work with Client Business Owners / Users to identify and document both Standard and Exception Business Process flows.
- Consultant Business Analysts work with Client Business Owners / Users to identify Test Data associated with Standard and Exception Business Process flows.
- Consultant Business Analysts develop Test Cases with identified Test Data to evaluate whether the system will effectively support the identified Standard and Exception Business Process flows.
- Client Business Owners Approve the Test Cases.
- Consultant Business Analysts work with Development Team to create Test Data in a Test Environment and ensure Client Business Users have access to execute Test Cases.
- Consultant Project Managers work with Client Business Owners to determine the Schedule and Client Business Users who will be Responsible for Test execution.
- Consultant Project Managers work with Client Business Owners to ensure that Client Business Users execute Test Cases within the time allotted and work with the Development Team to resolve any blocking issues.
- Client Business Owners Approve the completion of UAT Testing.
Following the model above, the Client is still Responsible for the execution of UAT and final acceptance of the system, but they are given adequate time, resources and best practice guidance to do so (typically the reason a client brings in a consulting form in the first place) to ensure that they are confident in the quality of the system we are providing and its ability to meet their needs (for which we are ultimately Accountable).