Kỹ thuật testing

ERROR – DEFECT – FAILURE trong ISTQB khác nhau thế nào?

Phong Do Phong Do · 26/08/2026 · 3 phút đọc

Ba từ này dân test nhắc suốt ngày nhưng rất hay dùng lẫn. Thực ra chúng là một chuỗi nhân quả: Error → Defect → Failure.

1. ERROR (Mistake) – Lỗi của con người

  • Là hành động sai của con người: dev, BA, tester, PM…
  • Nó xảy ra trong đầu người, chưa nằm trên sản phẩm
  • Ví dụ: Dev hiểu nhầm requirement, nghĩ “tuổi hợp lệ là từ 18” trong khi spec ghi “trên 18”

2. DEFECT (Fault / Bug) – Khiếm khuyết trong sản phẩm

  • Là hậu quả của error, nằm “tĩnh” trong code, tài liệu, thiết kế
  • Có thể tồn tại mãi mà chẳng ai biết
  • Ví dụ: dòng code if (age >= 18)

3. FAILURE – Sai lệch khi hệ thống chạy

  • Là biểu hiện “động” lúc runtime, khi kết quả thực tế khác kết quả mong đợi
  • Đây là thứ khách hàng nhìn thấy
  • Ví dụ: nhập tuổi 18 → hệ thống vẫn cho đăng ký, đáng lẽ phải chặn

Điểm mấu chốt hay bị bỏ qua: Không phải defect nào cũng sinh ra failure. Nếu đoạn code lỗi không bao giờ được thực thi, hoặc không có test data nào chạm tới nhánh đó, defect vẫn nằm im. Ngược lại, failure cũng có thể đến từ điều kiện môi trường (phần cứng hỏng, bức xạ, từ trường…) chứ không nhất thiết do defect trong code.


Vài thuật ngữ họ hàng dễ nhầm

  • Bug / Fault: đồng nghĩa với Defect (bug là cách gọi dân dã, fault là thuật ngữ kỹ thuật)
  • Mistake: đồng nghĩa với Error
  • Root cause: nguyên nhân gốc rễ dẫn tới error, ví dụ requirement viết mơ hồ hay dev thiếu training. Đây là thứ ta đào ra khi làm root cause analysis
  • Anomaly / Deviation: bất kỳ điều kiện nào lệch khỏi kỳ vọng. Rộng hơn defect, vì điều tra xong có khi lại không phải bug
  • Incident / Defect Report: bản ghi nhận sự việc quan sát được, cần điều tra thêm
  • False positive: test fail nhưng sản phẩm thực ra đúng, lỗi nằm ở test case, môi trường hoặc data
  • False negative: test pass nhưng sản phẩm thực sự có defect
  • Defect masking: một defect che khuất defect khác, khiến cái thứ hai không lộ ra

Mẹo nhớ khi đi thi

Đề ISTQB thường mô tả một tình huống rồi hỏi “đây là gì”. Cứ tự hỏi ba câu:

  • Xảy ra trong đầu người → Error
  • Nằm trong code hoặc tài liệu → Defect
  • Nhìn thấy được khi chạy → Failure

Anh em nào đang ôn Foundation Level thì save lại nhé. 🙌

Phong Do
Tác giả
Phong Do