TestFlight — là dịch vụ chính thức của Apple dành cho kiểm thử beta các ứng dụng iOS, iPadOS, watchOS và tvOS. Thông qua TestFlight, nhà phát triển phân phối bản dựng tiền phát hành cho tới 10.000 người kiểm thử bên ngoài, thu thập phản hồi và báo cáo sự cố mà không cần xuất bản lên App Store. Theo Apple Developer Documentation, 2025, hơn 80% ứng dụng trên App Store sử dụng TestFlight trong giai đoạn chuẩn bị phát hành.
Những điểm chính
TestFlight là cách hợp pháp và duy nhất chính thức để phân phối ứng dụng iOS cho mục đích kiểm thử mà không cần xuất bản lên App Store. Dịch vụ được Apple ra mắt vào năm 2014 sau khi mua lại công ty cùng tên. Trước TestFlight, các nhà phát triển sử dụng phân phối Ad Hoc với giới hạn 100 thiết bị mỗi mùa — TestFlight đã loại bỏ giới hạn này và đơn giản hóa quy trình chỉ với vài cú nhấp chuột.
iOS có chính sách bảo mật nghiêm ngặt: một ứng dụng chỉ có thể được cài đặt trên thiết bị thông qua App Store hoặc sử dụng chứng chỉ đặc biệt. TestFlight giải quyết vấn đề kiểm thử beta bằng cách hoạt động như một proxy giữa nhà phát triển và người kiểm thử: Apple kiểm tra bản dựng theo các yêu cầu cơ bản, sau đó người kiểm thử nhận ứng dụng thông qua ứng dụng TestFlight từ App Store, điều này không yêu cầu tin tưởng vào các tệp chưa ký.
Có ba cách phân phối ứng dụng iOS bên ngoài App Store: Ad Hoc (giới hạn 100 thiết bị, yêu cầu UDID của từng thiết bị), Enterprise (phân phối nội bộ không giới hạn, yêu cầu chứng chỉ Enterprise của Apple với giá $299/năm) và TestFlight (tới 10.000 người kiểm thử, miễn phí, không yêu cầu thu thập UDID). TestFlight là lựa chọn tối ưu cho kiểm thử beta, Ad Hoc phù hợp cho kiểm thử thiết bị cụ thể và Enterprise dành cho ứng dụng doanh nghiệp.
Quy trình xuất bản bản dựng thông qua TestFlight bao gồm năm bước: xây dựng trong Xcode, tải lên App Store Connect qua Archive Organizer, xử lý của Apple, mời người kiểm thử và cài đặt ứng dụng qua ứng dụng TestFlight. Mỗi bước mất từ vài phút đến một giờ tùy thuộc vào độ phức tạp của dự án.
Bản dựng phải được tạo bằng chứng chỉ phân phối và hồ sơ cấp phép hợp lệ. Apple kiểm tra: tính hợp lệ của chứng chỉ, sự khớp của bundle identifier, không có API riêng tư, biểu tượng chính xác (1024×1024) và sự hiện diện của biểu tượng App Store. Nếu bản dựng không vượt qua kiểm tra, TestFlight hiển thị lỗi kèm mô tả vấn đề.
Sau khi tải lên, bản dựng trải qua quá trình xác minh tự động của Apple: phân tích tĩnh mã nhị phân, xác minh chữ ký số, quét việc sử dụng API riêng tư và phần mềm độc hại. Việc xử lý mất từ 15 phút đến 2 giờ cho bản dựng đầu tiên và thường 150 phút cho các bản dựng tiếp theo. Trạng thái xử lý được hiển thị trong Activity trong App Store Connect.
// Thiết lập TestFlight trong Swift AppDelegate
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Kiểm tra: ứng dụng có được cài đặt qua TestFlight không
if Bundle.main.appStoreReceiptURL?.lastPathComponent
== "sandboxReceipt" {
print("Phiên bản beta qua TestFlight")
}
return true
}
}
TestFlight chia người kiểm thử thành hai nhóm: Người kiểm thử nội bộ (Internal Testers) và Người kiểm thử bên ngoài (External Testers). Sự khác biệt nằm ở số lượng người tham gia, quyền truy cập vào bản dựng và sự cần thiết của việc xem xét của Apple. Chọn đúng nhóm sẽ tăng tốc quá trình kiểm thử và tuân thủ chính sách App Store.
Tới 100 người tham gia từ nhóm Apple Developer Program. Để mời người kiểm thử nội bộ, chỉ cần thêm Apple ID của họ trong App Store Connect — họ sẽ ngay lập tức có quyền truy cập vào tất cả bản dựng. Không yêu cầu xem xét của Apple. Lý tưởng cho kiểm thử khói hàng ngày và xác minh tính năng ở giai đoạn đầu.
Tới 10.000 người tham gia không thuộc nhóm phát triển. Bản dựng đầu tiên dành cho người kiểm thử bên ngoài trải qua quá trình xem xét cơ bản của Apple (thường 12 ngày). Các bản dựng tiếp theo có thay đổi không ảnh hưởng đến chức năng chính có thể vượt qua mà không cần xem xét lại. Người kiểm thử bên ngoài được mời qua email hoặc liên kết công khai.
| Tham số | Người kiểm thử nội bộ | Người kiểm thử bên ngoài |
|---|---|---|
| Số lượng tối đa | 100 | 10.000 |
| Xem xét của Apple | Không yêu cầu | Bản dựng đầu tiên — bắt buộc |
| Lời mời | Apple ID từ nhóm | Email / liên kết công khai |
| Thời hạn bản dựng | 90 ngày | 90 ngày |
| Quyền truy cập bản dựng | Tất cả cùng lúc | Chỉ nhóm hoạt động |
Việc tải bản dựng lên TestFlight được thực hiện qua Xcode, Application Loader hoặc dòng lệnh sử dụng xcrun. Phương pháp phổ biến nhất là qua Xcode Archive Organizer sau khi tạo kho lưu trữ dự án. Phương pháp thay thế là tự động hóa qua Fastlane cho đường ống CI/CD.
Tạo một kho lưu trữ (Product → Archive), mở Organizer, chọn kho lưu trữ và nhấp Distribute App. Chọn TestFlight làm phương pháp phân phối, chỉ định chứng chỉ và hồ sơ cấp phép. Xcode sẽ tải bản dựng lên App Store Connect, nơi nó sẽ xuất hiện sau khi xử lý. Toàn bộ quy trình mất 1020 phút cho lần tải đầu tiên.
Fastlane là công cụ phổ biến nhất để tự động hóa việc tải bản dựng lên TestFlight. Lệnh fastlane pilot tải bản dựng lên và quản lý người kiểm thử mà không cần mở Xcode. Tích hợp Fastlane với máy chủ CI/CD cho phép xuất bản bản dựng lên TestFlight tự động sau khi vượt qua tất cả bài kiểm tra.
# Fastfile — tải bản dựng lên TestFlight
default_platform(:ios)
lane :beta do
# Lấy chứng chỉ qua match
match(type: "appstore")
# Xây dựng và ký
build_app(
scheme: "MyApp",
export_method: "app-store",
workspace: "MyApp.xcworkspace"
)
# Tải lên TestFlight
pilot(
skip_waiting_for_build: true,
distribute_external: false,
notify_external_testers: false
)
end
Fastlane pilot tự động tải IPA lên App Store Connect, chờ xử lý (nếu skip_waiting_for_build = false) và chỉ định bản dựng cho các nhóm kiểm thử đã chọn. Lệnh distribute_external: true ngay lập tức gửi bản dựng đến người kiểm thử bên ngoài sau khi xử lý.
Không có Fastlane, bạn có thể sử dụng xcrun: xcrun altool --upload-app --file path/to/app.ipa --username YOUR_APPLE_ID --password @keychain:AC_PASSWORD. altool được Apple hỗ trợ cho môi trường CI và không yêu cầu giao diện đồ họa. Mật khẩu được truyền qua keychain hoặc mật khẩu dành riêng cho ứng dụng — không sử dụng mật khẩu văn bản thuần túy.
TestFlight cung cấp một số cơ chế phản hồi: biểu mẫu phản hồi tích hợp, tự động thu thập nhật ký sự cố, số liệu sử dụng và ảnh chụp màn hình. Nhóm nhận được tất cả dữ liệu trong App Store Connect mà không cần tích hợp SDK bên thứ ba cho kiểm thử beta.
Người kiểm thử mở ứng dụng TestFlight, chọn bản dựng của bạn và nhấp Send Feedback. Biểu mẫu cho phép gửi phản hồi văn bản, đính kèm ảnh chụp màn hình và chỉ định mức độ nghiêm trọng. Tất cả phản hồi được thu thập trong App Store Connect dưới TestFlight → Feedback. Nhà phát triển có thể trả lời phản hồi và người kiểm thử sẽ nhận được thông báo trong ứng dụng TestFlight.
Khi ứng dụng gặp sự cố, TestFlight tự động thu thập báo cáo sự cố: ngăn xếp cuộc gọi, phiên bản hệ điều hành, mẫu thiết bị và thời gian sự cố. Nhật ký sự cố có sẵn trong Xcode Organizer (Crashes) và App Store Connect (TestFlight → Crashes). Để có nhật ký sự cố đã được biểu tượng hóa, bạn cần tải tệp dSYM lên cùng với bản dựng hoặc riêng biệt qua Xcode.
TestFlight hiển thị số liệu: số lượng cài đặt, người kiểm thử hoạt động, phiên và sự cố. Phân tích được cập nhật hàng ngày và giúp đánh giá mức độ tương tác của người kiểm thử. Nếu không có người kiểm thử nào mở ứng dụng trong một tuần, cần xem xét lại giao tiếp với nhóm hoặc chất lượng bản dựng.
TestFlight là một phần không thể thiếu của quy trình xuất bản trên App Store. Cùng một bản dựng đã vượt qua kiểm thử beta qua TestFlight có thể được gửi đi xem xét của Apple mà không cần xây dựng lại — chỉ cần nhấp một nút trong App Store Connect. Điều này loại bỏ rủi ro bản dựng sản xuất khác với bản dựng đã kiểm thử.
Trong App Store Connect, chọn bản dựng đã vượt qua kiểm thử và nhấp Submit for Review. Apple sử dụng cùng bản dựng từ TestFlight — không cần tải lại. Thời gian xem xét thường là 13 ngày. Nếu bản dựng bị từ chối, hãy sửa lỗi, tải bản dựng mới lên TestFlight và lặp lại quy trình.
Nên đợi 2448 giờ sau vòng kiểm thử cuối cùng trong TestFlight trước khi gửi đi xem xét. Thời gian này cho phép người kiểm thử tìm ra lỗi nghiêm trọng có thể vượt qua các kiểm tra tự động. Bản dựng ứng viên phát hành (RC) trong TestFlight là thông lệ tiêu chuẩn của các nhóm iOS chuyên nghiệp.
Các bản dựng TestFlight tự động không khả dụng cho cài đặt mới sau khi phiên bản phát hành được đưa lên App Store. Người kiểm thử đã cài đặt phiên bản beta có thể tiếp tục sử dụng trong 30 ngày sau khi phát hành, sau đó ứng dụng ngừng mở. Đảm bảo người kiểm thử cập nhật lên phiên bản App Store.
Câu hỏi thường gặp
TestFlight hoàn toàn miễn phí cho thành viên Apple Developer Program ($99/năm). Không tính phí bổ sung cho việc sử dụng dịch vụ, bất kể số lượng bản dựng và người kiểm thử. Bạn chỉ trả phí đăng ký nhà phát triển Apple — TestFlight được bao gồm theo mặc định.
Không, TestFlight là dịch vụ độc quyền của hệ sinh thái Apple. Đối với Android, có một công cụ tương tự — Google Play Console với các đường dẫn Internal Testing và Open Testing. Để xuất bản phiên bản beta trên Android, Firebase App Distribution và DeployGate cũng được sử dụng.
Việc xử lý mất từ 15 phút đến 2 giờ cho bản dựng đầu tiên sau khi tải lên. Các bản dựng tiếp theo được xử lý nhanh hơn — thường 150 phút. Thời gian xử lý phụ thuộc vào tải máy chủ Apple. Bạn có thể theo dõi trạng thái trong App Store Connect tại phần Activity.
Mỗi bản dựng có sẵn để kiểm thử trong 90 ngày kể từ thời điểm tải lên. Số lượng bản dựng không bị giới hạn, nhưng không thể có hơn 30 bản dựng hoạt động cùng lúc. Các bản dựng cũ tự động bị xóa khi hết hạn hoặc đạt giới hạn.
Để tham gia kiểm thử qua TestFlight, cần có Apple ID. Người kiểm thử bên ngoài được mời qua liên kết email — khi mở liên kết lần đầu, hệ thống sẽ đề nghị tạo Apple ID nếu họ chưa có. Một liên kết công khai cũng có sẵn để phân phối trên mạng xã hội hoặc blog.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm