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

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

Tìm hiểu các thực tiễn tốt nhất để kết hợp TDD với các agent lập trình AI như Windsurf và Claude 3.5 Sonnet nhằm tự động hóa và tối ưu hóa quy trình phát triển phần mềm của bạn.

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

Phát triển dựa trên kiểm thử (TDD) là gì?

Phát triển dựa trên kiểm thử (TDD) là một phương pháp phát triển phần mềm trong đó các kiểm thử tự động được viết trước khi viết mã thực tế. Quy trình này tuân theo chu trình Red-Green-Refactor: viết kiểm thử thất bại (Red), triển khai mã để kiểm thử thành công (Green), và sau đó tái cấu trúc mã trong khi vẫn đảm bảo tất cả kiểm thử đều qua.

AI Agents có thể tự động hóa quy trình TDD như thế nào?

Các AI Agent như Windsurf, đặc biệt khi kết hợp với các mô hình như Claude 3.5 Sonnet, có thể tự động sinh mã, chạy kiểm thử và thực hiện các cải tiến lặp lại, giúp quy trình TDD nhanh hơn và hiệu quả hơn.

Cần chuẩn bị gì để tự động hóa TDD với AI Agents?

Để tự động hóa TDD với AI Agents, bạn cần một bộ kiểm thử đầy đủ, các interface được định nghĩa rõ ràng và mô tả nhiệm vụ cụ thể. Việc đặt tên kiểm thử theo chuẩn và tài liệu rõ ràng sẽ giúp AI Agent đạt kết quả tối ưu.

Vibe Coding là gì?

Vibe Coding là một phương pháp lập trình dựa trên AI, trong đó lập trình viên mô tả yêu cầu bằng tiếng Anh (hoặc giọng nói), và AI sinh mã theo thời gian thực, lặp lại cho đến khi tất cả kiểm thử đều qua và giải pháp đáp ứng yêu cầu.

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

Kiểm Tra Turing
Kiểm Tra Turing

Kiểm Tra Turing

Kiểm Tra Turing là một khái niệm nền tảng trong trí tuệ nhân tạo, được thiết kế để đánh giá liệu một cỗ máy có thể thể hiện hành vi thông minh không thể phân bi...

9 phút đọc
AI Turing Test +3
Phân Tách Truy Vấn
Phân Tách Truy Vấn

Phân Tách Truy Vấn

Phân Tách Truy Vấn trong FlowHunt giúp chia nhỏ các truy vấn phức tạp thành các truy vấn con nhỏ hơn, nâng cao độ chính xác của phản hồi AI. Tính năng này đơn g...

4 phút đọc
AI Query Decomposition +3
Phân Tích Dữ Liệu Khám Phá (EDA)
Phân Tích Dữ Liệu Khám Phá (EDA)

Phân Tích Dữ Liệu Khám Phá (EDA)

Phân Tích Dữ Liệu Khám Phá (EDA) là một quy trình tóm tắt các đặc điểm của bộ dữ liệu bằng các phương pháp trực quan để khám phá các mẫu, phát hiện bất thường, ...

3 phút đọc
EDA Data Analysis +3