Skip to content
All posts
March 10, 20265 min read

Testing in Agile Sprints: How to Stop Testing Being the Bottleneck

In most teams, testing is the last step before release and always the bottleneck when time is short. It doesn't have to be. Here's how to integrate testing throughout the sprint so it never becomes the blocker.

TestingEngineering
Share:

Testing is a bottleneck because it's treated as a separate phase that happens after development. Developers code for two weeks, hand off to QA on the last two days, QA finds issues, development reopens, time runs out, release is rushed or delayed.

This is the waterfall cycle hiding inside an agile sprint. Here's how to break it.


The Root Cause: Sequential Handoffs

The traditional sprint flow:

code
Plan → Design → Develop → QA → Release
                                ↑
                           Everything piles up here

The better flow:

code
Plan (with criteria)
  ↓
Design (QA reviews requirements)
  ↓
Develop + Test (concurrent, feature by feature)
  ↓
Release (low risk — already tested throughout)

The difference is continuous testing, not batch testing at the end.


Step 1: Write Acceptance Criteria in Sprint Planning

Every user story should have testable acceptance criteria before the sprint starts. Not during development. Not in QA.

If the team can't write clear acceptance criteria during planning, the story isn't ready. This isn't a QA problem — it's a clarity problem that QA can help solve.

QA's role in sprint planning:

  • Flag stories that lack testable criteria
  • Ask "what does done look like?" for each story
  • Identify dependencies and integration risks
  • Estimate testing complexity (so it's in the sprint capacity, not an afterthought)

Step 2: "Three Amigos" Before Development Starts

The three amigos is a short meeting (30-60 min) with the developer, QA engineer, and product owner before a feature is coded:

  • Product explains what the feature should do
  • QA asks "what if X happens?" edge case questions
  • Dev raises technical constraints and questions

This is where ambiguity is resolved cheaply. An ambiguity resolved in a 30-minute meeting costs less than an ambiguity discovered in QA after two days of development.

[!TIP] You don't need a formal meeting for the three amigos. A 10-minute async Slack thread with the three questions — "what's the happy path?", "what are the edge cases?", "what are the technical constraints?" — achieves the same goal.


Step 3: Test as Stories Are Completed

Don't wait for all stories to be complete before testing begins. Test each story as it's "done" by development.

Define "done" clearly:

  • Unit tests pass
  • Feature works in development environment
  • Code reviewed and merged

When a story meets "done," QA starts testing immediately — not at the end of the sprint.

Practical setup:

  • Development branch: feature in progress
  • QA environment: auto-deploys from
    code
    develop
    branch
  • QA tests stories as they land on develop

Step 4: Bug Turnaround Same Day

When QA finds a bug on Tuesday, it should be fixed and re-tested Tuesday or Wednesday — not Friday.

This requires:

  • Developers not being fully booked with new stories while old ones are in QA
  • A process for prioritizing bug fixes over new feature work
  • A defined SLA: critical bugs fixed within hours, major bugs within 1 day

When bugs are fixed in the same sprint they're found, the sprint doesn't derail.


Step 5: Don't Allow "QA Debt"

QA debt is stories that are technically "developed" but not tested, carried forward into the next sprint for testing. This is how testing becomes a permanent backlog.

The rule: stories don't get sprint velocity credit until they're tested and accepted.

If a story isn't tested by end of sprint, it either:

  • Gets carried over as incomplete (not done)
  • Gets reduced in scope so it can be tested in the sprint

This puts pressure on realistic sprint planning — not on QA to skip testing.


Estimating Testing Time

Testing is work. It should be in the estimate. For each story, estimate:

  • Happy path testing: usually 20-30% of development time
  • Edge case and negative path testing: add 50-100% for complex business logic
  • Integration testing with other stories: variable

A story estimated at 3 story points that takes 2 days to develop should have 0.5-1 day of testing in the estimate. If it doesn't, testing is invisible in planning and becomes a "surprise" at the end.


Sprint Retrospective: QA Metrics

Every retrospective should include:

  • Bugs found in QA vs bugs found in production
  • How late in the sprint testing started
  • Which stories required multiple QA cycles
  • Were acceptance criteria clear enough to test against?

If bugs are consistently found in production that should have been found in QA, the sprint process needs adjustment — earlier testing, better criteria, or more QA capacity.


The Embedded QA Model

The most effective model: one QA engineer per feature team, embedded — not in a separate QA pool shared across teams.

An embedded QA:

  • Attends sprint planning and three amigos
  • Reviews PRs for testability
  • Tests features as they're completed, not at the end
  • Writes automation for stable features during the sprint
  • Has context about the sprint goals, not just ticket descriptions

If you don't have a dedicated QA engineer, the developer owns testing. The same principles apply — write tests first, verify against criteria, don't defer testing to the end.


Takeaways

  • Testing at the end of the sprint is waterfall in disguise — integrate it throughout
  • Acceptance criteria written during planning make QA possible (not post-hoc rationalization)
  • Three amigos sessions resolve ambiguity before it becomes expensive
  • QA debt (untested stories) is real debt — don't allow it
  • Testing time belongs in the estimate — if it's not visible, it's being cut
Share:
S

Sudarshan Chaudhari

AI Systems Builder / Product Engineer

Bangkok, Thailand

Solo Android developer with 13+ years in QA, building Android apps, AI automation systems, and developer tools at SudarshanTechLabs.

Stay updated

Get new posts on Android, Kotlin, and solo dev straight to your inbox.

Newsletter preferences

Building something? Available for Android dev and QA consulting.

Work with me

Comments — powered by Giscus