Lộ trình 02Bài học 4 / 6

Review mã do AI sinh

Kiểm tra thay đổi thực tế, ranh giới tin cậy và bằng chứng trước khi chấp nhận.

Thực hành12 minĐã review

Xuất bản bởi Cách chúng tôi viết

Kiểm tra mức hiểuEndpoint kiểm tra người dùng đã đăng nhập, rồi tải bản ghi bằng ID do request cung cấp. Bạn phải xác minh điều gì?Làm bài tập
Endpoint kiểm tra người dùng đã đăng nhập, rồi tải bản ghi bằng ID do request cung cấp. Bạn phải xác minh điều gì?

Bạn sẽ học gì

  • Review hành vi và thẩm quyền trước phong cách mã.
  • Nhận diện kiểm tra phân quyền còn thiếu trong ví dụ nhỏ.
  • Phân biệt bản tóm tắt được sinh với bằng chứng đã xác minh.

Đọc yêu cầu trước bản tóm tắt

Bắt đầu với hành vi được yêu cầu và tiêu chí nghiệm thu. Sau đó kiểm tra diff thực tế. Tóm tắt của agent có thể giúp định hướng, nhưng có thể bỏ sót thay đổi hoặc mô tả kiểm tra không chính xác.

Xác nhận branch và commit đang review. Kiểm tra thay đổi cấu hình, dependency, hạ tầng và test bên cạnh mã ứng dụng. Tính năng nhỏ người dùng nhìn thấy có thể đi kèm thay đổi lớn về quyền hoặc hành vi triển khai.

Review hành vi có hậu quả lớn nhất trước. Định dạng và đặt tên quan trọng, nhưng không nên làm bạn bỏ qua ranh giới dữ liệu còn thiếu.

Theo dõi danh tính đến tài nguyên

Xét endpoint giả định chưa đầy đủ sau. Ví dụ minh họa vấn đề khi review; đây không phải mã production.

async function getInvoice(request) {
  const user = await requireSignedInUser(request);
  return database.invoice.findById(request.params.id);
}

Hàm lấy người dùng đã xác thực. Nó không thể hiện quyết định phân quyền cho hóa đơn. Người review phải kiểm tra liệu lớp khác có thực thi quyết định đó không. Giá trị user không được dùng là lý do điều tra, tự nó không phải bằng chứng lỗi có thể khai thác.

Theo dõi request xuyên hệ thống thực tế. Xác định người dùng và tổ chức đáng tin cậy. Kiểm tra truy vấn giới hạn quyền truy cập bản ghi được yêu cầu thế nào. Xem hành vi lỗi và test cho request bị cấm.

Không mặc định nút bị ẩn bảo vệ API. Bên gọi có thể gửi request mà không dùng giao diện. Không mặc định ID bản ghi hợp lệ cấp quyền truy cập.

Hỏi bằng chứng nào có thể bác bỏ thay đổi

Test đạt có thể dùng fixture quản trị viên hoặc mock phân quyền. Kiểm tra nó có thực sự đi qua ranh giới quan trọng không. Thêm trường hợp với tổ chức khác và luồng phân quyền thật khi phù hợp.

Với thay đổi giao diện, kiểm tra kết quả đã render. Kiểm tra thao tác bàn phím, trạng thái trống, hành vi tải và lỗi. Type check không chứng minh hộp thoại dùng được bằng bàn phím.

Với thay đổi dependency, xác minh vì sao cần nó. Review phiên bản, giấy phép và phát hiện bảo mật. Không chấp nhận nâng cấp không liên quan chỉ vì agent tạo ra trong lúc làm tác vụ.

Giữ review độc lập

Mô hình thứ hai có thể đưa ra những phát hiện hữu ích. Nó cũng có thể lặp giả định từ quá trình viết mã. Cung cấp yêu cầu và diff cho người review. Tránh nói trước rằng thay đổi đã đúng.

Yêu cầu phát hiện chỉ ra cách lỗi xảy ra cụ thể và mã liên quan. Xem cảnh báo thiếu căn cứ là câu hỏi cần điều tra. Xem phê duyệt đầy tự tin là ý kiến khác cho đến khi các nhận định quan trọng có bằng chứng.

Review của con người vẫn là quyết định về trách nhiệm. Người review cần hiểu đủ thay đổi để giải thích hành vi, rủi ro và xác minh. Nếu diff quá lớn, giảm phạm vi hoặc chia thành thay đổi có thể review.

Hoàn tất review trên bản sửa cuối cùng

Sau sửa, chạy lại kiểm tra bị ảnh hưởng. Kiểm tra bản sửa có tạo vấn đề mới không. Bảo đảm review bắt buộc áp dụng cho bản sửa cuối cùng theo chính sách repository.

Viết quyết định chấp nhận bằng hành vi và bằng chứng. Ghi mọi giới hạn còn lại cùng người phụ trách và hành động tiếp theo. Không biến vấn đề chưa giải quyết thành tuyên bố mọi kiểm tra đã đạt.

Dùng bài tập review mã để luyện nhận diện quyết định còn thiếu trước khi kiểm tra thay đổi thật.

Làm bài tập

Mở bài tập review mã trong lab thực hành. Xác định bên hành động, tài nguyên được yêu cầu và ranh giới tổ chức đáng tin cậy. Sau đó kiểm tra một PR nhỏ thực tế bằng cùng phương pháp. Chỉ dùng mã bạn được phép review.

Tải worksheet (Markdown)
Kiểm tra mức hiểu ↑

Tiếp tục học

Nguồn và đọc thêm

Đọc thêm liên quan từ Taiga

← Bài trước: Dùng test làm bằng chứng