Phát triển dựa trên kiểm thử (TDD) với AI Agents

AI Test Driven Development TDD AI Agents

TDD (Test Driven Development) là gì?

Cốt lõi của TDD là một quá trình lặp lại được gọi là Red-Green-Refactor. Chu trình bắt đầu với giai đoạn “Red”, nơi lập trình viên viết một kiểm thử tự động xác định một tính năng hoặc hành vi mong muốn. Kiểm thử này được viết cố ý để thất bại ban đầu vì mã thực hiện chưa tồn tại. Việc kiểm thử thất bại này rất quan trọng vì nó đảm bảo kiểm thử thực sự kiểm tra chức năng dự định và có thể phát hiện lỗi sau khi mã được triển khai.

Tiếp theo là giai đoạn “Green”, trong đó bạn viết lượng mã tối thiểu cần thiết để kiểm thử vừa viết chuyển sang thành công. Nguyên tắc này khuyến khích lập trình viên tập trung vào yêu cầu tức thời mà kiểm thử đặt ra, giữ cho codebase sạch sẽ và tránh làm quá mức cần thiết.

Cuối cùng, giai đoạn “Refactor” tập trung vào việc cải thiện cấu trúc, tính dễ đọc và bảo trì của cả mã kiểm thử lẫn mã sản xuất, đồng thời đảm bảo tất cả kiểm thử hiện có vẫn thành công. Việc refactor đảm bảo codebase luôn “khỏe mạnh”, dễ thích ứng với thay đổi trong tương lai mà không gây lỗi, với bộ kiểm thử đóng vai trò như lưới an toàn.

Làm thế nào để tự động hóa hoàn toàn quy trình TDD?

Có rất nhiều yếu tố ảnh hưởng đến hiệu suất của AI Agent khi lập trình, từ mô hình LLM cho đến cách bạn tổ chức mã và pipeline phát triển. Chúng tôi nhận thấy TDD rất hiệu quả với Windsurf kết hợp Claude 3.5 sonnet. Dưới đây là một ví dụ về nhiệm vụ được triển khai theo TDD.

Bạn cần gì?

Trước khi bắt đầu lập trình, bạn cần:

Đủ kiểm thử

Hãy đảm bảo bạn đã có các kiểm thử theo TDD, và chúng bao phủ phần lớn phạm vi vấn đề mà bạn cho là hợp lý, hữu ích cho AI Agent. Bạn không cần chỉnh sửa hay tùy biến gì chỉ để phục vụ AI Agent. Nếu kiểm thử của bạn và cách đặt tên kiểm thử tuân theo một tiêu chuẩn thì càng tốt. Bước đầu tiên, AI Agent sẽ xem các kiểm thử này để bắt đầu thực hiện.

Đây là ví dụ về một kiểm thử tôi có, kiểm tra xem một tài liệu đã được chèn đúng vào MongoDB hay chưa:

MongoDB test example

Interfaces

Interface trong Java (hoặc bất kỳ ngôn ngữ lập trình nào khác) là cấu trúc định nghĩa lớp cần có gì và phải triển khai những phương thức nào. Để dẫn hướng AI Agent tốt hơn, bạn nên tạo một Interface cho repository của mình để chèn tài liệu:

Java interface example
Java interface code

Mô tả nhiệm vụ cụ thể

Cuối cùng, bạn cần một mô tả nhiệm vụ cụ thể. Thông thường bạn có thể dùng JIRA hoặc GitHub issues để định nghĩa nhiệm vụ. Đây là ví dụ:

Task description screenshot

Bắt đầu Vibe Coding

Vibe coding nghĩa là bạn mô tả nhu cầu bằng tiếng Anh đơn giản (hoặc thậm chí bằng giọng nói), và AI sẽ sinh mã cho bạn theo thời gian thực. Chúng tôi sẽ nói chi tiết về Vibe Coding trong bài viết này. Đây là prompt tôi dùng trong Windsurf để hoàn thành nhiệm vụ:

Prompt example for Windsurf

Triển khai truy vấn sau đây dưới dạng kết hợp một hoặc nhiều truy vấn có tên và mã Java.

Tìm tất cả tài xế đã hoàn thành ít nhất X chuyến đi với đánh giá trên 5 trong một khoảng ngày nhất định và chưa từng nhận đánh giá dưới 3 sao.

Lưu ý:
Bạn không cần tìm một truy vấn duy nhất để giải quyết nhiệm vụ này (có thể dùng kết hợp mã Java và truy vấn đặt tên), nhưng phải chú ý hiệu suất ORM, tức phải đảm bảo giải pháp vẫn đủ nhanh nếu có nhiều thực thể. Trong phiên thảo luận, bạn nên giải thích các vấn đề có thể phát sinh khi truy vấn viết kém.

@Ass1_2_2Test.java#L35-60 là các kiểm thử liên quan. Được triển khai trong @DriverDAO.java#L34-63

Việc đề cập file là điều quan trọng nhất khi vibe coding. Bây giờ hãy ngồi lại và để AI Agent làm điều kỳ diệu. Nó đã triển khai Class, chạy kiểm thử và lặp lại cho đến khi kiểm thử thành công:

AI Agent coding flow

Câu hỏi thường gặp

Yasha là một nhà phát triển phần mềm tài năng, chuyên về Python, Java và học máy. Yasha viết các bài báo kỹ thuật về AI, kỹ thuật prompt và phát triển chatbot.

Yasha Boroumand
Yasha Boroumand
CTO, FlowHunt

Tăng tốc phát triển với AI Agents

Khám phá cách các kỹ sư luồng AI và agent lập trình của FlowHunt có thể tự động hóa quy trình phát triển của bạn để đạt hiệu suất và đổi mới tối đa.

Tìm hiểu thêm

Deep Agent
Deep Agent

Deep Agent

Tìm hiểu cách xây dựng và cấu hình Deep Agents trong FlowHunt — các agent tự chủ, đa bước có khả năng suy luận phức tạp, sử dụng công cụ lặp lại và thực thi nhi...

10 phút đọc
Agents
TouchDesigner
TouchDesigner

TouchDesigner

Tích hợp FlowHunt với TouchDesigner bằng giao thức Model Context Protocol (MCP) server. Kích hoạt tự động hóa dựa trên AI cho việc tạo node, viết script và quản...

6 phút đọc
AI TouchDesigner +3
Claude Sonnet 4.5 và Lộ Trình của Anthropic dành cho AI Agents: Chuyển Hóa Phát Triển Sản Phẩm và Quy Trình Làm Việc của Lập Trình Viên
Claude Sonnet 4.5 và Lộ Trình của Anthropic dành cho AI Agents: Chuyển Hóa Phát Triển Sản Phẩm và Quy Trình Làm Việc của Lập Trình Viên

Claude Sonnet 4.5 và Lộ Trình của Anthropic dành cho AI Agents: Chuyển Hóa Phát Triển Sản Phẩm và Quy Trình Làm Việc của Lập Trình Viên

Khám phá những đột phá của Claude Sonnet 4.5, tầm nhìn của Anthropic đối với AI agents, và cách SDK Claude Agent mới đang định hình lại tương lai phát triển phầ...

27 phút đọc
AI Agents +3