Agile is one of the most fast paced methodologies. The main reason is a lot of customers are moving towards agile is because of the faster delivery, continuous integration and more frequent deployments. The key is to get the end users feedback earlier and make course corrections as needed. The startup culture of releasing a minimum viable product is also an example of this.
Agile has proliferated with the advent of devops. The more continuous integration techniques are employed to ensure good execution the better the quality of results. Testing plays a huge part in ensuring agile is successful.
Here are the best practices to adopt as you lead agile teams in a global delivery model.
Involve QA in Elaboration sessions: The testing team needs to be in the game from the beginning. They need to take part in all elaboration sessions where requirements are being written and reviewed. Involving the testing team right at the beginning ensures the quality downstream is higher.
Communicate Risks early: Especially in agile it is so easy to get lost in the mayhem that sometimes we forget to communicate roadblocks which eventually leads to Monday night quarterbacking. We have to communicate risks on a daily basis and ensure all stakeholders are informed of any anomalies.
Agree on story points delivered upfront: There is a tendency to overestimate the number of story points that will be delivered in a particular sprint. There may even be a case where the development team can deliver the estimated story points. However when it comes to testing we eventually encounter blockers which take a long time to fix and hence the timeline gets slipped. It is better to be more conservative before a sprint begins and this is where the testing team has to set realistic expectations on what is possible.
Environment Sync: Usually there are different environments being used for different phases of the testing. Ensure the development team provides the release notes (ok not exactly notes but at least the user stories for the release) for every deployment, ensure they provide unit test results and if possible the defects found during unit testing. This is a critical step towards the success of the testing team in agile.
Test Driven Development: This works best in a fast paced environment. Basically have the testing team write test cases for the development team and have them execute the test cases, ensure it fails and then fix the code to ensure it passes. If test driven development is automated the more value the project derives. QA and Dev working together as a team is one of the advantages of this methodology.
Automation: With frequent code drops between sprints it is tougher for manual testing to spend hours on smoke tests. One of the advantages of automation is to ensure smoke tests are automated. Ensure regression test cases are automated as this will reduce the timelines for testing.
Manage teams focus: Team members need to understand the work they have to do any given day, as well as what the remainder of their work is. Have daily huddle meetings with the whole team ensure team is focused on the key activities. At each of these meetings ensure that everyone gets to speak about their work accomplishments and challenges.
Onsite-Offshore coordination: A high-performance team has the skills needed to complete the work on its plate. Onsite should handover the tasks completed onsite, including stories accepted and should clearly layout the activities offshore team should take care for each day. Similarly the offshore team has to ensure they hand over what they completed for a particular day.
Cross training between Sprint teams: This is achieved by cross training between teams across the different sprint teams. Each sprint team focuses only on the stories they are required to deliver. This means there is no holistic picture and hence it is imperative each team shares their stories with other teams. This also increases curiosity and keeps the job fresh.
Exploratory testing: This is the most creative way to get the most out of testers. My suggestion is have teams of 2 folks focus on particular areas of the application with high defects and do session based testing of 90 min each for those areas. This ensures more defects are found from an end user perspective.
Retrospective Sessions: Having a retrospective after every sprint is over is critical to ensure learning is communicated to everyone. This can only be developed through regular interaction and ensuring all concerns are addressed. Each team member should be encouraged to provide their ideas and learning. When all the teams are working in unison it fosters greater team unity and promotes trust. The ultimate throttle on a great team is the ability to look introspectively and ensure learning is implemented immediately.
As you can see each of the above tips are easy to implement but hard to follow all the time. The key is to entrench these tips and ensure they are firmly ingrained in your teams which enable you to manage the agile testing teams.
The views expressed here are my own and do not represent my organization.