Tôi làm việc cho một công ty sản phẩm phần mềm. Chúng tôi có khách hàng doanh nghiệp lớn, những người thực hiện sản phẩm của chúng tôi và chúng tôi cung cấp hỗ trợ cho họ. Ví dụ: nếu có lỗi, chúng tôi cung cấp các bản vá, v.v. Nói cách khác, Đó là một thiết lập khá điển hình.
Gần đây, một vé đã được phát hành và được giao cho tôi về một ngoại lệ được tìm thấy bởi một khách hàng trong một tệp nhật ký có liên quan đến việc truy cập cơ sở dữ liệu đồng thời trong việc triển khai cụm sản phẩm của chúng tôi. Vì vậy, cấu hình cụ thể của khách hàng này có thể rất quan trọng trong trường hợp xảy ra lỗi này. Tất cả chúng tôi nhận được từ khách hàng là tệp nhật ký của họ.
Cách tiếp cận tôi đề xuất với nhóm của mình là cố gắng tái tạo lỗi trong thiết lập cấu hình tương tự như của khách hàng và nhận được nhật ký tương đương. Tuy nhiên, họ không đồng ý với cách tiếp cận của tôi nói rằng tôi không cần phải tạo lại lỗi vì nó quá tốn thời gian và sẽ yêu cầu mô phỏng cụm máy chủ trên máy ảo. Nhóm của tôi đề nghị tôi chỉ cần "theo mã" để xem mã không an toàn của luồng và / hoặc giao dịch không an toàn và thay đổi hoạt động của một phát triển cục bộ đơn giản, không phải là triển khai cụm như môi trường mà từ đó xảy ra của lỗi bắt nguồn.
Đối với tôi, làm việc với một kế hoạch chi tiết trừu tượng (mã chương trình) chứ không phải là một biểu hiện rõ ràng, hữu hình (tái tạo thời gian chạy) có vẻ khó khăn, vì vậy tôi muốn hỏi một câu hỏi chung:
Có hợp lý để nhấn mạnh vào việc tái tạo mọi khiếm khuyết và gỡ lỗi trước khi chẩn đoán và sửa chữa nó không?
Hoặc là:
Nếu tôi là nhà phát triển cấp cao, tôi có thể đọc mã đa luồng và tạo một bức tranh tinh thần về những gì nó làm trong tất cả các tình huống sử dụng thay vì yêu cầu chạy ứng dụng, thử nghiệm các tình huống sử dụng khác nhau và thực hiện từng bước dòng mã theo dòng? Hay tôi là một nhà phát triển kém vì yêu cầu loại môi trường làm việc đó?
Là gỡ lỗi cho sissies?
Theo tôi, bất kỳ sửa chữa nào được gửi để phản hồi với một vé sự cố nên được kiểm tra trong một môi trường được mô phỏng gần với môi trường ban đầu nhất có thể. Làm thế nào khác bạn có thể biết rằng nó sẽ thực sự khắc phục vấn đề? Nó giống như phát hành một mô hình mới của một chiếc xe mà không thử nghiệm nó với một hình nộm để chứng minh rằng túi khí thực sự hoạt động.
Cuối cùng nhưng không kém phần quan trọng, nếu bạn đồng ý với tôi:
Làm thế nào tôi nên nói chuyện với nhóm của mình để thuyết phục họ rằng cách tiếp cận của tôi là hợp lý, bảo thủ và chống đạn hơn?
new
. Và các lỗi này không được đảm bảo có thể tái tạo một cách đáng tin cậy, theo đặc tả Mô hình bộ nhớ Java