Người dùng báo một lỗi crash mà bạn không tái hiện được. Bạn làm gì?
Đáp án mẫu
1. Lấy dữ liệu. Mở công cụ báo crash (Crashlytics, Sentry hoặc console của store). Đọc stack trace, ghi lại phiên bản app, phiên bản hệ điều hành, mẫu thiết bị và tần suất.
2. Tìm quy luật. Lỗi chỉ xảy ra trên một phiên bản hệ điều hành, một dòng thiết bị, khi thiếu bộ nhớ hay ở một màn hình cụ thể? Breadcrumb, log và thao tác của người dùng trước lúc crash rất hữu ích. Với app JavaScript, hãy chắc chắn đã tải lên source map để trace đọc được.
3. Đặt giả thuyết. Nguyên nhân thường gặp: dữ liệu null hoặc bất ngờ từ API, race khi đổi vòng đời, bị kết thúc do hết bộ nhớ, hoặc lỗi của thư viện native.
4. Thử tái hiện. Dùng đúng thiết bị hoặc hệ điều hành, giả lập mạng chậm, làm đầy bộ nhớ, xoay màn hình, đưa app xuống nền rồi mở lại.
5. Sửa và kiểm chứng. Phát hành bản sửa theo từng đợt (staged rollout) và theo dõi tỷ lệ không crash.
6. Phòng ngừa. Thêm kiểm tra còn thiếu, test hồi quy và log bổ sung.
Ý chính
- Bắt đầu từ báo cáo crash: stack trace, phiên bản, hệ điều hành và thiết bị
- Tìm quy luật giữa các thiết bị, phiên bản hệ điều hành và màn hình
- Tái hiện trong điều kiện tương ứng như ít bộ nhớ hoặc mạng chậm
- Dùng staged rollout và theo dõi tỷ lệ không crash
Câu hỏi nối tiếp thường gặp
- Làm sao để stack trace JavaScript đọc được trên production?
- Bạn sẽ thêm log nào cho lần xảy ra tiếp theo?
Lỗi thường gặp
- Đóng báo cáo với lý do không tái hiện được
- Chỉ kiểm tra trên hệ điều hành mới nhất và thiết bị cao cấp