QA Integration Best Practices | Shift-Left Testing Workflow
Integrate QA throughout sprints with shift-left testing, bug tracking workflows, and quality metrics. GitScrum embeds testing in story lifecycle for fewer bugs.
8 min read
Quality isn't a phase - it's embedded in every step. GitScrum helps teams integrate QA throughout the development lifecycle with testing workflows, bug tracking, and quality metrics that catch issues early.
QA in Agile
Shift-Left Testing
SHIFT-LEFT TESTING APPROACH:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TRADITIONAL (Right-heavy): β
β β
β [Requirements]β[Design]β[Development]β[Testing]β[Release] β
β β² β
β β β
β All testing β
β happens here β
β (expensive bugs) β
β β
β SHIFT-LEFT (Continuous): β
β β
β [Requirements]β[Design]β[Development]β[Testing]β[Release] β
β β² β² β² β² β
β β β β β β
β Review Review Testing Final β
β & test designs during validation β
β criteria early dev β
β β
β BENEFITS: β
β β’ Bugs found earlier = cheaper to fix β
β β’ Quality built in, not tested in β
β β’ Faster release cycles β
β β’ Less rework β
β β
β COST OF BUG BY PHASE: β
β Requirements: $1 β
β Design: $5 β
β Development: $10 β
β Testing: $20 β
β Production: $100+ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
QA Role in Sprint
QA THROUGHOUT THE SPRINT:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β SPRINT PLANNING: β
β β’ QA reviews upcoming stories β
β β’ Clarify acceptance criteria β
β β’ Identify testing complexity β
β β’ Estimate testing effort β
β β’ Flag potential risks β
β β
β EARLY SPRINT: β
β β’ Write test cases for sprint items β
β β’ Review designs for testability β
β β’ Set up test data/environments β
β β’ Automation planning β
β β
β MID SPRINT: β
β β’ Test features as they complete β
β β’ Report bugs immediately β
β β’ Verify bug fixes β
β β’ Exploratory testing β
β β’ Update test cases as needed β
β β
β LATE SPRINT: β
β β’ Regression testing β
β β’ Integration testing β
β β’ Performance spot checks β
β β’ Sign-off on completed items β
β β
β SPRINT END: β
β β’ Release validation β
β β’ Demo participation β
β β’ Retro input on quality β
β β
β KEY: No "testing phase" - testing is continuous β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Workflow Integration
Story Lifecycle
QA IN STORY WORKFLOW:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β BACKLOG β DEV β CODE REVIEW β QA β DONE β
β β
β BACKLOG: β
β β Acceptance criteria defined β
β β QA reviewed and agreed β
β β Test approach identified β
β β
β IN DEVELOPMENT: β
β β Developer runs unit tests β
β β Basic happy path verified β
β β PR includes test coverage β
β β
β CODE REVIEW: β
β β Tests reviewed with code β
β β Coverage requirements met β
β β All checks passing β
β β
β QA TESTING: β
β β Acceptance criteria verified β
β β Edge cases tested β
β β Regression checked β
β β Cross-browser if applicable β
β β QA approval given β
β β
β DONE: β
β β All criteria met β
β β No open bugs β
β β Documentation updated β
β β Ready for release β
β β
β BLOCKED PATH: β
β If QA finds issues β Back to Development β
β Must be fixed before Done β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Bug Workflow
BUG TRACKING WORKFLOW:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β BUG FOUND β TRIAGE β DEV β VERIFY β CLOSED β
β β
β BUG REPORT FORMAT: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β TITLE: [Area] Clear description of issue ββ
β β ββ
β β SEVERITY: Critical/High/Medium/Low ββ
β β ENVIRONMENT: Production/Staging/Dev ββ
β β BROWSER/DEVICE: Chrome 120, macOS ββ
β β ββ
β β STEPS TO REPRODUCE: ββ
β β 1. Go to checkout page ββ
β β 2. Add item to cart ββ
β β 3. Click "Apply coupon" ββ
β β ββ
β β EXPECTED: Discount applied to total ββ
β β ACTUAL: Error message "Invalid coupon" ββ
β β ββ
β β SCREENSHOT: [attached] ββ
β β CONSOLE ERRORS: [attached] ββ
β β RELATED STORY: #123 ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β SEVERITY DEFINITIONS: β
β Critical: System down, data loss, security issue β
β High: Major feature broken, no workaround β
β Medium: Feature impaired, workaround exists β
β Low: Minor issue, cosmetic, edge case β
β β
β SLA BY SEVERITY: β
β Critical: Fix immediately, same day β
β High: Fix within sprint β
β Medium: Fix within 2 sprints β
β Low: Backlog, fix when convenient β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Testing Practices
Test Types
TEST PYRAMID:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β /\ β
β / \ β
β / E2E \ Slow, expensive, few β
β /ββββββ\ β
β / \ β
β / Integration\ Medium speed, more β
β /ββββββββββββββ\ β
β / \ β
β / Unit Tests \ Fast, cheap, many β
β /ββββββββββββββββββββ\ β
β β
β UNIT TESTS (70-80%): β
β β’ Fast to run β
β β’ Test individual components β
β β’ Written by developers β
β β’ Run on every commit β
β β
β INTEGRATION TESTS (15-20%): β
β β’ Test component interactions β
β β’ API testing β
β β’ Database integration β
β β’ Run on PR/merge β
β β
β E2E TESTS (5-10%): β
β β’ Test complete user flows β
β β’ Browser/UI testing β
β β’ Slow, run less frequently β
β β’ Critical paths only β
β β
β PLUS: β
β β’ Exploratory testing (manual, QA-driven) β
β β’ Performance testing (periodic) β
β β’ Security testing (periodic) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Acceptance Testing
ACCEPTANCE CRITERIA TESTING:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β STORY: User can apply discount coupon β
β β
β ACCEPTANCE CRITERIA: β
β β
β AC1: Valid coupon reduces total β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β GIVEN I have items in cart totaling $100 ββ
β β WHEN I enter valid coupon "SAVE20" ββ
β β THEN total shows $80 ββ
β β AND "20% discount applied" message displays ββ
β β ββ
β β TEST RESULT: β
PASS ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β AC2: Invalid coupon shows error β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β GIVEN I am on checkout ββ
β β WHEN I enter invalid coupon "EXPIRED" ββ
β β THEN error "Coupon not valid" displays ββ
β β AND total remains unchanged ββ
β β ββ
β β TEST RESULT: β
PASS ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β AC3: One coupon per order β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β GIVEN coupon already applied ββ
β β WHEN I try to add another coupon ββ
β β THEN "Only one coupon per order" displays ββ
β β ββ
β β TEST RESULT: β FAIL ββ
β β BUG: Second coupon replaces first without message ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β STORY STATUS: Blocked - Bug found in AC3 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Quality Metrics
Tracking Quality
QUALITY METRICS DASHBOARD:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Sprint 24 Quality Report β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β BUG METRICS: β
β βββ Bugs found in sprint: 12 β
β βββ Bugs fixed in sprint: 15 β
β βββ Bug escape rate: 2 (reached production) β
β βββ Critical bugs: 0 β
β
β β
β BUG TREND: β
β Bugsβ β
β 20β β β
β 15β β β β
β 10β β β β β β
β 5β β β β β β β β
β 0ββββββββββββββββββ β
β S19 S20 S21 S22 S23 S24 β
β β
β TEST COVERAGE: β
β βββ Unit test coverage: 78% (+3%) β
β βββ Integration tests: 45 passing β
β βββ E2E tests: 12 passing, 1 flaky β
β βββ New code coverage: 85% β
β β
β CYCLE TIME: β
β βββ Avg time from Ready to QA: 2.5 days β
β βββ Avg time in QA: 0.8 days β
β βββ Avg bug fix time: 4 hours β
β β
β RECOMMENDATIONS: β
β β’ Investigate flaky E2E test β
β β’ Unit coverage below 80% target β
β β’ Bug escape rate improved from last sprint β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ