What's an agile tester?
How does a developer on an agile project help testers on the same project who are new to agile understand their role? More importantly what is the role of the tester on an agile project?
How do we know we have a problem
We started by exploring what indicates that a tester (or perhaps anyone) is having trouble on an agile project.
- Not speaking in the daily standup
- Not participating in the team
- Not paying attention to what is going on in the project
What should testers do in an agile project
Next we transitioned to what do we want them to do? One person volunteered that he wants the testers to help him solve the problem of failing user acceptance tests very quickly after launch. Specifically he wants:
- Testers to be part of analysis including task decomposition
- Enable developers to think like testers
- Find the problems with UAT
Based on this feedbacke we began to drill into what testers do in the project? Do they get involved early and try to figure out what to do with each story? We came up with several concrete suggestions based on this line of questioning:
- Use FitNesse for defining the acceptance tests and for documentation of what the product is meant to do and what it does (once it has shipped).
- Write a high-level UAT as a team before the iteration starts
- Start with the happy path automation in FitNesse and wait for that to turn green befor starting more complex testing
- Use automation to set up exploratory testing (e.g. set up an account and subscribers to enable exploration of particular features of the account).
- Add inidcators to the product code (e.g. red border around controls) to indicate that it should not be tested.
- Write the FitNesse tests first so that developers know what needs to be done before the story is complete.
- Use a tool such as Test Explorer to document the exploratory tests as they are being done.
- Use exploratory testing to collapse planning, design and execution into a single step.
Automated and exploratory testing clearly has value, but each present some challenges including:
- Exploratory is seen as ad hoc testing without active exploration and thought of threat to the product. For this reason it may not be seen as high value. (Skilled exploratory testers can help dispel this perception.)
- Automation can't find new bugs, it only serves to validate that what we think is working is still working.
- FitNesse tests can be hard to create since testers may not have the skills to wire up the fixtures and developers see it as a tax.
- Unit tests are not good functional automation since the unit tests show that the code works the way that the developer expects it to not necessarily the way the customer expects it to.
Definition and Role of Testing
A definition, from Cem Kaner, of testing is: Software testing is  cognitively complex,  requires critical thinking,  requires effective communication, and  requires rapid self-directed learning.
We identified a few pitfalls that testers should avoid:
- Testers can not assume the role of gate keepers or quality assurers on the project. Instead their role is to examine and inform of risks
- Definining the role of QA/Testers as finding bugs promotes an us v. them attitude
- QA will fail in organizations that say they are agile, but do not manage/fully support agile principles.
Agile testers are people who are passionate about doing their job better and continuously learning. They must be adaptive, fast learners, and good thinkers.