1.Bug Lifecycle & Bug Report là gì?
Trong quản lý chất lượng phần mềm, Bug Lifecycle (Vòng đời của lỗi) và Bug Report (Báo cáo lỗi) là hai khái niệm cực kỳ quan trọng giúp kiểm thử viên (Tester) và lập trình viên (Developer) trao đổi, theo dõi và sửa lỗi một cách chuyên nghiệp.
Trong kỹ nghệ phần mềm, không có bất kỳ hệ thống nào được lập trình ra mà hoàn toàn sạch lỗi (100\% Bug-free). Việc phát hiện ra lỗi (Bug/Defect) chỉ là bước khởi đầu. Thách thức thực sự nằm ở chỗ: Làm thế nào để quản lý, theo dõi, sửa chữa và xác minh lỗi đó một cách chặt chẽ, không bị bỏ sót và không gây mâu thuẫn giữa các bên trong dự án?
Đây chính là lúc hai khái niệm nền tảng trong Software Testing Lifecycle (STLC) phát huy vai trò:
-
Bug Lifecycle (Vòng đời của lỗi): Quy trình chuẩn hóa quản lý sự di chuyển của lỗi qua các trạng thái từ lúc được phát hiện cho đến khi bị đóng lại hoàn toàn.
-
Bug Report (Báo cáo lỗi): Tài liệu kỹ thuật đóng vai trò là cầu nối giao tiếp quan trọng nhất giữa Kiểm thử viên (QC) và Lập trình viên (Developer)
Bug Report là gì? (Báo cáo lỗi)
Bug Report là một tài liệu hoặc một bản ghi (ticket) được Tester tạo ra trên các công cụ quản lý lỗi (như Jira, Redmine, Trello, Bugzilla) để mô tả chi tiết một sự cố/lỗi được tìm thấy trong phần mềm.
Một Bug Report chuẩn chỉnh cần có đầy đủ các thông tin cốt lõi sau:
-
Bug ID: Mã định danh duy nhất cho lỗi (Ví dụ:
BUG_LOGIN_01). -
Title / Summary: Tiêu đề tóm tắt ngắn gọn lỗi là gì (Ví dụ: Không bấm được nút Đăng nhập khi nhập đúng mật khẩu chứa ký tự đặc biệt).
-
Environment: Môi trường xảy ra lỗi (Hệ điều hành, trình duyệt, thiết bị, bản build… Ví dụ: Windows 11 / Chrome v128 / Staging environment).
-
Severity (Độ nghiêm trọng): Mức độ ảnh hưởng của lỗi tới hệ thống (Blocker, Critical, Major, Minor).
-
Priority (Độ ưu tiên): Mức độ khẩn cấp cần sửa lỗi (High, Medium, Low).
-
Steps to Reproduce (Các bước tái hiện): Hướng dẫn từng bước để Dev có thể làm lại đúng thao tác đó và thấy lỗi xuất hiện.
-
Expected Result (Kết quả mong đợi): Hệ thống đáng lẽ phải chạy ra sao.
-
Actual Result (Kết quả thực tế): Hệ thống thực tế đang bị lỗi ra sao.
-
Attachments: Hình ảnh chụp màn hình (Screenshot), video quay lại thao tác hoặc file nhật ký hệ thống (Log file).
Bug Lifecycle là gì? (Vòng đời của lỗi)
Bug Lifecycle là tập hợp các trạng thái (States) mà một lỗi trải qua kể từ khi nó được Tester phát hiện cho đến khi lỗi đó được sửa xong và đóng lại hoàn toàn.
Các trạng thái cơ bản trong Bug Lifecycle:
-
New (Mới tạo): Tester tìm ra lỗi mới và tạo Bug Report trên hệ thống.
-
Assigned (Đã phân công): Quản lý (Tech Lead / PM) xem xét và giao lỗi đó cho một Lập trình viên (Developer) cụ thể để xử lý.
-
Open / In Progress (Đang xử lý): Developer tiếp nhận bug, đọc thông tin và bắt đầu tìm nguyên nhân để sửa code.
-
Fixed (Đã sửa xong): Developer sửa xong code trên máy của họ và đẩy code lên bản build mới, chuyển bug sang cho Tester kiểm tra lại.
-
Pending Retest (Chờ test lại): Bug đang chờ Tester chạy lại kiểm tra trên bản build mới.
-
Retest (Đang test lại): Tester thực hiện lại đúng các bước tái hiện lỗi trên bản build mới.
-
Nếu lỗi đã hết: Tester chuyển trạng thái sang Verified / Closed.
-
Nếu lỗi vẫn còn: Tester chuyển trạng thái sang Reopened (Mở lại bug) và chuyển trả lại cho Dev.
-
-
Closed (Đã đóng): Lỗi đã được xác minh là sửa thành công và đóng lại hoàn toàn.
Một số trạng thái đặc biệt khác:
-
Rejected / Invalid: Dev từ chối sửa do đây không phải là lỗi (do Tester hiểu sai tài liệu hoặc làm sai thao tác).
-
Duplicate: Lỗi này đã được người khác báo cáo trước đó.
-
Deferred: Lỗi thật nhưng chưa ưu tiên sửa ngay, dời lại cho bản nâng cấp sau.
Bảng tóm tắt nhanh
| Khái niệm | Ý nghĩa cốt lõi |
| Bug Report | Hồ sơ mô tả chi tiết lỗi (Có các bước tái hiện, ảnh chụp, kết quả mong đợi và kết quả thực tế) để Dev dựa vào đó sửa lỗi. |
| Bug Lifecycle | Hành trình của một lỗi từ lúc phát hiện (New)-) Giao việc (Assigned)-)Sửa (Fixed) -) Kiểm tra lại (Retest) -) Đóng bug (Closed). |
2. Bug Lifecycle
Một quy trình quản lý vòng đời lỗi tiêu chuẩn bao gồm các trạng thái cốt lõi và các trạng thái xử lý ngoại lệ sau:
Các trạng thái trong luồng xử lý chuẩn (Standard Flow):
-
New (Mới khởi tạo): QC phát hiện sự cố bất thường trên ứng dụng và khởi tạo một ticket báo lỗi mới trên công cụ quản lý (Jira, Redmine).
-
Assigned (Đã phân công): Test Lead hoặc PM xem xét tính hợp lý của lỗi và gán trách nhiệm xử lý cho Developer phụ trách module tương ứng.
-
Open / In Progress (Đang xử lý): Developer tiếp nhận ticket, tiến hành đọc mô tả, phân tích mã nguồn và thực hiện truy tìm nguyên nhân gốc rễ (Debugging) để sửa chữa.
-
Fixed (Đã sửa xong): Developer đã hoàn tất việc chỉnh sửa code, chạy thử Unit Test và đẩy (deploy) bản sửa lỗi lên môi trường Staging/Testing.
-
Pending Re-test / Ready for Test (Chờ kiểm thử lại): Hệ thống hoặc Developer chuyển trạng thái báo cho đội QC biết rằng bản build mới đã sẵn sàng để kiểm tra lại.
-
Re-testing (Đang kiểm thử lại): QC tiến hành chạy lại kịch bản kiểm thử (Test Case) liên quan trực tiếp đến lỗi đó trên môi trường mới.
-
Closed (Đã đóng hoàn toàn): QC xác nhận lỗi đã được khắc phục triệt để, hệ thống hoạt động đúng đặc tả SRS và không phát sinh lỗi mới. Lỗi chính thức kết thúc vòng đời.
-
Reopened (Mở lại): Nếu trong quá trình Re-testing, QC nhận thấy lỗi vẫn còn tồn tại hoặc việc sửa lỗi này làm đứt gãy tính năng khác, ticket sẽ bị đẩy ngược lại trạng thái Reopened để Dev tiếp tục sửa.
Các trạng thái xử lý ngoại lệ (Exception States):
-
Rejected (Bị từ chối): Developer hoặc PM từ chối xử lý vì cho rằng hệ thống đang hoạt động đúng theo thiết kế, hoặc do QC hiểu sai tài liệu đặc tả.
-
Duplicate (Trùng lặp): Sự cố này đã được một QC khác hoặc chính QC đó báo cáo trong một ticket trước đó.
-
Deferred / Postponed (Hoãn lại): Lỗi có thật nhưng mức độ ảnh hưởng thấp, PM quyết định dời việc sửa chữa sang các đợt Release/Sprint sau để ưu tiên tiến độ.
-
Cannot Reproduce (Không thể tái hiện): Developer thực hiện theo các bước mô tả của QC nhưng hệ thống vẫn chạy bình thường (thường do lệch môi trường, thiếu dữ liệu test hoặc thao tác không chính xác).
Phân biệt Bug Severity (Độ nghiêm trọng) vs Bug Priority (Mức độ ưu tiên)
Đây là hai chỉ số định lượng bắt buộc phải gán cho từng bug trong Bug Lifecycle:
-
Bug Severity (Độ nghiêm trọng): Đo lường mức độ tác động kỹ thuật của lỗi lên cấu trúc và sự vận hành của phần mềm (do QC đánh giá dựa trên tài liệu đặc tả SRS). Được chia thành: Critical/Blocker, Major, Minor, Trivial/Low.
-
Bug Priority (Mức độ ưu tiên): Đo lường tầm quan trọng và độ khẩn cấp cần phải sửa chữa dưới góc độ kinh doanh/dự án (do PM hoặc Product Owner quyết định). Được chia thành: High, Medium, Low.
Phân cấp tiêu chuẩn:
-
Các mức Severity:
-
Critical / Blocker: Lỗi làm sập toàn bộ hệ thống (Crash), đứt gãy luồng chính, gây mất dữ liệu và làm ngưng trệ toàn bộ hoạt động kiểm thử.
-
Major: Chức năng chính bị lỗi nặng và không có giải pháp tạm thời (No Workaround).
-
Minor: Chức năng phụ bị lỗi nhưng vẫn có hướng xử lý tạm thời để hoàn thành công việc.
-
Trivial / Low: Lỗi về giao diện (UI/UX), sai chính tả, lệch khoảng cách pixel.
-
-
Các mức Priority:
-
High: Phải khắc phục ngay lập tức trong bản Hotfix tiếp theo.
-
Medium: Khắc phục trong đợt cập nhật định kỳ của Sprint.
-
Low: Có thể thong thả sửa chữa khi đội ngũ Dev có thời gian rảnh.
-
3. Bug Report:
Bug Report (Báo cáo lỗi) là một tài liệu kỹ thuật chi tiết mô tả về sự cố/lỗi xảy ra trên phần mềm, đóng vai trò là cầu nối giao tiếp quan trọng nhất giữa đội ngũ Kiểm thử viên (QC) và đội ngũ Lập trình viên (Developer).
Tiêu chuẩn vàng của một Bug Report chất lượng là: Developer chỉ cần đọc qua một lần là hiểu ngay lỗi ở đâu, tự tái hiện được lỗi trên máy cá nhân mà không cần phải gọi điện hỏi lại QC.
Bug Report chuyên nghiệp (Chuẩn ISO/ISTQB):
Một Bug Report hoàn chỉnh trên các công cụ quản lý như Jira hay Redmine bắt buộc phải bao gồm 8 thành phần cốt lõi:
-
Bug ID (Mã định danh): Mã duy nhất do hệ thống tự động sinh ra (Ví dụ:
PROJ-1024). -
Title / Summary (Tiêu đề lỗi): Tóm tắt ngắn gọn nhưng đầy đủ ngữ cảnh.
-
Công thức chuẩn:
[Module / Feature] + [Hành động thao tác] + [Kết quả sai phát sinh] + [Điều kiện ngữ cảnh]
-
-
Severity & Priority: Mức độ nghiêm trọng kỹ thuật và Mức độ ưu tiên sửa chữa.
-
Environment (Môi trường phát sinh lỗi): Hệ điều hành, Trình duyệt + Version, Thiết bị, Môi trường test (Staging/Dev), Bản Build cụ thể.
-
Steps to Reproduce (Các bước tái hiện lỗi): Liệt kê tỉ mỉ từng bước thao tác từ đầu đến cuối ($1, 2, 3…$) kèm dữ liệu test cụ thể.
-
Expected Result (Kết quả kỳ vọng): Trích dẫn rõ ràng theo tài liệu đặc tả (SRS) hệ thống PHẢI hoạt động như thế nào mới đúng.
-
Actual Result (Kết quả thực tế): Mô tả chi tiết hành vi sai trái mà hệ thống ĐANG diễn ra khi thao tác.
-
Attachments (Bằng chứng đính kèm): Ảnh chụp màn hình (Screenshot) khoanh vùng lỗi, Video quay lại thao tác (Screen Recording), hoặc file Log hệ thống (Console Log / Network Log).
Các cạm bẫy cần tránh khi lập Bug Report
-
Đặt tiêu đề mơ hồ: Viết tiêu đề chung chung như “Trang giỏ hàng bị lỗi”, “Không bấm được nút”.
-
Thiếu các bước tái hiện: Bỏ qua các bước thao tác hoặc không ghi rõ dữ liệu test cụ thể khiến Dev rơi vào trạng thái Cannot Reproduce.
-
Đánh giá sai Severity và Priority: Cố tình đẩy Severity của tất cả các lỗi lên mức Critical để ép Dev sửa trước, gây nhiễu loạn thông tin quản trị.
-
Gộp nhiều lỗi vào một Ticket: Báo cáo 2-3 lỗi khác nhau ở các màn hình khác nhau trong cùng một Bug Report gây rối rắm khi theo dõi.
4. Cảm nhận, chiêm nghiệm:
Thông qua quá trình nghiên cứu lý thuyết chuyên sâu và vận dụng thực hành Bug Lifecycle cũng như kỹ năng lập Bug Report trong các dự án thực tế, em đã rút ra được bài học triết lý vô cùng giá trị: Kiểm thử phần mềm không phải là một cuộc chiến giữa QC và Developer, mà là một quá trình hợp tác nghệ thuật để cùng kiến tạo nên một sản phẩm hoàn hảo.
Một Bug Report được viết một cách khoa học, chuyên nghiệp, tỉ mỉ và lịch sự chính là tấm danh thiếp khẳng định năng lực và sự tận tụy của người kỹ sư QC. Nó không chỉ giúp tiết kiệm hàng chục giờ tranh cãi vô bổ, tối ưu hóa hiệu suất làm việc cho đội ngũ phát triển, mà còn là mắt xích chiến lược giúp nâng cao độ tin cậy của toàn bộ quy trình sản xuất phần mềm. Việc làm chủ trọn vẹn quy trình quản lý lỗi chính là nền tảng vững chắc giúp tôi tự tin bước vào môi trường làm việc doanh nghiệp thực tế.








Khoá học lập trình game con rắn cho trẻ em




