DoorDash sử dụng Copilot để chuyển đổi bộ kiểm thử iOS từ XCTest sang Swift Testing
DoorDash đã triển khai Copilot kết hợp với các quy trình đảm bảo độ tin cậy nghiêm ngặt để di chuyển bộ kiểm thử iOS từ XCTest sang Swift Testing. Kỹ sư Matheus Gois cho biết quá trình này giúp hiện đại hóa hệ thống kiểm thử quy mô lớn một cách nhanh chóng, an toàn và cải thiện hiệu suất đáng kể.

DoorDash sử dụng Copilot để chuyển đổi bộ kiểm thử iOS từ XCTest sang Swift Testing
DoorDash đã triển khai Copilot kết hợp với các quy trình đảm bảo độ tin cậy nghiêm ngặt để di chuyển bộ kiểm thử iOS từ XCTest sang Swift Testing. Kỹ sư Matheus Gois cho biết quá trình này giúp hiện đại hóa hệ thống kiểm thử quy mô lớn một cách nhanh chóng, an toàn và cải thiện hiệu suất đáng kể.
Hiệu suất vượt trội và chẩn đoán lỗi tốt hơn
Theo Matheus Gois, các kỹ sư tại DoorDash kỳ vọng việc chuyển đổi sẽ mang lại hiệu suất tốt hơn và khả năng chẩn đoán lỗi (failure diagnostics) vượt trội. Các điểm chuẩn (benchmarks) đã xác nhận rằng Swift Testing nhanh hơn XCTest từ 4 đến 7 lần, chủ yếu nhờ khả năng chạy kiểm thử song song cho cả mã đồng bộ và bất đồng bộ. Ngoài ra, macro #expect cung cấp thông báo lỗi chi tiết hơn, giúp tăng tốc quá trình gỡ lỗi.
Trước đó, các lần chạy XCTest chậm và chủ yếu được tuần tự hóa đã làm tắc nghẽn các đường ống tích hợp liên tục (CI) của DoorDash. Khi các ứng dụng và gói chia sẻ phát triển, bước kiểm thử trong CI kéo dài đến hàng chục phút, tiêu tốn nhiều tài nguyên CI hơn và làm chậm tốc độ lặp lại của mọi kỹ sư.
Chiến lược di chuyển tự động hóa
Để việc di chuyển có thể mở rộng quy mô trên toàn công ty, DoorDash đã kết hợp tự động hóa với các nguyên tắc kỹ thuật rõ ràng: mỗi đội ngũ chịu trách nhiệm chuyển đổi các bài kiểm thử của riêng mình bằng cách sử dụng bộ công cụ chung và hướng dẫn chia sẻ; phương pháp tiếp cận ưu tiên công cụ đảm bảo quy trình làm việc nhất quán, có thể lặp lại cho tất cả các đội; và các cổng độ tin cậy nghiêm ngặt giúp giảm thiểu rủi ro không ổn định (flakiness) trong các bài kiểm thử đã chuyển đổi.
Các kỹ sư DoorDash đã xây dựng một môi trường thân thiện với nhà phát triển sử dụng trợ lý lập trình AI Cursor, SweetPad để tích hợp Visual Studio Code/Xcode và một máy chủ MCP tùy chỉnh cho phép kỹ sư xây dựng mục tiêu và chạy kiểm thử trước và sau khi di chuyển trực tiếp trong trình soạn thảo.
Công cụ chính được sử dụng là execute_vscode_command, nhận một commandId như sweetpad.build.build hoặc sweetpad.build.test và chạy hành động đó. Máy chủ khởi động tự động khi tiện ích mở rộng SweetPad được kích hoạt và dừng khi trình soạn thảo đóng lại.
"Dạy" AI chuyển đổi kiểm thử
Để "dạy" Cursor cách di chuyển kiểm thử, họ đã định nghĩa một "quy tắc di chuyển" tự động hóa hầu hết các chuyển đổi cơ học từ XCTest sang Swift Testing, chẳng hạn như thay đổi câu lệnh import, chuyển đổi XCTAssert sang #expect, chèn macro @Test và xử lý async/await khi cần, v.v. Điều này cho phép các kỹ sư tập trung vào tính chính xác thay vì thay đổi cú pháp.
Để đảm bảo độ tin cậy, mỗi bài kiểm thử đã chuyển đổi phải vượt qua 10 lần chạy liên tiếp, loại bỏ mọi sự không ổn định và độ nhạy về thời gian trước khi được áp dụng.
Tích hợp Bazel và phát hiện lỗi ẩn
Giữa chừng quá trình di chuyển, các kỹ sư DoorDash đã áp dụng Bazel, yêu cầu họ mở rộng quy trình tác nhân của mình một chút. Cụ thể, họ bao gồm các lệnh bazel test trực tiếp trong prompt, cho phép tác nhân chạy kiểm thử cục bộ mà không cần can thiệp thủ công. Điều này cũng hỗ trợ một vòng lặp lặp lại trong đó tác nhân sẽ chạy kiểm thử và khắc phục mọi lỗi phát sinh, sau đó lặp lại quy trình cho đến khi thực thi sạch sẽ.
Điều này giữ cho Bazel ở trung tâm của câu chuyện độ tin cậy. Không quan trọng việc kiểm thử được kích hoạt từ thiết bị đầu cuối cục bộ hay thông qua SweetPad và Cursor. Các mục tiêu giống nhau được chạy, quy tắc 10 lần chạy giống nhau được áp dụng và mọi gói đều được giữ theo cùng một tiêu chuẩn.
Quy trình này đã làm lộ ra các vấn đề ẩn—như trạng thái chia sẻ, phụ thuộc thứ tự và các giả định về thời gian—tất cả đều bị che khuất bởi việc thực thi tuần tự chủ yếu của XCTest nhưng bị Swift Testing phơi bày nhờ mô hình song song của nó.
Kết quả đạt được
Nhìn chung, việc chuyển đổi sang Swift Testing mang lại thời gian thực thi kiểm thử nhanh hơn khoảng 60% trong CI, thời gian xây dựng (build) tổng thể nhanh hơn khoảng 40%, giảm chi phí hạ tầng và lấy lại thời gian của nhà phát triển.
Bài viết liên quan

Phần mềm
Công cụ AI đang tạo ra "nợ kỹ thuật" trong hệ thống IoT như thế nào và giải pháp là gì?
04 tháng 5, 2026

Công nghệ
Tin tức Java tuần: Cập nhật JDK 27, Spring AI 2.0, GlassFish 9.0 và Gradle 9.5
04 tháng 5, 2026

Phần mềm
Roq: Trình tạo trang web tĩnh dựa trên Quarkus đạt tốc độ ngang ngửa Go
04 tháng 5, 2026
