- Static testing — kiểm tra sản phẩm không chạy code. Gồm review, walkthrough, inspection (tài liệu, yêu cầu, thiết kế, code) và static analysis (linter, phân tích tĩnh). Ưu điểm: bắt lỗi sớm và rẻ, ngay từ khâu yêu cầu — trước khi lỗi lọt vào code.
- Dynamic testing — thực thi phần mềm với dữ liệu đầu vào rồi so kết quả thực tế với kỳ vọng. Đây là "test" theo nghĩa thông thường (unit, integration, system...).
Hai loại bổ sung nhau: static tìm defect ngay trong work product, dynamic quan sát failure khi hệ thống chạy. Lỗi phát hiện càng sớm bằng static thì chi phí sửa càng thấp.