← Back to list

The Evolution of Testing Methodologies

The Three Eras of Software Testing:

Mahmudul Hasan · 2026-03-10 03:01 · 0 claps · 9.6 min read
#testing-methodologies #software-testing #sqa #devops #testing
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud

The Evolution of Testing Methodologies

From Waterfall to Agile to DevOps Testing

From Waterfall to Agile to DevOps Testing

The Three Eras of Software Testing:

🏛️ Waterfall Era (1970s-1990s)

  • Testing = Final phase
  • Documentation-heavy
  • Separate QA team
  • Defects found late
  • Long feedback loops (months)

🔄 Agile Era (2001–2010s)

  • Testing = Every iteration
  • Lightweight documentation
  • Embedded testers
  • Defects found early
  • Short feedback loops (weeks)

🚀 DevOps Era (2010s-Present)

  • Testing = Continuous
  • Living documentation
  • T-shaped engineers
  • Defects prevented
  • Immediate feedback (minutes)

Comparison

Comparison

Why Testing Methodologies Evolved

Software development didn’t change for fun — it changed because the world changed:

The 1970s-1990s: Predictable World

  • Software projects took years
  • Requirements were stable
  • Desktop applications dominated
  • Releases on CDs/Floppy disks
  • Customers waited for annual releases
  • Waterfall made sense

The 2000s: Internet Changes Everything

  • Web applications emerge
  • Requirements change frequently
  • Competition intensifies
  • Customers expect quarterly updates
  • Feedback comes faster
  • Agile becomes necessary

The 2010s-Present: Mobile & Cloud Revolution

  • Mobile apps, cloud services
  • Global competition
  • Requirements change weekly
  • Customers expect weekly/daily updates
  • Continuous feedback
  • DevOps becomes essential

The Economic Drivers

Cost of Fixing a Defect:

Requirements Phase:     $100
Design Phase:          $1,000
Coding Phase:          $10,000
Testing Phase:         $100,000
Production:            $1,000,000+

The math is clear: Find bugs earlier = Save money

This economic reality drove the evolution:

  • Waterfall: Find defects late → Expensive
  • Agile: Find defects in sprint → Less expensive
  • DevOps: Prevent defects early → Cheapest

🏛️ Era 1: Waterfall Testing (1970s-1990s)

The Waterfall Model

Phases (Sequential, No Going Back):

1. Requirements Analysis (3-6 months)
          ↓
2. System Design (2-4 months)
          ↓
3. Implementation (6-12 months)
          ↓
4. Testing (3-6 months) ← You are here
          ↓
5. Deployment (1-2 months)
          ↓
6. Maintenance (Years)

Testing happens AFTER development is complete.

Testing Characteristics in Waterfall

1. Testing as a Phase

  • Testing starts after coding is “complete”
  • Separate QA department
  • Testers receive completed code
  • “Throw it over the wall” mentality

2. Heavy Documentation

Required Documents:

  • Test Strategy (50–100 pages)
  • Test Plan (100–200 pages)
  • Test Case Documents (1000+ test cases)
  • Test Scripts (Detailed step-by-step)
  • Defect Reports (Formal process)
  • Test Summary Reports (Executive level)
  • Traceability Matrix (Requirements to test cases)

Example Test Case Format:

Test Case ID: TC_LOGIN_001
Module: User Authentication
Priority: High
Preconditions: User account exists in database
Test Data: Username: testuser@example.com, Password: Test@123

Steps:
1. Navigate to login page (https://app.example.com/login)
2. Enter username in "Email" field
3. Enter password in "Password" field
4. Click "Login" button
5. Verify successful navigation to dashboard

Expected Result:
- User is redirected to /dashboard
- Welcome message displays "Welcome, Test User"
- Session cookie is created
- Last login timestamp is updated in database

Actual Result: ___________
Status: Pass/Fail
Tested By: ___________
Date: ___________
Defect ID (if failed): ___________

Writing these took HOURS per test case.

3. Long Test Cycles

  • System Testing: 6–12 weeks
  • Integration Testing: 4–8 weeks
  • User Acceptance Testing: 4–6 weeks
  • Regression Testing: 2–4 weeks (manual)
  • Total: 4–6 months of testing

4. Defect Management

Typical Defect Flow:

1. Tester finds bug → Writes detailed report (30 mins)
2. Bug logged in system → Triaged in weekly meeting
3. Assigned to developer → Developer fixes (days/weeks)
4. Code deployed to test environment → (weekly deployment)
5. Tester re-tests → Verifies fix
6. If failed → Cycle repeats

Average defect lifecycle: 2–4 weeks

5. Limited Automation

  • Mostly manual testing
  • Some automated regression tests (expensive tools like WinRunner, QTP)
  • Automation specialists separate from testers
  • Scripts hard to maintain
  • Automation coverage: 10–20%

Advantages of Waterfall Testing

Comprehensive documentation (good for regulated industries) ✅ Thorough testing (nothing rushed) ✅ Clear entry/exit criteriaPredictable timelines (if requirements don’t change) ✅ Deep expertise (testers become domain experts)

Disadvantages of Waterfall Testing

Late feedback (bugs found months after coding) ❌ Expensive fixes (late defects cost 10–100x more) ❌ Long time to market (releases take years) ❌ Requirements drift (by testing, requirements changed) ❌ Inflexible (can’t adapt to change) ❌ Us vs Them mentality (developers vs testers) ❌ Documentation overhead (more time writing than testing)

Real Example: Windows 95 Development

Timeline:

  • Started: 1992
  • Released: August 24, 1995
  • Development: 3+ years
  • Testing Phase: 6+ months of intensive testing
  • Beta Testing: 400,000+ testers

Testing Approach:

  • Comprehensive test documentation
  • Separate QA team of hundreds
  • Manual test execution
  • Bug bashes at Microsoft
  • Waterfall methodology

Result:

  • Successful launch
  • 7 million copies in first 5 weeks
  • But: Many bugs still made it to production
  • Service packs needed for fixes

This was state-of-the-art for the time.

🔄 Era 2: Agile Testing (2001–2010s)

The Agile Manifesto (2001)

Key Values:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Impact on Testing: Everything changed.

The Shift in Testing Philosophy

Waterfall Testing:

“Our job is to find bugs and prevent bad code from reaching production.”

Agile Testing:

“Our job is to help the team deliver quality software. We’re all responsible for quality.”

Mindset shift:

  • From gatekeeper → to collaborator
  • From finding bugs → to preventing bugs
  • From phase → to activity
  • From separate team → to embedded team member

Testing in Agile: The New Model

1. Testing Throughout the Sprint

2-Week Sprint Timeline:

Day 1-2: Sprint Planning
- Testers: Participate in story refinement
- Activity: Review acceptance criteria
- Ask: "How will we test this?"

Day 3-8: Development
- Testers: Write test cases
- Activity: Collaborate with developers on testability
- Developers: Write unit tests
- Testers: Prepare test data and environments

Day 7-10: Feature Complete
- Testers: Execute test cases
- Activity: Exploratory testing
- Automation: Update automated tests

Day 11-12: Testing & Refinement
- Activity: Bug fixes
- Regression testing
- Demo preparation

Day 13: Sprint Demo
- Show working software to stakeholders

Day 14: Retrospective
- Discuss what worked/what didn't
- Plan improvements

Testing happens THROUGHOUT the sprint, not at the end.

2. Whole Team Approach

Team Composition:

  • Product Owner
  • Scrum Master
  • Developers (5–7)
  • Testers (1–2) ← Embedded in the team
  • UX Designer

Everyone is responsible for quality:

  • Developers write unit tests
  • Testers focus on integration/system testing
  • Product Owner defines acceptance criteria
  • Whole team does exploratory testing

3. Test Automation Pyramid

Mike Cohn’s Test Automation Pyramid (2009):

           /\
          /  \
         / UI \       70-80 tests (10%)
        /------\      Slow, brittle, expensive
       /        \
      / Integration\  300-400 tests (30%)
     /      API     \ Moderate speed/cost
    /--------------\
   /                \
  /   Unit Tests     \ 1000+ tests (60%)
 /___________________\ Fast, cheap, reliable

Strategy:

  • Lots of unit tests (developers write these)
  • Some API/integration tests (testers write these)
  • Few UI tests (only critical user journeys)

This was revolutionary: Invert the testing pyramid!

4. Acceptance Test-Driven Development (ATDD)

Process:

1. Product Owner writes user story:
   "As a user, I want to reset my password so I can regain access"

2. Team discusses and defines acceptance criteria:
   Given: User is on login page
   When: User clicks "Forgot Password"
   Then: User receives password reset email

3. Tester writes automated acceptance test (BEFORE development):
   test_password_reset():
       navigate_to_login()
       click("Forgot Password")
       enter_email("test@example.com")
       click("Send Reset Link")
       assert email_received("test@example.com")
       assert email_contains("reset link")

4. Test FAILS (feature not built yet)

5. Developer implements feature

6. Test PASSES → Feature complete!

Benefits:

  • Shared understanding of requirements
  • Tests as executable documentation
  • No ambiguity about “done”
  • Regression suite grows automatically

5. Continuous Integration

Before Agile:

  • Integration happens at end
  • “Integration hell”
  • Weeks to merge code

With Agile:

  • Integrate multiple times per day
  • Automated tests run on every commit
  • Know within minutes if something broke

CI Pipeline:

Developer commits code
        ↓
CI server (Jenkins) detects change
        ↓
Automated build
        ↓
Run unit tests (2-5 mins)
        ↓
Run integration tests (10-20 mins)
        ↓
Run smoke tests (5-10 mins)
        ↓
If all pass ✓ → Deploy to test environment
If any fail ✗ → Alert team immediately

6. Lighter Documentation

Waterfall: 100-page test plan Agile: 2-page test strategy + executable tests

Documentation replaced by:

  • Automated test code (self-documenting)
  • User stories with acceptance criteria
  • Living documentation
  • Team conversations
  • Wiki pages

Principle: Working software > comprehensive documentation

Agile Testing Quadrants

Brian Marick’s Testing Quadrants (2003):

                Supporting the Team | Critique Product
                                    |
Q2: Automated Tests          |  Q3: Exploratory Testing
- Unit tests                 |  - Usability testing
- Component tests            |  - User acceptance
- Story tests                |  - Exploratory testing
                             |
Business-Facing              |  Technology-Facing
                             |
Q1: Technology Tests         |  Q4: Tools & Analysis
- Unit tests                 |  - Performance testing
- Component tests            |  - Security testing
                             |  - "ility" testing
                             |
      Automated              |     Manual + Tools

This gave structure to Agile testing.

Advantages of Agile Testing

Early feedback (bugs found within days) ✅ Cheaper fixes (defects caught in same sprint) ✅ Faster releases (every 2–4 weeks) ✅ Adaptable (can change direction) ✅ Better collaboration (one team, one goal) ✅ Higher automation (40–60% coverage) ✅ Continuous improvement (retrospectives)

Disadvantages of Agile Testing

Requires discipline (easy to skip testing under pressure) ❌ Documentation gaps (knowledge in people’s heads) ❌ Automation skills needed (not all testers have them) ❌ Can be chaotic (without proper practices) ❌ Hard to scale (works well for small teams) ❌ Risk of technical debt (if quality practices slip)

Real Example: Spotify’s Squad Model (2012)

Background:

  • 2012: Spotify growing rapidly
  • Waterfall → Agile transition
  • Challenge: Scale Agile to 100+ engineers

Solution: Squads, Tribes, Chapters, Guilds

Squad (Team of 8–12):

  • Cross-functional
  • Full autonomy
  • Own mini-mission
  • 1–2 testers embedded

Testing in Squads:

  • Each squad responsible for their quality
  • Automated testing CI/CD
  • Quality metrics tracked per squad
  • No separate QA department

Impact:

  • Releases: From quarterly → daily
  • Quality: Improved (despite faster pace)
  • Tester role: From gatekeeper → quality coach
  • Innovation: Teams experiment freely

Henrik Kniberg (Agile Coach at Spotify):

“We aim to make mistakes faster than anyone else.”

Key Insight: Testing enabled speed, not hindered it.

🚀 Era 3: DevOps Testing (2010s-Present)

What is DevOps?

DevOps = Development + Operations

Goal: Deliver software faster, more reliably, with better quality

Key Practices:

  • Continuous Integration (CI)
  • Continuous Delivery/Deployment (CD)
  • Infrastructure as Code
  • Monitoring and Logging
  • Automated Testing
  • Rapid Feedback

The DevOps Infinity Loop

    Plan → Code → Build → Test
      ↑                      ↓
    Monitor              Release
      ↑                      ↓
    Operate ← Deploy ← Test ←

Testing happens multiple times in the loop, continuously.

Testing in DevOps: Shift-Left and Shift-Right

Shift-Left: Test Earlier in Development

Traditional: Requirements → Design → Code → TEST Shift-Left: TEST Requirements → TEST Design → TEST Code → TEST Integration

How:

  • Test planning in requirements phase
  • Testability reviews in design
  • TDD/BDD during coding
  • Continuous testing in CI/CD

Benefits:

  • Defects found earlier (cheaper to fix)
  • Better test coverage
  • Faster feedback

Shift-Right: Test in Production

What? Yes, test in production!

How (safely):

  • Feature flags (enable for 1% of users)
  • A/B testing (test variations)
  • Canary releases (deploy to small subset first)
  • Blue-green deployments (instant rollback)
  • Synthetic monitoring (robot users)
  • Real User Monitoring (RUM)
  • Chaos engineering (deliberately break things)

Benefits:

  • Test with real users and data
  • Find issues in actual production environment
  • Validate business hypotheses
  • Learn from real behavior

Continuous Testing: The DevOps Testing Pipeline

Modern CI/CD Pipeline with Testing:

1. Developer commits code (Git push)
        ↓ (Triggered automatically)
2. CI Server (GitHub Actions/Jenkins)
        ↓
3. Build Application (1-2 mins)
        ↓
4. Static Code Analysis (SonarQube, 1-2 mins)
   - Code quality
   - Security vulnerabilities
   - Code coverage metrics
        ↓
5. Unit Tests (2-5 mins)
   - 1000+ tests
   - Fast feedback
        ↓
6. Integration Tests (5-15 mins)
   - API tests
   - Database tests
   - Service integration
        ↓
7. Build Docker Image
        ↓
8. Deploy to Test Environment (Container)
        ↓
9. Smoke Tests (2-5 mins)
   - Critical paths
   - Environment validation
        ↓
10. Security Tests (10-15 mins)
    - OWASP ZAP
    - Dependency scanning
        ↓
11. Performance Tests (Optional, 15-30 mins)
    - Load testing
    - Response time validation
        ↓
12. Deploy to Staging
        ↓
13. Automated E2E Tests (15-30 mins)
    - User journey validation
        ↓
14. Manual Exploratory Testing (As needed)
        ↓
15. Deploy to Production (Automated or one-click)
        ↓
16. Production Monitoring
    - APM (Application Performance Monitoring)
    - Error tracking
    - User analytics
        ↓
17. Feedback Loop → Next iteration

Total time: 45–90 minutes from commit to production

Compare to Waterfall: 3–6 months

Test Automation in DevOps

Target: 70–90% automation coverage

Test Types:

  1. Unit Tests (Developers)
  • JUnit, pytest, Jest
  • Fast, isolated
  • 60–70% of all tests

2. API Tests (Testers + Developers)

  • Postman, REST Assured, Playwright
  • Business logic validation
  • 20–25% of tests

3. UI Tests (Testers)

  • Selenium, Playwright, Cypress
  • Critical user journeys only
  • 10–15% of tests

4. Performance Tests (Specialized)

  • JMeter, K6, Gatling
  • Load, stress, endurance
  • Run regularly

5. Security Tests (Automated)

  • OWASP ZAP, Snyk, SonarQube
  • Every build

6. Contract Tests (Microservices)

  • Pact, Spring Cloud Contract
  • Ensure API compatibility

Everything runs automatically in the pipeline.

Infrastructure as Code (IaC)

Key Concept: Treat test environments like code

Before:

  • Manual environment setup
  • “Works on my machine”
  • Environment drift

With IaC:

# docker-compose.yml
version: '3'
services:
  app:
    image: myapp:latest
    ports:
      - "8080:8080"
    environment:
      - DB_HOST=postgres

  postgres:
    image: postgres:14
    environment:
      - POSTGRES_DB=testdb
      - POSTGRES_PASSWORD=testpass

  redis:
    image: redis:6

Command: docker-compose up

Result: Entire test environment in 30 seconds, identical every time.

The T-Shaped Tester in DevOps

Traditional Tester Skills:

Deep expertise in testing
|
| (Vertical bar of the T)

T-Shaped Tester:

  Development | CI/CD | Infrastructure | Security
       ___________________________________________
              |
              | Deep testing expertise
              |

Skills needed:

  • Core: Testing expertise (deep)
  • Broad: Coding, CI/CD, DevOps, Security, Performance (broad)

New expectations:

  • Write automation code (Python, Java, JavaScript)
  • Configure CI/CD pipelines (Jenkins, GitHub Actions)
  • Work with containers (Docker, Kubernetes)
  • Understand cloud platforms (AWS, Azure, GCP)
  • Set up monitoring (Grafana, Prometheus, ELK)
  • Participate in on-call rotations

The role evolved from specialist to generalist.

Advantages of DevOps Testing

Continuous feedback (minutes, not months) ✅ Faster releases (multiple per day possible) ✅ Higher quality (automated safety net) ✅ Lower costs (find/fix issues immediately) ✅ Better collaboration (dev/ops/QA unified) ✅ Scalability (automated processes scale) ✅ Transparency (everyone sees test results) ✅ Risk reduction (small, frequent releases)

Disadvantages of DevOps Testing

High initial investment (tooling, training, culture change) ❌ Requires significant automation (not feasible for all teams) ❌ Complex toolchain (many tools to learn) ❌ Organizational resistance (cultural change is hard) ❌ Not suitable for all domains (medical devices, aerospace need extensive manual testing) ❌ Monitoring overhead (need to watch production constantly)

Real Example: Amazon’s DevOps Testing

Scale:

  • 1,000+ deployments per day (2014 data)
  • 10,000+ deployments per day (2020 data)
  • Thousands of microservices

Testing Approach:

  1. Extensive automation
  • Unit tests: Millions
  • Integration tests: Hundreds of thousands
  • Automation coverage: 80%+

2. Continuous deployment

  • Every commit automatically deployed (after passing tests)
  • Deployment to production: 11.6 seconds average

3. Production testing

  • Feature flags for all new features
  • Canary deployments (1%, 5%, 25%, 50%, 100%)
  • Automatic rollback on errors

4. Monitoring

  • Real-time dashboards
  • Automated alerts
  • Chaos engineering (intentionally breaking things)

Result:

  • Faster innovation
  • 99.99% availability
  • Defects caught in minutes
  • Quick rollback if issues occur

Werner Vogels (CTO, Amazon):

“You build it, you run it.”

The team that builds a service also tests and operates it.


메타데이터
post_id
4e48b8550c1a
slug
the-evolution-of-testing-methodologies-4e48b8550c1a
url
https://medium.com/@mahmudul_008/the-evolution-of-testing-methodologies-4e48b8550c1a
canonical_url
https://medium.com/@mahmudul_008/the-evolution-of-testing-methodologies-4e48b8550c1a
author_url
https://medium.com/@mahmudul_008
status
ok
fetched_at
2026-06-13 12:55:53