Testing in Agile¶
In agile delivery there is no testing phase, because there is no phase at the end to put it in. Testing happens inside every iteration, on work that is incomplete, by the whole team.
graph LR
REF[Refinement: examples and criteria] --> DEV[Development with tests]
DEV --> AUTO[Automated checks in the pipeline]
AUTO --> EXP[Exploratory session on the built story]
EXP --> DONE[Definition of done]
DONE --> REV[Review and feedback]
REV --> REF
What changes compared with phase-based testing¶
| Phase-based | Agile | |
|---|---|---|
| When | After construction | Continuously, per story |
| Who | A separate team | The whole team |
| Planning artefact | A test plan document | Definition of done plus acceptance criteria |
| Regression | A manual pass before release | Automated, on every commit |
| Entry criteria | Formal handover | The story is ready |
| Exit criteria | Sign-off | Done means done, every time |
The agile testing quadrants¶
Brian Marick's model, still the clearest way to check nothing is being ignored.
graph TD
Q1["Q1: technology facing, supports the team<br/>unit and component tests, automated"]
Q2["Q2: business facing, supports the team<br/>examples, story tests, prototypes"]
Q3["Q3: business facing, critiques the product<br/>exploratory, usability, acceptance"]
Q4["Q4: technology facing, critiques the product<br/>performance, security, reliability"]
| Quadrant | Automation | Common failure |
|---|---|---|
| Q1 | Fully automated | Rarely neglected |
| Q2 | Mostly automated | Skipped when stories go to development without examples |
| Q3 | Manual by nature | Squeezed out by sprint pressure, which is where surprises come from |
| Q4 | Tooling assisted | Deferred until a production incident forces it |
A team doing only Q1 and Q2 ships software that passes its own expectations and fails on the ones nobody had.
Testers in an agile team¶
The role moves upstream rather than disappearing.
- Refinement. Asking "how would we know this works" before estimation, which changes the story rather than the release.
- Examples. Contributing the edge cases in the three amigos conversation.
- Exploratory testing. The work automation cannot do, on each new story.
- Test architecture. Deciding what belongs at which level and keeping the pyramid upright.
- Coaching. Helping developers test better, which scales further than testing personally.
Practices that keep it working¶
| Practice | Purpose |
|---|---|
| Definition of done includes tests | Prevents a growing tail of untested "finished" work |
| No separate testing sprint | A hardening sprint is a phase gate rediscovered |
| Slice stories thin | Small stories are testable within the iteration |
| Test in-iteration, not next iteration | Testing a sprint behind recreates the handoff |
| Automate regression continuously | Otherwise manual regression grows until it consumes the iteration |
| Fix red immediately | A broken build blocks the whole team by design |
The classic anti-pattern is testing running one iteration behind development. It looks like agile and behaves exactly like a phase gate, with the added cost that developers have moved on by the time defects arrive.
Check Your Understanding¶
A team develops in one sprint and tests that work in the next. What is the problem?
Which testing quadrant is most often squeezed out by sprint pressure, and why does it matter?