Bug Reporting và quản lý Defect

⏱︎

Read time:

3–4 minutes
Minh họa quy trình báo cáo và quản lý defect

“Bắn bug” không chỉ là chụp màn hình rồi giao ticket cho developer. Một defect report tốt phải giúp người nhận hiểu vấn đề, tái hiện được failure, đánh giá ảnh hưởng và theo dõi từ lúc phát hiện đến khi đóng.

Trước khi report bug

  1. Thử tái hiện để xác nhận vấn đề không phải thao tác nhầm hoặc lỗi tạm thời.
  2. Kiểm tra đúng build, environment, configuration, account và test data.
  3. So sánh actual result với requirement hoặc expected behavior.
  4. Tìm ticket tương tự để tránh duplicate.
  5. Thu thập screenshot, video, log, request/response và database evidence cần thiết.
  6. Thu gọn steps và dữ liệu để xác định điều kiện tối thiểu gây failure.
Ví dụ
Tiêu đề phải vừa ngắn gọn vừa cụ thể. Ví dụ: “Thanh toán lỗi” thì quá chung chung.
Tốt hơn: “Đơn hàng bị tạo hai lần khi người dùng bấm nút Thanh toán hai lần trong lúc API phản hồi chậm”. Tiêu đề cho biết chức năng, điều kiện và failure.

Cấu trúc một Bug Report

  • ID duy nhất và tiêu đề ngắn gọn. (ID thường do phần mềm tự gen ra)
  • Người report, thời điểm phát hiện
  • Thông tin đi kèm: Environment, build/version, browser/device và configuration liên quan.
  • Preconditions và test data: Tiền điều kiện và dữ liệu test
  • Steps to reproduce (các bước thực hiện) rõ ràng, đánh số thứ tự
  • Expected result và Actual result. (Kì vọng và biểu hiện thực tế của bug)
  • Evidence: screenshot, video, log, request/response.
  • Severity, Priority, Status và người phụ trách.
  • Liên kết requirement, test case và ticket liên quan.

Severity và Priority khác nhau thế nào?

Tiêu chíSeverityPriority
Ý nghĩaMức độ ảnh hưởng của defectMức độ cần sửa sớm
Câu hỏiHỏng nghiêm trọng đến đâu?Khi nào phải xử lý?
Căn cứẢnh hưởng tới user, dữ liệu, an toàn và requirementBusiness value, deadline, số user, workaround và risk
Ai quyết địnhTester thường đề xuấtPO/PM/triage team thường quyết định cùng kỹ thuật
Ví dụ
High Severity nhưng Low Priority: chức năng export báo cáo dành cho admin bị crash, nhưng chỉ dùng cuối năm và đang có workaround.
Low Severity nhưng High Priority: logo đối tác bị sai ngay trên trang chủ trước buổi ra mắt lớn. Không nghiêm trọng với người dùng nhưng là cái phải fix sớm
Cảnh báo
Severity không tự động quyết định Priority. Quyết định sửa còn phụ thuộc deadline, risk, cost, workaround và mục tiêu release.

Vòng đời Defect phổ biến

Mỗi công ty có workflow khác nhau, nhưng một luồng điển hình là:

  1. New/Open: tester tạo ticket.
  2. Triage/Analyzed: team xác nhận, phân loại, đặt severity/priority và quyết định hướng xử lý.
  3. Assigned/In Progress: người phụ trách phân tích và sửa.
  4. Fixed/Ready for QA: bản sửa đã có trên build phù hợp.
  5. Retest/Awaiting Confirmation: tester kiểm tra bản sửa.
  6. Closed: failure cũ không còn và điều kiện đóng được đáp ứng.
  7. Reopened: lỗi vẫn tồn tại, tái xuất hiện hoặc fix chưa đúng.

Các nhánh khác có thể gồm

Rejected/Not a bug: Bug bị bắn sai, không phải bug

Duplicate: Bug bị trùng

Cannot reproduce: Bug không tái hiện được

Won’t fix: Đúng là có bug nhưng PO quyết định sẽ không fix

Retest và Regression sau khi fix

Retest/Confirmation Testing xác nhận defect ban đầu đã được sửa. Tester chạy lại steps từng gây failure và các test liên quan trực tiếp đến bản fix.

Regression Testing kiểm tra thay đổi có gây hậu quả bất lợi ở nơi khác hay không. Phạm vi nên dựa trên impact analysis, không phải lúc nào cũng chạy toàn bộ hệ thống.

Mẹo nhớ
Retest hỏi: lỗi cũ đã hết chưa? Regression hỏi: bản sửa có làm hỏng nơi khác không?

Kết luận

Bug report tốt rút ngắn thời gian tái hiện, giảm tranh luận và tạo dữ liệu cho quản lý chất lượng. Mục tiêu không phải đếm xem tester “bắn” được bao nhiêu bug, mà là giúp team hiểu, ưu tiên và xử lý đúng rủi ro của sản phẩm.