Tuesday, January 18, 2011

Dimensions of Software Testing

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
  1. Correctness
  2. Scalability
  3. Performance
  4. Load (Stress)

Granularity
  1. Unit
  2. Functional
  3. Integration

Tier
  1. User Interface
  2. Business
  3. Service
  4. API
  5. Database
 
Proof
  1. Positive
  2. Negative

Environment
  1. Operating System
  2. Database Server
  3. Application Server
  4. Web Server
  5. Browser
  6. Runtime, Virtual Machine

 Scope
  1. Smoke
  2. Regression
  3. Full

Deployment
  1. New
  2. Existing (Upgrade)
  3. Various Platforms