People who have worked on Agile projects before would have probably noticed or heard this: Agile projects require… agility! But again, agility can mean several things. Of course, it involves following an iterative process, responding to changes, improving time to market and many other important aspects.
However, what people often don’t realize when joining an Agile team is that their usual duties will change. Indeed, with waterfall, each activity is clearly identified and segregated: A business analyst will gather requirements from its customers. Then, he/she will transform them into specifications and forward the documents to the developers. The developers on their side will build the solution from the specifications and deliver them to the testers, who in turn will validate the deliverables with the involvement of users/customers.
In Agile development lifecycles, activities and roles are more mixed up. Particularly in Testing, everybody (more or less) has to test! The main reason is to meet the objective of time to market improvement. If you want to deliver new functionalities, right at the end of the iteration, you will have to shorten testing periods as much as possible. And, as customers won’t sacrifice quality, you’ll have to modify the way you test to ensure quality is monitored and controlled during the whole product lifecycle. This requires business analysts, developers and customers to participate in the testing of the deliverables. Nevertheless, they will execute tests at different levels and different times.
First, it is essential that developers run unit tests (manual and automated) of their developments. If not, the number of defects found later in the process will be too high to allow a quick release. A good set of integration tests is also necessary to allow frequent and reliable deliveries. Once new functionalities are deployed in a quality environment, smoke tests can be executed by the tester, either manually or by running scripts. Then, if the quality is satisfactory, the validation process can start:
- The business analysts will start verifying what they specified to be actually available
- The testers will perform advanced tests (functional, performance, limits, etc.)
- The customers will execute the acceptance tests to confirm that the deliverables are aligned with their requirements
This raises some challenges about defects/tests duplicates and detailed planning of who does what and when. These areas will be addressed in my next article.
However, it cannot be denied that, the “everybody tests” approach strongly improves the time to market without compromising quality. It can definitely help optimize your project while increasing agility benefits.