These high-level tests give programmers a big picture about what code they need to write for a given user story. As coding begins, testers can start writing detailed executable tests, starting with the "happy path." As the "happy path" begins to work, we can write more complex test cases, including edge cases and boundary conditions. Testers and programmers collaborate to automate these tests as they go. As problems are discovered, the code is fixed immediately. Once a test passes, it is put into the continuous integration process as part of the regression suite.
Once coding is complete, testers do exploratory testing to learn more about the functionality and discover whether requirements may have been missed or misunderstood. Missed requirements may turn into new user stories, or they may be bugs that need to be fixed right away. Testers and other team members conduct any other testing needed, such as performance, security or usability testing. They demo the functionality to customers as each increment is completed. No story is "done" until all testing activities are complete.
By collaborating with the customers and the programmers throughout the iteration, from story planning to demos, testers can help their team deliver business value at a regular, maintainable pace.
This was first published in November 2010