Error, Defect và Failure trong Testing khác nhau thế nào?

⏱︎

Read time:

2–3 minutes
Minh họa mối quan hệ Error, Defect và Failure trong kiểm thử phần mềm

Error, Defect và Failure là ba thuật ngữ rất dễ bị dùng lẫn lộn trong testing. Chúng liên quan chặt chẽ với nhau, nhưng không phải là một.

1. Error – Sai sót của con người

Error là hành động hoặc quyết định sai của một người trong quá trình phát triển phần mềm. Người gây ra error có thể là BA, developer, tester hoặc bất kỳ ai tham gia dự án.

Ví dụ: BA hiểu sai quy tắc tính giảm giá và ghi trong tài liệu rằng khách VIP được giảm 5% thay vì 10%.

2. Defect – Khiếm khuyết trong sản phẩm

Defect (còn thường gọi là bug) là khiếm khuyết tồn tại trong tài liệu, thiết kế hoặc mã nguồn. Defect thường được tạo ra do một error của con người.

Ví dụ: Developer dựa trên yêu cầu sai và lập trình hệ thống chỉ giảm 5% cho khách VIP. Mức giảm giá sai trong code chính là một defect.

3. Failure – Hệ thống hoạt động sai

Failure xảy ra khi phần mềm đang chạy không thực hiện đúng chức năng mong đợi. Nói cách khác, defect đã được kích hoạt và biểu hiện ra bên ngoài.

Ví dụ: Một khách VIP đặt đơn hàng 1.000.000 đồng nhưng chỉ được giảm 50.000 đồng thay vì 100.000 đồng. Kết quả sai mà người dùng quan sát được là failure.

Mối quan hệ Error → Defect → Failure

Có thể ghi nhớ bằng chuỗi đơn giản:

Con người mắc sai sót → sản phẩm xuất hiện khiếm khuyết → khiếm khuyết gây ra hành vi sai khi phần mềm chạy.

  • Error: nguyên nhân đến từ con người.
  • Defect: vấn đề nằm trong sản phẩm.
  • Failure: biểu hiện sai được quan sát khi hệ thống hoạt động.

Một defect có luôn gây ra failure không?

Không. Defect chỉ gây ra failure khi gặp đúng điều kiện kích hoạt. Một đoạn code sai có thể tồn tại lâu mà chưa ai phát hiện vì luồng đó hiếm khi được sử dụng.

Ngược lại, failure cũng không nhất thiết bắt nguồn từ defect trong phần mềm. Mất mạng, hết bộ nhớ hoặc phần cứng hỏng cũng có thể khiến hệ thống thất bại.

Phân biệt đúng ba khái niệm này giúp tester mô tả vấn đề chính xác hơn, phân tích nguyên nhân tốt hơn và giao tiếp hiệu quả với đội phát triển.

Có phải failure là bug trên PROD mà khách hàng gặp phải?

Không hoàn toàn nhé. Bạn hiểu đơn giản theo ISTQB, bug là “1 đoạn code logic sai”, còn failure là “đoạn lỗi đó biểu hiện lên sản phẩm”. Vì vậy những issue mà tester tìm ra trên môi trường DEV thì cũng tính là failure.