The Evolution of Testing Methodologies
The Three Eras of Software Testing:
The Evolution of Testing Methodologies

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
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 criteria ✅ Predictable 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:
- 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:
- 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