Is it possible to practice Scrum when the QA team is outsourced?
In my opinion, it might not be impossible, but it’s highly undesirable to outsource the QA team, no matter what methodology you’re using. Testing isn’t a separate activity; it’s just as essential to the software as the production code. As Elisabeth Hendrickson has said, testing isn’t a phase either. High quality software begins with tests. Using tests both to design the code and to guide development towards what the customer wants are essential to “baking in” quality. The term “QA” is laughable when applied to an outsourced group -- how can people who aren’t even part of the company have an influence on quality?
That said, if you’ve found yourself in this situation and don’t have control to change it, work hard on communication with the outsourced team. Bring people from that team to spend physical time with the development team, and/or send programmers out to spend time with the testers. Provide lots of training in the business domain, the software architecture and other aspects of the project to the test team. You may need extra roles such as functional analysts and project managers to assist with coordination and communication.
Include the testers in all meetings, including sprint planning and daily Scrums. If the test team is located in a drastically different time zone, this will require sacrifice. Team members will have to work odd schedules so that they can have at least some virtual face time together. It might be that only a few representatives of each team can meet together, but even this will help ensure the testing and coding stay in synch. Use video and audio to make communication as direct and complete as possible.
Use tools that encourage collaboration, such as wikis. Automated continuous integration is a must, and the test team must know what is in each build and which builds they need to test. Automated regression tests written in a framework that is useable by both the programmers and the testers are a must. Without them, feedback for regression failures will be too slow, dragging down the whole project.
Good practices such as focusing on finishing one user story at a time are even more important when the test team is not co-located with the development team. Letting testing lag behind development in a mini-waterfall fashion will lead to disaster. Keep testing and coding hand-in-hand, even though this coordination will be difficult to manage in multiple locations. It’s worth the investment to be able to release production-ready code every sprint, while keeping a sustainable pace for everyone.
Lots of extra discipline and effort will be required to achieve even moderate success when testing is outsourced. All the values, principles and practices that make a co-located Scrum team successful will have to be boosted to an even higher level.
This was first published in January 2011