Khi gặp bug thì làm gì? Quy trình fix bug hiệu quả
Khi gặp bug thì làm gì? Câu hỏi nghe có vẻ rất đơn giản, bug thì đi mà fix đi chứ còn gì nữa? Từ từ hãy đọc bài này đã bạn nhé.
1, Đó có phải là bug không?
Vâng =]] Nghe có vẻ vô lý nhưng thật sự không phải tất cả cái gì tester đưa cho bạn cũng đều là bug. Đừng vội vàng hấp tấp xông vào fix mà tốn thời gian. Đôi khi bạn code đúng rồi nhưng do chính tester hiểu sai requirement của khách hàng, dev hiểu một kiểu, tester hiểu một kiểu. Hãy đọc lại document để chắc chắn là mình đúng, thảo luận cùng tester để làm rõ chức năng đó làm gì, đáng lý nó phải chạy như thế nào.
2, Lựa chọn bug:
Thông thường thì bạn sẽ được đưa cho một list rất nhiều bug, nhưng không phải bug nào cũng có mức độ ưu tiên như nhau. Hãy lựa chọn những bug logic quan trọng, có khả năng ảnh hưởng nhiều đến hệ thống, có khả năng phát sinh ra bug khác để fix trước. Sau đó đến các bug nhỏ hơn, cuối cùng là các bug giao diện như sai màu chữ.
3, Hiểu rõ bug:
Trước khi fix, thì bạn phải hiểu được bug đã. Xác định rõ môi trường, điều kiện gây bug, biểu hiện của bug.
Lần lượt đặt các câu hỏi:
- Bug xảy ra khi nào? Khi bấm nút gì, ở đâu?…
- Môi trường xảy ra bug? Server nào? Ở máy bạn? Máy khách hàng? Khi khách dùng internet explorer?…
- Bug xảy ra như thế nào? Biểu hiện của bug là gì? Nó có báo lỗi gì không? Có lưu được vào database hay không?…
- Phải như thế nào mới là kết quả đúng trong trường hợp đó?
Khi chưa thực sự hiểu rõ bug, thì KHÔNG fix bug, điều đó có thể gây ra những hậu quả nghiệm trọng mà bạn chưa thấy ngay trước mắt được. Sau này khi bạn thốt lên: ố, á, hỏng rồi, thì lúc đó đã rất muộn và sửa rất mệt.
4, Fix bug:
Đến đoạn này thì có vẻ dễ rồi, bạn bắt đầu tìm và fix bug. Đầu tiên bạn phải tái hiện bug, tức là làm cho nó lỗi đã, từ đó tìm ra nguyên nhân gây bug. Hãy chắc chắn bạn sử dụng tốt các tool debug, watch variable, next step, go into, go finish…v.v Đôi khi việc tìm ra bug còn dựa cả vào linh cảm :))
Sau khi sửa lỗi, hãy đánh giá lại:
- Phương án đó đã thực sự đúng yêu cầu chưa? Có thể phát sinh các bug khác hay không?
- Phương án đó đã tối ưu chưa, liệu có phương án nào tốt hơn không về mặt hiệu năng, độ phức tạp hay không?
- Bạn có thực sự hiểu cách giải quyết đó chưa, nếu chưa thì đừng vội vàng sử dụng. Hãy làm khi bạn thực sự hiểu rõ mình đang làm gì.
- Kiểm tra lại lần nữa trước khi deploy cho tester bắt đầu test lại, chứ không nó đẻ ra lỗi khác thì ngồi đó mà khóc.
5, Tâm lý:
Bug luôn tồn tại trong lập trình, dưới áp lực của khách hàng, deadline, code của người đi trước không rõ ràng mạch lạc, trình độ dev kém nên code tiềm ẩn nhiều bug, khó maintain. Code của người đi trước làm ẩu vì làm gấp làm vội.
Khi nhận ra mình sai, thông thường có cảm giác bực bội khó chịu, đôi khi tự dằn vặt bản thân rằng “Sao mình có thể sơ suất đến thế nhỉ? Sao mình ngu vậy nhỉ?”.
Đừng cố chấp, hãy lắng nghe, tất nhiên là khi đi làm, cảm giác như đang bị soi mói, đánh giá trình độ là không dễ chịu chút nào.
Hãy chấp nhận và tiếp cận bug tích cực, giữ tinh thần lạc quan trong quá trình fix bug. Nhẹ nhàng, cười duyên, tránh làm mất đoàn kết nội bộ. Hãy hiểu rằng fix bug là một phần không thể thiếu trong lập trình, xem đó là một cơ hội để hoàn thiện bản thân. (Đoạn này sao mình viết đạo lý rởm đời thế không biết, thôi nghỉ).