First up today: Elisabeth Hendrickson discussing how in the world testing can survive in an Agile world. After all, Test traditionally uses all that time it takes Dev to give us something useful to write and review test plans, test specs, and test cases. Then, once we finally get our hands on the app, we feverishly run through all this as fast as we can in hopes of getting through all the really important test cases and finding most of the really nasty bugs before management decides the app is good enough to ship.
A tester on an agile team doesn't have time for all this. Dev is passing code off to Test on a daily if not hourly basis. What's more, testing can seem unnecessary when your developers are using test-driven development and routinely writing very comprehensive unit tests that come very close to 100% code coverage on even the hard-to-hit error handling code. What's a tester to do?
If your entire organization is willing to embrace agility and be responsible for quality, then you're in position to agilify your testing. Elisabeth summarizes this as transforming testing from being the last bulwark of defense protecting the user from those darned developers to supporting your team in producing a great product.
Elisabeth's session really spoke to me because while my team isn't officially agile we are trying to make exactly that change. While I was happy to find that we are already doing some of the things she suggested, I also came away with many great ideas. Highlights:
- Design for maintainability. A lot of the work developers do is aimed towards making their code maintainable; testers should do the same. Don't Repeat Yourself. Use generic checklists (I call these Did I Remember To Lists) rather than cut-and-pasting these into each and every test case.
- Keep your test documentation as simple as possible. Consider whether you really need three pages of detailed test steps describing every last detail or whether summarizing the actions to take would be sufficient.
- Make testing part of daily life, not a separate phase that only certain people do.
- Remember that it's a team, not just developers and testers sitting next to each other. Get them talking with each other and collaborating on everything from brainstorming test cases to writing test infrastructure.
- Focus on providing value to key stakeholders
- Shift from being the last line of defense to providing an information service
- Aggressively reduce time and resources spent on anything that does not directly contribute to providing information
- Collaborate with programmers to improve testability and leverage test automation efforts
your testing will be more agile.
Hmmmm...these sound like good ideas even if your team isn't agile!
*** Comments, questions, feedback? Want a fun job on a great team? I need a tester! Send two coding samples and an explanation of why you chose them, and of course your resume, to me at michhu at microsoft dot com. Great coding skills required.