We’ve reached the half-way point in my top ten list of the core responsibilities for product owners in an Agile software development environment. We started with talking about the importance of strong communication between the product owner and the product manager. In an organization where these roles are played by two different people, tight teamwork is crucial between the product owner and manager, and so regular connections about the market, the development process, and the needs of clients is fundamental. Second, I discussed the development of user stories as a key task for strong product owners, because the Agile process builds better upon stories than it does on specifications documents. Third, I wrote about tending the backlog; the product owner carries the primary responsibility for adding items to the list of fixes and features to work on, prioritizing this list, and weeding out items that are no longer important. Finally, in my last post, I wrote about the product owner (rather than a set of requirements documents) as the main supplier of subject matter expertise for the development team. Now I want to talk about working with the testers on the development team. Strong product owners work closely with QA developers to make sure that features function as expected.
Product owners begin working closely with the testing team when features are being defined. Early conversations with the testing team help them plan for the testing needs in the current sprint, making sure that they understand the expected results of new features so that their testing focuses on the main ways that users will employ the product. These early conversations can also impact the design and development choices made by coders, because some approaches lend themselves more easily to thorough and early-stage testing than others do. As I have said before, the Agile methodology emphasizes collaboration and teamwork, and so bringing testers in on early conversations as feature expectations are developed and user stories are elaborated helps to ensure that the entire development team starts on the same page. These early conversations between the product owner and the testers make sure that everyone knows how the product or feature is supposed to work (similar to this obscure reference: http://www.youtube.com/watch?v=Y8ak1oV_94c).
In the midst of the development process, product owners and testers spend time looking together at specific functionality. This can happen through scheduled feature overviews and user acceptance testing sessions (UATs) and with impromptu meetings at the desk of the tester as she is reviewing functionality during the sprint. The Agile sprint process involves daily testing of code iterations (as opposed to the ‘test at the end’ approach of traditional waterfall methodologies) and so just as the coder and tester will interact frequently during the day so the product owner and tester will likely have many short interactions during a sprint along with at least a couple of more formal UATs. These sessions ensure both that the functionality is developed correctly and that the product owner has a clear grasp of exactly what features and fixes will be deployed each sprint – something crucial for keeping the product manager up to do on the development timeline.
Throughout the larger software development process, strong product owners encourage the testing team to build out expanded testing automation coverage. While manual testing of specific features can catch some issues with software during the development process, complex products that interrelate with other applications are more reliably tested through the use of automated testing regression suites. Building out automated tests might not seem like the most urgent task in the context of a short sprint cycle, but as a product owner it gives me great comfort knowing that as we develop new features we are running tests every night to confirm both that these features work as expected and that they do not cause any unintended problems to other pieces of our interrelated software products. I talk regularly with our lead tester about how successfully our automated tests run each night, what areas of functionality should get new tests added, and what specific tests will be developed as part of each sprint. the more aspects of a product that are tested systematically with automated tested each night, the more confidence I can have as a product owner that our customers will have a smooth and stable application to use in their daily business.
As always, the Agile methodology functions best in an atmosphere of true partnership among all the members of the development team. Collaboration between the product owner and the testing team produces the best quality assurance possible, with good test coverage of the key aspects of the product and timely feedback throughout the development cycle. Closer teamwork leads to better and more stable products. Of course I recognize that in truth it’s not that simple.
Nice QA write-up, Stephen. Your point about the automated testing is right-on! As the product gets more and more complex, the automated tests become a critical safety net to prevent new functionality from breaking old! Your other points are right-on too.
Tom – Thanks for your comments, and thanks for reading the blog.