MarkTechPost
92

Sản phẩm

Microsoft ra mắt code-testing-generator: AI tạo unit test đạt tỷ lệ thành công 92,1%

(giờ Việt Nam)

Tóm tắt AI

Microsoft vừa mở mã nguồn code-testing-generator, một AI chuyên biệt tự động lập kế hoạch, viết và kiểm thử mã nguồn mà không làm ảnh hưởng đến code gốc, vượt xa hiệu suất của Copilot.

Bản dịch AI

Microsoft Open Sources code-testing-generator: a Polyglot Unit-Test Agent That Hits 92.1% Task Completion Versus 78.9% for Stock Copilot

Microsoft vừa mã nguồn mở code-testing-generator, một tác nhân đa ngôn ngữ (polyglot agent) có khả năng viết các unit test và sau đó kiểm chứng tính hiệu quả của chúng. Công cụ này được tích hợp trong plugin dotnet-test thuộc kho lưu trữ dotnet/skills với giấy phép MIT.

Tác nhân này nhắm vào một khoảng trống mà các trợ lý lập trình thường bỏ ngỏ. Một câu lệnh như "tạo unit test" thường không chỉ định rõ framework, vị trí tệp hay các khẳng định (assertions) cần sử dụng. code-testing-generator giải quyết các quyết định đó bằng cách đọc kho lưu trữ trước khi thực hiện bất kỳ thao tác nào. Sau đó, nó lập kế hoạch, viết, chạy và kiểm tra các bài kiểm thử mà nó tạo ra. Trong bài kiểm chuẩn (benchmark) nội bộ gồm 152 tác vụ của Microsoft, nó đã hoàn thành 140 tác vụ so với 120 tác vụ của GitHub Copilot bản gốc. Cả hai thiết lập đều sử dụng cùng một mô hình và câu lệnh.

Có thể triển khai được không?

Có. Đây là một định nghĩa tác nhân đi kèm với các kỹ năng (skills), không phải là một dịch vụ lưu trữ, vì vậy nó chạy ngay bên trong tác nhân lập trình hiện tại của bạn và mã nguồn vẫn được giữ cục bộ.

Tác nhân này thực sự làm gì?

Nó điều phối công việc thông qua quy trình Research-Plan-Implement (RPI). Nó tìm kiếm trong kho lưu trữ các đoạn mã cần kiểm thử, phát hiện ngôn ngữ và framework kiểm thử, đọc các bài kiểm thử hiện có để nắm bắt quy ước, và tìm ra các lệnh build và test thực tế. Bước cuối cùng này nhắm vào một lỗi cụ thể: một dự án kiểm thử được build thành công cục bộ nhưng không bao giờ chạy được trong CI vì không có gì đăng ký nó.

Sau đó, tác nhân sẽ chọn một trong ba chiến lược. Direct (Trực tiếp) viết và xác thực các bài kiểm thử ngay lập tức. Single pass (Một lượt) chạy một chu kỳ. Iterative (Lặp lại) thực hiện cho các phạm vi lớn hoặc các mục tiêu bao phủ (coverage) rộng hơn. Nó không bao giờ sửa đổi mã nguồn sản phẩm và tránh các bài kiểm thử gọi đến URL bên ngoài, liên kết cổng hoặc phụ thuộc vào thời gian.

Cổng xác minh

Trước khi báo cáo hoàn thành, tác nhân thực hiện năm bước kiểm tra. Nó suy luận về các thay đổi mã nhỏ có thể khiến bài kiểm thử thất bại, một dạng kiểm thử đột biến (mutation testing) nhẹ. Nó tìm kiếm các khẳng định yếu hoặc còn thiếu. Nó ánh xạ mọi kịch bản được yêu cầu vào một bài kiểm thử. Nó build toàn bộ không gian làm việc và chạy toàn bộ bộ kiểm thử. Nó xác nhận rằng lệnh kiểm thử của chính kho lưu trữ có thể phát hiện ra các bài kiểm thử mới.

Kết quả kiểm chuẩn

Trên bài kiểm chuẩn nội bộ của Microsoft gồm 152 tác vụ từ các kho lưu trữ thực tế, tác nhân đã hoàn thành 140 (92,1%) so với 120 (78,9%) của GitHub Copilot bản gốc trên cùng mô hình và câu lệnh (giảm 63% tỷ lệ thất bại).

Mức tăng trưởng tập trung ở các tác vụ cụ thể. Với 89 câu lệnh mơ hồ, tác nhân giải quyết được 79 (88,8%) so với 59 (66,3%), giảm tỷ lệ thất bại từ 30 xuống 10. Với 63 câu lệnh chi tiết, cả hai đều đạt 61 (96,8%). Với 15 tác vụ nhắm vào một diff cụ thể, tác nhân vượt qua cả 15, trong khi Copilot bản gốc không vượt qua được tác vụ nào.

Đáng chú ý, tác nhân tạo ra ít hơn 2,3% số lượng bài kiểm thử (6.963 so với 7.129) với độ bao phủ dòng mã gần như tương đương (72,4% so với 72,2%). Thời gian trung bình cho mỗi tác vụ là 359 giây so với 380 giây. Mức sử dụng token cho mỗi tác vụ hoàn thành cao hơn 3,2%.

Trên 45 tác vụ.NET, Claude Opus 4.8 đạt 43/45 với tác nhân so với 35/45 bản gốc; GPT-5.5 đạt 41/45 so với 36/45. Trên bài kiểm chuẩn bên ngoài khó hơn là SWE Atlas, tỷ lệ hoàn thành là 16/44 so với 12/44.

Giải thích: cách tác nhân biến một câu lệnh thành các bài kiểm thử đã xác minh

Những điểm chính cần lưu ý

Hãy xem chi tiết kỹ thuật và Repo. Ngoài ra, đừng ngần ngại theo dõi chúng tôi trên Twitter và đừng quên tham gia SubReddit 150k+ ML của chúng tôi cũng như đăng ký Bản tin (Newsletter). Khoan đã! Bạn có dùng Telegram không? Bây giờ bạn cũng có thể tham gia cùng chúng tôi trên Telegram.

Cần hợp tác với chúng tôi để quảng bá GitHub Repo, Trang Hugging Face, Phát hành sản phẩm hoặc Hội thảo trực tuyến, v.v.? Hãy kết nối với chúng tôi.

Michal Sutter là một chuyên gia khoa học dữ liệu với bằng Thạc sĩ Khoa học Dữ liệu từ Đại học Padova. Với nền tảng vững chắc về phân tích thống kê, học máy và kỹ thuật dữ liệu, Michal xuất sắc trong việc chuyển đổi các tập dữ liệu phức tạp thành những thông tin chi tiết có giá trị thực tiễn.

MicrosoftLập trìnhAIUnit-testMã nguồn mở
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ MarkTechPost. Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.