AllianceProject Handbook
← Knowledge

Biểu mẫu

Mẫu bug report

Chép mẫu này khi tạo một phiếu lỗi. Thiếu mục nào thì người sửa phải hỏi lại, và mỗi lần hỏi lại mất nửa ngày.

Cập nhật 12/09/2026biểu mẫubug

Vì sao cần mẫu

Phiếu lỗi ghi "đăng nhập bị lỗi" tạo ra một vòng hỏi đáp kéo dài hai ngày, trong đó dev không làm được gì còn người báo thì đã quên mất bối cảnh. Mẫu dưới đây tồn tại để cắt vòng đó.

Nguyên tắc: người báo lỗi bỏ ra năm phút để người sửa không mất nửa ngày.

Mẫu

# [Hiện tượng ngắn gọn] khi [thao tác] ở [màn hình]

## Môi trường
- App version / build: 1.6.2 (412)
- Platform / OS: iOS 18.2
- Device: iPhone 13
- Môi trường: Production | Staging | QA
- Tài khoản: loại tài khoản, không ghi mật khẩu
- Thời điểm: 2026-09-12 14:30 (+07)

## Tiền điều kiện
Trạng thái cần có trước khi làm các bước dưới.

## Các bước tái hiện
1.
2.
3.

## Kết quả mong đợi

## Kết quả thực tế

## Mức độ tái hiện
Luôn luôn | Thường xuyên (x/10) | Ngẫu nhiên | Chỉ gặp một lần

## Phạm vi ảnh hưởng
Bao nhiêu user, có đường vòng nào không.

## Đính kèm
- Ảnh chụp màn hình / video
- Log, network trace
- Id giao dịch, id phiên nếu có

## Severity đề xuất
P0 | P1 | P2 | P3 — kèm một câu lý do

Quy tắc điền

Tiêu đề = hiện tượng + thao tác + nơi xảy ra. So sánh:

Tệ:  Login bị lỗi
Tốt: Màn hình trắng sau khi nhập OTP đúng, trên iOS 18 mạng 3G

Tiêu đề tốt giúp người khác tìm ra phiếu trùng trước khi tạo phiếu mới.

Các bước phải đánh số và bắt đầu từ trạng thái xác định — "mở app từ trạng thái đã đóng hẳn", không phải "đang ở màn hình đơn hàng". Người sửa không biết anh đã làm gì trước đó.

Mong đợi và thực tế tách riêng. Viết gộp thành "phải hiện danh sách nhưng nó trắng" thì mất thông tin: mong đợi là danh sách rỗng có chữ, hay danh sách có dữ liệu?

Log đính kèm dưới dạng file, không dán nguyên vào phần mô tả. Phiếu lỗi dài ba màn hình log thì không ai đọc phần mô tả nữa.

Severity là đề xuất, không phải quyết định. Người trực xác nhận lại — xem Bug severity, on-call và root cause analysis.

Lỗi không tái hiện được thì làm gì

Không đóng phiếu với lý do "không tái hiện được". Thay vào đó:

  1. Ghi lại mọi thứ còn nhớ, kể cả không chắc chắn — ghi rõ chỗ nào là phỏng đoán.
  2. Đính kèm session id và thời điểm để tra log phía server.
  3. Tìm trong crash reporting xem có sự kiện tương ứng cùng thời điểm không.
  4. Gắn nhãn chưa tái hiện và giữ phiếu mở trong hai tuần.

Lỗi ngẫu nhiên thường là lỗi race condition hoặc lỗi mạng — đúng loại nguy hiểm nhất. Đóng phiếu sớm là cách chắc chắn để gặp lại nó ở production với quy mô lớn hơn.

Ví dụ một phiếu điền đủ

# Trừ tiền nhưng không tạo đơn khi mất mạng lúc xác nhận thanh toán

## Môi trường
- App version / build: 1.6.2 (412)
- Platform / OS: Android 14
- Device: Samsung A54
- Môi trường: Production
- Tài khoản: nhân viên bán hàng, có hạn mức
- Thời điểm: 2026-09-11 09:12 (+07)

## Tiền điều kiện
Giỏ hàng có 2 sản phẩm, tổng 450.000đ. Mạng 4G sóng yếu 1 vạch.

## Các bước tái hiện
1. Mở app từ trạng thái đã đóng hẳn, vào giỏ hàng
2. Bấm Thanh toán, chọn phương thức chuyển khoản
3. Bấm Xác nhận, ngay lập tức bật chế độ máy bay trong 5 giây rồi tắt

## Kết quả mong đợi
Hoặc đơn được tạo và hiện trong danh sách, hoặc thanh toán thất bại và tiền
không bị trừ. Không có trạng thái ở giữa.

## Kết quả thực tế
Màn hình báo "Thanh toán thất bại, vui lòng thử lại". Tài khoản đã bị trừ
450.000đ. Danh sách đơn không có đơn nào mới.

## Mức độ tái hiện
Thường xuyên (6/10)

## Phạm vi ảnh hưởng
Chưa rõ số user. Không có đường vòng, phải hoàn tiền thủ công.

## Đính kèm
- video-thanh-toan.mp4
- Id giao dịch: TXN-2026-09-11-88431

## Severity đề xuất
P0 — sai về tiền, không tự phục hồi được.