While Agile emphasizes an approach to software development that is more adaptive to changing requirements and enables more interaction between the development team and clients or stakeholders, it goes without saying that even software testing has to shape up along these Agile principles. Therefore, unlike Waterfall, where integration testing, functional testing and user acceptance testing (UAT) take place only when the deliverable service/product starts getting a demonstrable form, which typically could be as late as the last quarter of the entire project lifecycle, Agile proposes all aspects of testing (unit, functional, integration and user-acceptance) and the involvement of the customer at a very early stage in the project lifecycle.
But, have you ever been in a situation where you adopted Agile development methodology and your project schedule was slipping because the customer-representatives were not performing UAT or providing feedback fast enough? If yes, then the remainder of this passage might provide you with a probable solution.
Some critics might blame the schedule slippage because of delayed action from customer-representatives on lack of commitment to Agile on the part of involved stakeholders. Some might even say that it is lack of understanding of Agile methodology on the part of the project manager. But from my understanding such situations may arise because it’s not always possible for the customer to provide dedicated resources for testing and collaborating with the development team, and yet the client wants to go the Agile way. Often the client ends-up providing subject matter experts (SMEs) who have to take up the responsibilities of testing and providing feedback in addition to their day-to-day activities. To keep up with the true spirit of Agile, it will only be apt if the continuous user testing and feedback process can be adapted so that it doesn’t overload the customer representatives.
To illustrate the solution for such a problem let us consider a typical Agile scenario. Let us assume that the development team is working in 2-week iterations. So these 2 weeks (10 business days) will be packed with design, development, unit testing, integration testing and UAT. Let us say that last 2 of the 10 days are assigned to UAT. If the customer representatives fail to complete their testing and provide their input within these 2 days, the development team cannot have a complete plan for the next iteration. Thus the delay from the previous iteration has overflowed into the upcoming iteration. If this happens a few more times, it can snowball into unmanageable schedule slippage. And the project manager will soon have to start the juggling act of balancing the schedule, the scope, the resources, etc.
To counter this problem, we had devised the Develop n Test n-1 approach. While the development team is developing iteration n, the customer would be carrying out UAT on iteration n-1. Going back to our earlier example, our 2-week iterations would now only contain design, development, unit testing and integration testing. UAT is isolated and moved to the next iteration. Assume that the development team has just released the 1st iteration. When the development team commences work on iteration 2, the customer commences testing of iteration 1. When the development team is ready with the release of iteration 2, the UAT is complete on iteration 1. The results and feedback from testing of iteration 1 along with the originally time-boxed requirements for iteration 3 become the new requirements for iteration 3. As the development team commences work on iteration 3, the customer starts testing iteration 2. The progress can be depicted in a chart as shown below.

This approach has two significant advantages:
-
The customer gets the entire span of iteration for UAT.
-
The development team does not have to wait on customer feedback to start planning and development of the subsequent iteration.
Working within the constraints and overcoming limitations can be possible with such simple, yet innovative and adaptive changes in various phases of software development. After all, continuous improvement, adaptation, increased interaction with customer, and simplicity are some of the key principles of the Agile manifesto.
Iteration released for testing Testing result and feedback
Iteration 1 Iteration 2 Iteration 3 Iteration 4
Development Iteration released for testing
Client UAT Testing result and feedback
Obviously, Agile demands a lot of commitment from all involved stakeholders. A customer-representative, who has previously worked only with Waterfall, will especially notice the additional time that he/she has to put in throughout the project development. He/she has to be involved in UAT right from the first iterative release. During the projects that I managed for the past 5 years, I observed that almost always the customer is unwilling or unable to dedicate full-time resources to carry-out UAT and provide feedback to the development team, and yet they want to go the Agile way. Therefore, mostly customer-representatives have to fulfil multiple roles, and fit testing and feedback responsibility in their other day-to-day activities.