Trong kiểm thử phần mềm, Static Testing và Dynamic Testing là hai cách tiếp cận quan trọng. Điểm khác biệt cốt lõi rất đơn giản: Static Testing không cần chạy phần mềm, còn Dynamic Testing cần thực thi phần mềm.
Static Testing là gì?
Kiểm thử tĩnh (Static Testing) là hoạt động đánh giá các sản phẩm công việc mà không thực thi phần mềm. Đối tượng kiểm tra có thể là requirement, user story, thiết kế, source code hoặc test cases
Ví dụ: BA viết yêu cầu “Mật khẩu phải có tối thiểu 8 ký tự”, nhưng mockup lại hiển thị tối thiểu 6 ký tự. Tester có thể phát hiện điểm không nhất quán này ngay khi review tài liệu, trước khi lập trình.
Dynamic Testing là gì?
Kiểm thử động (Dynamic Testing) là hoạt động kiểm thử bằng cách thực thi phần mềm và so sánh kết quả thực tế với kết quả mong đợi.
Ví dụ: tester nhập mật khẩu gồm 6 ký tự vào màn hình đăng ký. Hệ thống vẫn tạo tài khoản thành công, trong khi yêu cầu quy định tối thiểu 8 ký tự. Hành vi sai quan sát được là một failure và có thể cho thấy phần mềm đang chứa defect.
Functional Testing, Performance Testing, API Testing hay UI Testing đều có thể là Dynamic Testing vì chúng yêu cầu thành phần hoặc hệ thống được thực thi.
So sánh Static Testing và Dynamic Testing
| Tiêu chí | Static Testing | Dynamic Testing |
|---|---|---|
| Thực thi phần mềm | Không | Có |
| Đối tượng phổ biến | Yêu cầu, thiết kế, code, test case | UI, API, các component của phần mềm |
| Cách thực hiện | Review và Static Analysis | Chạy test và quan sát kết quả |
| Khả năng phát hiện | Defect trong tài liệu hoặc code | Failure khi phần mềm hoạt động, từ đó tìm defect |
| Thời điểm áp dụng | Có thể bắt đầu rất sớm | Khi phần mềm bắt đầu test được |
Static và Dynamic Testing có thay thế nhau không?
Không. Hai cách tiếp cận bổ sung cho nhau. Static Testing giúp ngăn ngừa và phát hiện defect sớm; Dynamic Testing kiểm chứng hành vi thực tế khi phần mềm chạy. Một lỗi yêu cầu bị bỏ sót trong review có thể trở thành defect trong code và chỉ được nhận ra khi hệ thống gây ra failure.
Vì vậy, một quy trình kiểm thử hiệu quả nên kết hợp cả hai: review yêu cầu, thiết kế và code từ sớm; sau đó thực hiện các cấp độ và loại kiểm thử động phù hợp khi phần mềm đã có thể chạy.




