TestFlight: kiểm thử app iPhone trước khi gửi Apple
Bởi Mehdi Azizi
Cập nhật ngày , 8 phút
Tester nội bộ hay bên ngoài, beta review, link công khai, build dùng được 90 ngày: giải thích TestFlight đơn giản, kèm danh sách cần kiểm tra trước khi gửi Apple.
TestFlight là gì và dùng để làm gì?
TestFlight là dịch vụ của Apple cho phép bạn cài app lên iPhone thật trước khi phát hành trên App Store. Bạn gửi một build lên App Store Connect, mời tester, và họ cài app bằng ứng dụng TestFlight, miễn phí trên App Store. Có hai loại tester: tester nội bộ, tối đa 100 thành viên trong nhóm của bạn, không cần Apple review; và tester bên ngoài, tối đa 10.000 người, được mời qua email hoặc link công khai, sau khi build đầu tiên của bạn qua beta review. Mỗi build có thể kiểm thử trong 90 ngày.
| Tiêu chí | Tester nội bộ | Tester bên ngoài |
|---|---|---|
| Số lượng tối đa | 100 | 10.000 |
| Truy cập tài khoản của bạn | Có, kèm một vai trò | Không |
| Cách mời | Thêm vào nhóm nội bộ | Email hoặc link công khai |
| Beta review của Apple | Không có | Với build đầu tiên |
| Dành cho ai | Bạn, cộng sự, người thân | Bạn bè, người dùng đầu tiên |
Để dùng TestFlight, bạn cần một tài khoản Apple Developer trả phí: dịch vụ này không dùng được với tài khoản miễn phí. Toàn bộ phần còn lại của hướng dẫn này giả định bạn đã có tài khoản đó, thuộc chương trình tiêu chuẩn: chương trình Enterprise của Apple không cho phép dùng TestFlight.
Với các app của mình, mọi build gửi bằng EAS Submit đều đi qua TestFlight và qua iPhone của mình trước khi gửi review. Đó là nơi mình phát hiện những lỗi không thấy được khi đang phát triển.
Gửi build lên TestFlight
Build là một phiên bản đã được biên dịch và ký của app: nếu ký sai, Apple sẽ từ chối ngay khi gửi với lỗi ITMS-90034. Để build xuất hiện trong TestFlight, bạn phải gửi nó lên App Store Connect. Với Expo, đó là eas build --platform ios rồi eas submit --platform ios, với một build image đủ mới để tránh ITMS-90725. Theo tài liệu của Expo, build sẽ xuất hiện trong TestFlight sau khi Apple xử lý xong, thường mất 10 đến 15 phút. Bạn có thể làm tất cả từ PC: bài phát hành app iOS không cần Mac mô tả chi tiết toàn bộ quy trình.
Hai chi tiết thường làm bạn bị kẹt ở lần đầu:
- Số build phải thay đổi ở mỗi lần gửi. Apple từ chối hai build có cùng số cho cùng một phiên bản. Với EAS, hãy bật tự động tăng số build là bạn không phải nghĩ đến nữa.
- Câu hỏi về mã hóa. Chừng nào bạn chưa trả lời câu hỏi về việc dùng mã hóa, build vẫn bị chặn với trạng thái Missing Compliance. Bạn có thể trả lời mỗi lần trong App Store Connect, hoặc khai báo một lần duy nhất trong cấu hình app.
Tester nội bộ: nhóm của bạn, không phải chờ
Tester nội bộ là người dùng trong tài khoản App Store Connect của bạn, có vai trò được gán. Apple cho phép tối đa 100 người, và mỗi người có thể cài app trên nhiều thiết bị, tối đa 30.
Ưu điểm lớn: không cần beta review. Ngay khi build xử lý xong, không có lỗi tự động như ITMS-90717, bạn thêm nó vào nhóm nội bộ và build sẵn sàng ngay. Đây là nhóm phù hợp cho bạn, và cho cộng sự hay người thân mà bạn cấp quyền truy cập tài khoản.
Giới hạn: bạn phải thêm họ làm người dùng trong tài khoản App Store Connect. Không phù hợp với người lạ.
Tester bên ngoài và beta review
Tester bên ngoài không cần quyền truy cập tài khoản của bạn. Bạn có thể mời tối đa 10.000 người, qua email hoặc link công khai. Đây là nhóm phù hợp cho bạn bè, người dùng đầu tiên, một cộng đồng.
Đổi lại, Apple kiểm tra build trước khi mở cho họ. Khi bạn thêm build đầu tiên của một phiên bản vào nhóm bên ngoài, build sẽ được gửi đi beta review. Các build sau của cùng phiên bản không nhất thiết phải qua review đầy đủ.
Trước khi gửi, App Store Connect yêu cầu thông tin kiểm thử:
- mô tả bản beta, cho tester biết họ cần xem gì;
- một địa chỉ email để nhận phản hồi;
- thông tin liên hệ của bạn, để Apple có thể liên lạc.
Beta review không phải là review của App Store. Một build được chấp nhận trên TestFlight vẫn có thể bị từ chối khi phát hành.
Beta review kiểm tra build có tuân thủ quy định không, nhưng review cuối còn xem cả trang app, gói đăng ký, văn bản pháp lý và toàn bộ trải nghiệm. Hãy nhớ các lý do bị từ chối thường gặp, được kể trong bài vì sao Apple từ chối app.
Mời tester bằng link công khai
Link công khai là cách đơn giản nhất để cho những người bạn chưa quen biết thử app. Đây là các bước theo hướng dẫn của Apple, với nhãn giao diện bằng tiếng Anh:
- Trong App Store Connect, mở app rồi mở tab TestFlight.
- Trong mục External Testing, chọn nhóm bên ngoài của bạn.
- Nhấn Create Public Link.
- Chọn Open to Anyone để mở link cho mọi người, hoặc Filter by Criteria để giới hạn theo một số thiết bị và phiên bản iOS.
- Nếu muốn, đặt giới hạn số tester bằng Set Limit.
Sau đó bạn chia sẻ link ở đâu tùy ý: tin nhắn, mạng xã hội, email. Người nhận cài app TestFlight, mở link và chấp nhận lời mời.
Hai điều cần biết trước khi phát tán rộng:
- Hãy đặt giới hạn. Nếu link lan truyền nhiều hơn dự kiến, bạn vẫn kiểm soát được số lượng tester.
- Tester qua link công khai là ẩn danh. Với họ, App Store Connect chỉ hiển thị ngày cài đặt, số phiên sử dụng và các lần crash. Nếu bạn muốn biết ai đã thử gì, hãy mời qua email.
Một build TestFlight dùng được bao lâu?
Một build có sẵn cho tester trong 90 ngày. Quá thời hạn đó, build hết hạn và tester không mở được nữa. Nếu bản beta kéo dài hơn, chỉ cần gửi build mới trước khi hết hạn.
Trên thực tế, bạn sẽ gửi build mới thường xuyên hơn nhiều: mỗi lần sửa lỗi quan trọng. Mỗi build mới được thêm vào nhóm sẽ được đề xuất cho tester, và họ tải về trong app TestFlight.
Thu thập phản hồi từ tester
TestFlight có sẵn hệ thống phản hồi: tester chụp màn hình trong app của bạn, có thể ghi chú lên đó, rồi gửi cho bạn. Nếu app crash, bạn nhận được báo cáo crash, và tester có thể bổ sung ngữ cảnh. Bạn xem tất cả trong App Store Connect.
Hữu ích, nhưng chưa đủ để hiểu rõ một lỗi crash cụ thể. Với các app của mình, mình thêm Sentry, công cụ báo lỗi kèm dòng code gây lỗi, và PostHog, công cụ cho thấy người dùng bỏ cuộc ở đâu. Cả hai đều chạy trong build TestFlight lẫn bản production.
Kiểm thử gói đăng ký trong TestFlight
Nếu app của bạn bán gói đăng ký, TestFlight là nơi bạn kiểm tra xem nó có thật sự hoạt động không. Các giao dịch mua trong build TestFlight đi qua môi trường kiểm thử của Apple: tester không bị trừ tiền. Việc gia hạn được tăng tốc: mỗi gói đăng ký gia hạn một lần mỗi ngày, tối đa sáu lần trong một tuần, bất kể thời hạn thực tế là bao lâu.
Tối thiểu, hãy kiểm tra giá hiển thị có đúng không, việc mua có mở khóa app không, và nút khôi phục có tìm lại được gói đăng ký sau khi cài lại không. Mình dùng RevenueCat để quản lý gói đăng ký cho các app của mình; toàn bộ cách thiết lập, từ sản phẩm trên App Store Connect đến paywall, được mô tả trong trang gói đăng ký in-app iOS.
Những gì bạn cần kiểm thử trước khi gửi Apple
Đây là danh sách mình áp dụng trước mỗi lần gửi review. Mỗi mục tương ứng với một lý do bị từ chối hoặc một lỗi crash có thể tránh được.
Lần mở đầu tiên
- Xóa app, cài lại từ TestFlight, mở lên. Đó là điều reviewer sẽ làm.
- Đi hết phần onboarding, không bỏ qua bước nào.
- Từ chối từng quyền (thông báo, camera, vị trí) và kiểm tra app vẫn hoạt động.
Tiền bạc
- Paywall hiển thị giá, thời hạn và link đến điều khoản sử dụng và chính sách quyền riêng tư.
- Mua hoạt động, khôi phục cũng vậy.
- Tất cả sản phẩm đã cấu hình đều hiển thị cho reviewer: guideline 2.1 yêu cầu in-app purchase phải đầy đủ, hiển thị và hoạt động được.
Điều kiện khó
- Chế độ máy bay và mạng chậm: một thông báo rõ ràng, không phải màn hình trắng.
- iPhone nhỏ nhất và lớn nhất mà bạn hỗ trợ: không có gì bị cắt, không có gì bị bàn phím che. Chính một màn hình bị cắt trên iPhone nhỏ đã khiến Solys bị từ chối.
- Các đoạn văn bản dài, nếu app của bạn được dịch.
Hồ sơ cho reviewer
- Nếu app yêu cầu đăng nhập, hãy để một tài khoản demo trong ghi chú review, và giữ backend đang chạy. Guideline 2.1 yêu cầu điều này rõ ràng.
- Ghi chú review giải thích trong hai câu app làm gì và tìm chức năng chính ở đâu.
Nếu dù vậy app vẫn bị từ chối, trang app bị Apple từ chối giải thích cách phản hồi mà không mất cả tuần. Còn để có cái nhìn tổng quan về việc phát hành, từ trang app đến lúc ra mắt, hãy đọc phát hành app lên App Store.
Bảng kiểm thử để điền cho build của bạn
Tải bảng 16 kịch bản định dạng CSV. Bảng tách riêng phần chuẩn bị, thao tác cần thực hiện, kết quả mong đợi và bằng chứng quan sát được. Hãy nhập vào Numbers, Excel hoặc Google Sheets, rồi điền phiên bản, thiết bị và kết quả của từng lần thử.
Với một app sổ ghi chép đọc sách giả định, “lưu một trang” là chưa đủ: hãy ghi trang 24, đóng hẳn app, mở lại và tìm lại giá trị đó. Một bài kiểm thử chưa được thực hiện thì vẫn để “Cần kiểm thử”. Nếu app của bạn không có gói đăng ký, hãy ghi “Không áp dụng” cho các kịch bản mua, kèm lý do đó.
Bảng này là điểm khởi đầu để bạn điều chỉnh, không phải chứng nhận. Bạn cũng có thể xem ghi chú App Review và các mẫu miễn phí khác để giải thích cho reviewer luồng sử dụng mà bạn đã thật sự kiểm tra.
Từ TestFlight đến App Store
TestFlight là bước app của bạn trở nên thật: nó chạy trên iPhone thật, trong tay người thật. Trong lộ trình của iOS Kit, đây là bước thứ hai: xây phần lõi của app và kiểm thử trên iPhone bằng TestFlight, trước khi gắn gói đăng ký rồi chuẩn bị phát hành.
Sau TestFlight là review của Apple: Apple Review Kit gom checklist của mình trước khi gửi và các ghi chú cho người kiểm duyệt. Trang chủ trình bày bốn bước để tạo app di động của bạn với Claude Code.
Không ai có thể đảm bảo Apple sẽ chấp nhận app của bạn: quyết định là của Apple.
Câu hỏi thường gặp
Làm sao kiểm thử app iPhone bằng TestFlight?
Gửi một build lên App Store Connect, rồi thêm nó vào một nhóm tester. Với Expo, bạn biên dịch bằng EAS Build và gửi bằng EAS Submit: build xuất hiện trong TestFlight sau khi Apple xử lý xong, thường mất 10 đến 15 phút theo Expo. Tester cài app bằng ứng dụng TestFlight, miễn phí trên App Store. Bạn cần một tài khoản Apple Developer trả phí.
Làm sao tạo link TestFlight để mời tester?
Trong App Store Connect, mở tab TestFlight của app, chọn nhóm trong mục External Testing và nhấn Create Public Link. Chọn Open to Anyone hoặc Filter by Criteria, rồi đặt giới hạn bằng Set Limit. Tester qua link công khai là ẩn danh: nếu bạn muốn biết ai đã thử gì, hãy mời họ qua email.
Beta review của TestFlight có thay thế review của App Store không?
Không. Beta review kiểm tra build có tuân thủ quy định không, nhưng review cuối còn xem cả trang app, age rating, gói đăng ký, văn bản pháp lý và toàn bộ trải nghiệm. Vì vậy một build được chấp nhận trên TestFlight vẫn có thể bị từ chối khi phát hành. Chỉ tester bên ngoài mới kích hoạt beta review, với build đầu tiên của một phiên bản: tester nội bộ không phải qua review nào.
Có thể mời bao nhiêu tester trên TestFlight?
Bạn có thể mời tối đa 100 tester nội bộ và tối đa 10.000 tester bên ngoài. Tester nội bộ là thành viên trong tài khoản App Store Connect của bạn, không cần beta review, và mỗi người có thể cài app trên tối đa 30 thiết bị. Tester bên ngoài được mời qua email hoặc link công khai, sau khi build đầu tiên qua beta review. Mỗi build có thể kiểm thử trong 90 ngày.
Có thể thử gói đăng ký trong TestFlight mà không bị trừ tiền không?
Có, các giao dịch mua trong build TestFlight đi qua môi trường kiểm thử của Apple: tester không bị trừ tiền. Việc gia hạn được tăng tốc: mỗi gói đăng ký gia hạn một lần mỗi ngày, tối đa sáu lần trong một tuần, bất kể thời hạn thực tế là bao lâu. Tối thiểu, hãy kiểm tra giá hiển thị, việc mở khóa app và khôi phục sau khi cài lại. Cách thiết lập đầy đủ được mô tả trong gói đăng ký in-app iOS.
Cần kiểm tra gì trên TestFlight trước khi gửi app cho Apple?
Cài lại app từ TestFlight, như reviewer sẽ làm, và đi hết phần onboarding. Từ chối từng quyền, thử mua và khôi phục, rồi thử chế độ máy bay, iPhone nhỏ nhất và lớn nhất mà bạn hỗ trợ. Nếu app yêu cầu đăng nhập, hãy chuẩn bị một tài khoản demo trong ghi chú review, và giữ backend đang chạy.