Table of Contents
As scrum methodology gains popularity for building software, some unique testing challenges emerge. But fear not! With the right fundamental knowledge, techniques and a little practice, you can crush quality in an agile environment. This comprehensive 3000+ word guide aims to equip you with everything needed to excel as a tester on a scrum team.
Getting Grounded in The Basics of Scrum
Before we dive specifically into testing, it‘s helpful to level-set on some scrum basics:
Scrum emphasizes fixed length sprints. Most teams use 2 or 4 week sprints to work in small batches. I‘d recommend starting with 3 week sprints as you get used to the pacing.
The methodology also defines clear team roles. Common ones like the Product Owner, Scrum Master and Delivery Team each have testing implications we‘ll discuss later.
Requirements are captured as user stories, short descriptions of functionality valuable to users used to prioritize work.
The scope of each sprint is flexible with the priorities across sprints fluctuating based on regular customer feedback.
According to the 2021 State of Agile Report, 86% of organizations now take an agile approach to projects so methods like scrum are becoming the norm.
Now that you have the fundamentals down, let‘s examine how testing fits into key scrum events:
Sprint Planning – Team collectively estimates & commits to user stories for the upcoming sprint
Daily Standups – Short daily sync on accomplishments, next tasks, and blockers
Sprint Review – Review completed stories and capture feedback with stakeholders
Retrospective – Reflect on what worked well in the processes and identify improvements
Next Sprint – Start the whole cycle again! Plan, inspect, adapt
If that seemed quick – it is! The pace is part of the value with small validate-learn cycles. Now let‘s move onto…
Roles and Testing Responsibilities
While the whole team shares quality ownership, some roles have key testing tasks:
As the Product Owner you’re responsible for:
- Clearly articulating user story acceptance criteria to evaluate functionality
- Prioritizing testing efforts on the highest business value features
- Preparing test data needed to exercise different scenarios
- Validating completed user stories with user acceptance testing
Pro Tip: Have POs and testers collaborate to define detailed story acceptance criteria upfront. This saves tons of defects down the line.
The Scrum Master role should:
- Coach teams on agile testing skills and practices
- Support test automation framework implementation
- Remove roadblocks for testers if defects are not being fixed fast enough
Finally, the Development Team handles tasks like:
- Unit testing using practices such as test-driven development
- Integration, system and UAT testing
- Creating and maintaining test automation suites
- Exploratory testing to find edge cases
Now that you know who does what – let’s get into tactical planning.
Planning Testing in Your Scrum Sprints
During sprint planning, you’ll collectively commit to delivering a set of user stories for the sprint. The first step is prioritizing based on value and risk:
Which features have the biggest business impact? Which are complex or prone to defects?
Then estimate the testing effort level needed to mitigate that risk. For example:
| User Story | Risk Level | Testing Effort |
|---|---|---|
| As a user I can update my profile | Low | 2 – Unit tests, UAT |
| As an admin I can suspend user accounts | High | 5 – All test types including security |
Do this exercise for each story, stacking ranked stories into the sprint based on capacity. By sprint end, you should have shippable code that meets your definition of done – code review passed, x% coverage, UAT approved, etc.
Having clear "done" criteria is key to setting quality expectations. Teams should revisit this every few sprints.
Testing Best Practices Within Sprints
Apply these tips to maximize quality with speed inside sprints:
Start testing immediately behind development. Don‘t wait for all code to be complete. Use regular build integrations to pull latest increments for earlier feedback.
Employ test-first methods like test driven development with unit testing happening in parallel to inform implementation.
Balance manual and automated testing to cover functionality and find edge cases. Grow test automation coverage slowly and steadily.
Report on test coverage and defects daily using burn down charts. Are you on track?
Get development support on test data needs to exercise different scenarios for new features.
Communicate testing status often in standups, demos and status reports to raise any roadblocks early.
These agile testing practices allow you to provide continuous validation rather than one big bang at the end!
Tracking Key Metrics
To gain visibility on progress and quality, track:
| Metric | Definition |
|---|---|
| Test Coverage % | # tests executed / total # tests planned |
| Automated Test % | # automated tests / total tests |
| Defect Resolution Velocity | # defects fixed per sprint |
These measures can be captured in a dashboard for the team like:
Review metrics in retrospectives to discuss progress and identify improvements needed.
Pro Tip: Automate reporting where possible so metrics stay up to date with no manual tracking needed!
Key Areas to Address for Continual Improvement
Leverage regular retrospectives to inspect and adapt processes. Discuss:
- What recent bugs could have been caught earlier?
- How can we optimize test planning and coverage?
- Where should we add more test automation?
- What exploratory testing holes did we find?
Also use retros to share testing wins and prioritize action items for improvement like:
- Expand end-to-end automation on customer critical journeys
- Provide developers with more skills training on unit testing frameworks
- Agree on conventions for documenting test cases
Building these reflective practices into your team’s rhythm is critical for maturing capabilities over time.
Watch Out for Common Scrum Testing Pitfalls
While scrum offers advantages, it can also create issues including:
Requirements gaps from moving too quick. Mitigate through detailed acceptance criteria, regular UAT demos and keeping PO engaged.
Communication breakdowns between test and development. Create opportunities for daily discussions on status and open defects.
Lack of documentation due to fast pace. Implement lightweight conventions leveraging automation suites as system of record.
Too much manual testing. Balance with test automation to allow for regression testing.
Unclear quality standards. Lock down “definition of done” with team input on things like coverage goals.
Discuss any pitfalls arising in retrospectives and have the team brainstorm solutions together.
Performing a quarterly audit of processes against agile testing best practices is another good way to spot gaps.
Closing Thoughts
With strong scrum testing fundamentals, an arsenal of techniques and an inspect-adapt mindset, you’re now equipped to excel in an agile test environment!
Key takeaways include:
- Collaborating closely across roles to define, build and validate quality user stories
- Using risk based test planning and metric tracking
- Automating regressively to enable continuous validation
- Making small improvements through regular retrospective discussions
Wishing you all the best on your agile testing journey ahead! Let me know if you have any other questions.