• Ngày xuất bản
    Tháng Mười Một 26, 2024
  • Chia sẻ

Tạo ra mã được thiết kế tốt và chính xác là mục tiêu của mọi nhà phát triển. Một phương pháp nổi bật để đạt được điều này là Phát triển theo hướng kiểm thử (TDD). Mặc dù TDD không thiết kế mã của bạn hoặc viết mã cho bạn, nhưng đây là một phương pháp trong phát triển phần mềm cho phép bạn nhận được phản hồi nhanh chóng về các quyết định thiết kế trong chu kỳ phát triển lặp lại. 

Viết unit test trước hay sau khi code hoặc không bao giờ viết test tùy thuộc vào lựa chọn của lập trình viên. Rõ ràng là không bao giờ viết bất kỳ test nào sẽ gây ra những tình huống quan trọng trong quá trình sản xuất, nếu lập trình viên may mắn, họ sẽ phát hiện ra lỗi trong giai đoạn kiểm tra thủ công. 

Viết các bài kiểm tra sau khi hoàn thành mã tốt hơn là không có bài kiểm tra nào. Hầu hết các nhà phát triển, bao gồm cả chúng tôi, đang áp dụng phương pháp tiếp cận mã trước một cách trực tiếp sau đó viết các bài kiểm tra. Tuy nhiên, mã đã viết không tốt hơn. Một số lỗi chức năng sẽ xuất hiện nếu chúng ta quên trường hợp kiểm tra. Viết các trường hợp kiểm tra lỗi trước cho mọi đoạn mã, sau đó thêm mã để làm cho bài kiểm tra đó vượt qua bằng cách tuân theo chu kỳ TDD thì tốt hơn nhiều.

Hiện tại, chúng tôi đang thảo luận về cách chúng tôi có thể sử dụng AI tạo sinh để làm cho công việc của chúng tôi tự động hơn. Trong công việc này, chúng tôi giới thiệu một thử nghiệm mới lấy cảm hứng từ Blog của Allen Helton. Chúng tôi viết một số trường hợp thử nghiệm cho dự án và sau đó yêu cầu ChatGPT tạo mã liên quan đến thử nghiệm. 

Trí tuệ nhân tạo cho phát triển thử nghiệm đầu tiên 

Với khả năng xảy ra lỗi của con người trong quá trình thử nghiệm thủ công, câu hỏi đặt ra là: Tại sao không tự động hóa TDD bằng cách sử dụng AI tạo sinh? AI tạo sinh có thể đóng vai trò chuyển đổi trong TDD bằng cách tự động hóa việc tạo các bài kiểm tra đơn vị và mã tương ứng. Sau đây là quy trình làm việc được đề xuất:

  1. Các bài kiểm tra do nhà phát triển viết: Các nhà phát triển bắt đầu bằng cách viết các bài kiểm tra đơn vị ban đầu, chỉ định kết quả mong muốn cho mã của họ.
  2. Mã do AI tạo ra: AI tạo ra đọc các bài kiểm tra đơn vị này và tạo ra mã cần thiết để vượt qua chúng. Nếu mã chạy thành công, nó sẽ được lưu vào đĩa. Nếu không, AI sẽ tạo báo cáo lỗi và cố gắng tạo lại mã đúng, tạo ra một vòng lặp cho đến khi các bài kiểm tra vượt qua. Bằng cách kết hợp AI theo cách này, các nhà phát triển có thể đảm bảo rằng mã của họ được kiểm tra và xác thực kỹ lưỡng, giảm thiểu rủi ro lỗi.
Ekran Resmi 2024-11-04 13.29.43.png

Lợi ích của việc sử dụng AI tạo sinh trong TDD

Tự động hóa quá trình tạo mã và thử nghiệm có thể tăng tốc đáng kể chu kỳ phát triển. Ngoài ra, giảm khả năng xảy ra lỗi của con người trong các trường hợp thử nghiệm và viết mã. Trong khi thực hiện điều này, đảm bảo tất cả các thử nghiệm được bao phủ toàn diện và nhất quán và dễ dàng mở rộng quy trình phát triển mà không làm tăng khối lượng công việc thủ công.

Những thách thức và giải pháp tiềm năng

Mặc dù tích hợp AI tạo sinh trong TDD mang lại nhiều lợi ích, nhưng nó không phải là không có thách thức. Thiết lập ban đầu của hệ thống AI cho TDD đôi khi có thể phức tạp và tốn thời gian. Các nhà phát triển có thể cần được đào tạo để sử dụng hiệu quả và tin tưởng các công cụ AI. Nhưng ngay cả khi các nhà phát triển đã sẵn sàng xử lý, AI vẫn có thể gặp khó khăn với các trường hợp duy nhất hoặc trường hợp ngoại lệ không được thể hiện tốt trong dữ liệu đào tạo, do đó điều này có thể gây nhầm lẫn cho các tình huống được hỏi. AI tạo sinh phản hồi bằng mã tốt nhưng không phải là lựa chọn tuyệt vời và tốt nhất. Bởi vì mã chưa áp dụng bất kỳ cơ chế phản hồi nào. Để tạo ra mã tuyệt vời, chúng ta nên áp dụng các cơ chế phản hồi cho AI như cách tiếp cận đánh giá mã của nhà phát triển. Chúng ta có thể kết hợp AI với sự giám sát của con người để xử lý các tình huống phức tạp, ít nhất là hiện tại.. :)

Phản hồi ứng dụng AI tạo sinh trong TDD

Ekran Resmi 2024-11-04 13.31.52.png

Cơ chế phản hồi

Để tinh chỉnh quy trình hơn nữa, có thể giới thiệu một cơ chế phản hồi. Các nhà phát triển viết các bài kiểm tra đơn vị và một tác nhân phát triển tạo ra mã. Một lớp giám sát mới được thêm vào với một tác nhân đánh giá mã, tác nhân này sẽ đánh giá mã và cung cấp phản hồi cho tác nhân phát triển.

Cải tiến lặp đi lặp lại

Tác nhân phát triển sửa đổi mã dựa trên phản hồi của tác nhân đánh giá và gửi lại để đánh giá. Quá trình lặp lại này tiếp tục cho đến khi mã vượt qua đánh giá thành công.

Thử nghiệm cuối cùng

Sau khi mã được tác nhân đánh giá chấp thuận, các bài kiểm tra đơn vị sẽ được chạy. Nếu chúng vượt qua, mã sẽ được lưu. Nếu chúng không vượt qua, một báo cáo lỗi sẽ được tạo và quy trình lặp lại để tạo mã.

Về cơ bản, quy trình làm việc sẽ như sau:

  1. Nhà phát triển viết các bài kiểm tra đơn vị.ev
  2. AI sẽ đọc các bài kiểm tra này và tạo ra mã cần thiết.
  3. Nếu các bài kiểm tra chạy thành công, mã sẽ được lưu. Nếu không, báo cáo lỗi sẽ được tạo và AI sẽ cố gắng sửa mã trong một vòng lặp.
  4. Quá trình tự động hóa ban đầu này có thể tạo ra mã dễ xảy ra lỗi, đây chính là lúc cơ chế phản hồi phát huy tác dụng.
  5. Các nhà phát triển viết các bài kiểm tra đơn vị và tác nhân phát triển tạo ra mã và phương thức cần thiết.
  6. Người kiểm tra mã sẽ kiểm tra mã và gửi phản hồi cho người phát triển.
  7. Tác nhân phát triển sẽ tinh chỉnh mã dựa trên phản hồi và gửi lại để xem xét.
  8. Chu trình này tiếp tục cho đến khi người kiểm tra mã chấp thuận mã.
  9. Sau khi được chấp thuận, các bài kiểm tra đơn vị sẽ được chạy. Nếu thành công, mã sẽ được lưu; nếu không, báo cáo lỗi sẽ được tạo và vòng lặp tiếp tục.

Bằng cách kết hợp cơ chế phản hồi, chất lượng mã được tạo ra sẽ được cải thiện đáng kể, đảm bảo đáp ứng các tiêu chuẩn cần thiết và vượt qua mọi bài kiểm tra một cách đáng tin cậy.

Kết luận

Tích hợp AI tạo sinh trong Phát triển theo hướng kiểm thử (TDD) có tiềm năng cách mạng hóa phát triển phần mềm. Bằng cách tự động tạo các bài kiểm tra đơn vị và mã tương ứng, các nhà phát triển có thể đảm bảo chất lượng mã cao hơn, giảm lỗi và hợp lý hóa quy trình làm việc của họ. Mặc dù có những thách thức cần vượt qua, nhưng lợi ích vượt xa những rào cản ban đầu, khiến đây trở thành một cách tiếp cận đầy hứa hẹn cho tương lai của mã hóa. Bạn có thể kiểm tra Người lập trình AI dự án nếu bạn quan tâm đến việc hỗ trợ lập trình bằng AI tạo sinh. 

định hướng tương lai

Có ba mục mà chúng tôi dự định xây dựng theo cách tiếp cận này:

  • Mở rộng hỗ trợ ngôn ngữ: Mặc dù chúng tôi tập trung vào Java, phương pháp này có thể được mở rộng sang các ngôn ngữ khác như Python, JavaScript, v.v.

  • Tạo bài kiểm tra tự động: Chúng ta có thể nhắc nhở AI tạo sinh viết các bài kiểm tra dựa trên các yêu cầu cấp cao do nhà phát triển cung cấp thay vì viết các bài kiểm tra theo cách thủ công. 

  • Mở rộng nhóm AI Agentic: Ngoài một người đánh giá mã đơn giản, chúng ta có thể giới thiệu các tác nhân chuyên biệt hơn như tác nhân QA để kiểm tra các trường hợp ngoại lệ, tác nhân hiệu suất để tối ưu hóa hiệu suất mã, v.v.

Chúng tôi khuyên mọi nhà phát triển phần mềm nên dành thời gian viết các trường hợp thử nghiệm chính xác và mạnh mẽ hơn, sau đó tận dụng sức mạnh của Trí tuệ nhân tạo để tạo ra mã chất lượng cao.