As Agile developers, we are most accustomed to writing Unit Tests for our code. There is a lot more to software testing than Unit Testing alone. In order to release a robust software product, we need to devise and implement tests to cover other dimensions of software as well. Testing can be can be sliced in various ways. The following are several different ways to view software testing.
Purpose
- Correctness
- Scalability
- Performance
- Load (Stress)
Granularity
- Unit
- Functional
- Integration
Tier
- User Interface
- Business
- Service
- API
- Database
Proof
- Positive
- Negative
Environment
- Operating System
- Database Server
- Application Server
- Web Server
- Browser
- Runtime, Virtual Machine
Scope
- Smoke
- Regression
- Full
Deployment
- New
- Existing (Upgrade)
- Various Platforms