External Testing và Internal Testing trên TestFlight là gì? So sánh chi tiết
Trên hệ thống App Store Connect của Apple, dịch vụ thử nghiệm TestFlight chia làm 2 kênh thử nghiệm riêng biệt: Internal Testing (Thử nghiệm Nội bộ) và External Testing (Thử nghiệm Bên ngoài). Rất nhiều nhà phát triển ứng dụng iOS mới dán nhầm email tester vào sai nhóm dẫn đến việc tester không thể tải được app. Bài viết này so sánh chi tiết hai kênh này.
Trả lời ngắn gọn: External Testing là kênh phát hành bản Beta cho tối đa 10.000 người dùng bên ngoài công ty, bắt buộc bản build đầu tiên phải qua vòng Beta App Review của Apple. Internal Testing là kênh dành cho tối đa 100 thành viên đã có tài khoản App Store Connect, không cần duyệt và nhận được bản build ngay lập tức sau khi upload.
1. TestFlight Internal Testing là gì? (Thử nghiệm Nội bộ)
Internal Testing là kênh thử nghiệm dành riêng cho các thành viên trong đội ngũ phát triển ứng dụng (như Developer, QA, Designer, Manager) có tài khoản liên kết với App Store Connect của bạn.
Đặc điểm của Internal Testing:
- Số lượng tối đa: Giới hạn 100 tester nội bộ.
- Điều kiện tham gia: Tester phải được phân quyền tài khoản App Store Connect (với các role: Admin, App Manager, Developer, hoặc Tester).
- Thời gian duyệt: TỨC THÌ (Instant). Ngay sau khi bạn upload bản build từ Xcode thành công, tester nội bộ nhận được notification và cài đặt test được ngay mà KHÔNG CẦN QUA BẤT KỲ VÒNG DUYỆT NÀO CỦA APPLE.
2. TestFlight External Testing là gì? (Thử nghiệm Bên ngoài)
External Testing là kênh thử nghiệm mở rộng dành cho người dùng phổ thông, khách hàng trải nghiệm sớm hoặc cộng đồng beta tester bên ngoài công ty.
Đặc điểm của External Testing:
- Số lượng tối đa: Lên tới 10.000 tester công khai.
- Điều kiện tham gia: Bất kỳ ai có địa chỉ Email Apple ID hoặc bấm vào đường link mời công khai (Public Link).
- Thời gian duyệt: BẮT BUỘC QUA VÒNG BETA APP REVIEW. Bản build đầu tiên nộp lên External Testing phải gửi cho nhân viên Apple kiểm duyệt nội dung và chính sách (thường mất từ 12 - 24 giờ). Sau khi bản đầu được thông qua, các bản update nhỏ tiếp theo sẽ được duyệt tự động.
3. Bảng so sánh chi tiết TestFlight Internal vs External Testing
| Tiêu chí | Internal Testing | External Testing |
|---|---|---|
| Số lượng tester tối đa | 100 người | 10.000 người |
| Số nhóm tối đa | Không giới hạn nhóm nội bộ | Tối đa 100 nhóm |
| Điều kiện tham gia | Phải có tài khoản trong App Store Connect Users | Chỉ cần Email Apple ID hoặc bấm Public Link |
| Beta App Review | Miễn hoàn toàn | Bắt buộc với bản build đầu tiên |
| Thời gian tester nhận được bản build | Vài phút sau khi Xcode xử lý xong | 12 tới 24 giờ chờ duyệt lần đầu |
| Chi phí mỗi tester chiếm chỗ | Chiếm một suất trong 100 chỗ của tài khoản | Không chiếm suất tài khoản |
| Có Public Link không | Không | Có |
| Thời hạn mỗi bản build | 90 ngày | 90 ngày |
| Mục đích chính | Test nhanh tính năng mới trong nội bộ đội ngũ | Thu thập phản hồi diện rộng từ người dùng thật |
4. Beta App Review: rào cản duy nhất của External Testing
Đây là điểm khiến hai kênh khác nhau về bản chất chứ không chỉ khác về con số. Nhiều đội lên kế hoạch phát hành theo lịch Internal rồi vỡ trận vì quên mất khoản chờ duyệt của External.
Beta App Review khác App Review chính thức thế nào?
Beta App Review là vòng kiểm duyệt rút gọn, Apple chỉ soi các vấn đề nghiêm trọng như app crash ngay khi mở, nội dung vi phạm pháp luật, thiếu thông tin đăng nhập thử nghiệm, hoặc dùng API riêng tư. Vòng này không xét các tiêu chí thương mại như chất lượng metadata hay mức độ hoàn thiện tính năng như vòng duyệt phát hành chính thức.
Quan trọng nhất: sau khi bản build đầu tiên của một số phiên bản được duyệt, các bản build tăng số hiệu tiếp theo trong cùng phiên bản đó thường được duyệt tự động gần như tức thì. Nhưng khi bạn nâng số phiên bản, ví dụ từ 1.2 lên 1.3, chu kỳ chờ duyệt lại bắt đầu từ đầu.
Bốn lý do khiến bản build bị chặn ở Beta App Review
- Thiếu tài khoản đăng nhập thử nghiệm: App có màn hình đăng nhập mà bạn không cung cấp tài khoản demo trong mục thông tin đánh giá. Đây là lý do phổ biến nhất và cũng dễ tránh nhất.
- Ô What to Test bỏ trống hoặc viết qua loa: Người duyệt cần biết cần thử nghiệm cái gì. Viết một dòng chung chung kiểu sửa lỗi lặt vặt là dấu hiệu xấu.
- Tính năng chưa hoàn thiện lộ ra ngoài: Nút bấm không có tác dụng, màn hình trắng, chữ giữ chỗ chưa thay. Chi tiết cách xử lý xem bài khắc phục lỗi Guideline 2.1 App Completeness.
- Khai báo quyền riêng tư thiếu: App thu thập dữ liệu nhưng chưa khai báo trong mục App Privacy, xem bài Guideline 5.1.1 Data Collection.
5. Sai lầm thường gặp khi phân nhóm tester
- Nhét khách hàng vào nhóm Internal: Muốn làm vậy bạn phải cấp cho họ quyền truy cập App Store Connect, đồng nghĩa họ nhìn thấy doanh thu, dữ liệu người dùng và cả các ứng dụng khác trong tài khoản. Đây là lỗ hổng bảo mật nghiêm trọng, khách hàng luôn phải nằm ở nhóm External.
- Dùng chung một nhóm External cho mọi mục đích: Khi cần gửi một bản build thử nghiệm riêng cho một khách hàng, cả nghìn người trong nhóm cũng nhận được thông báo. Hãy tách nhóm theo mục đích ngay từ đầu.
- Quên rằng Internal chỉ có 100 suất cho toàn bộ tài khoản: Con số 100 này tính trên cả tài khoản chứ không phải trên mỗi ứng dụng. Công ty có nhiều app rất dễ chạm trần mà không hiểu vì sao không thêm được người.
- Mời bằng email cá nhân không phải Apple ID: Lời mời TestFlight bám theo Apple ID. Gửi tới một email mà tester không dùng làm Apple ID thì họ nhận được thư nhưng không nhận được bản build.
6. Nên chọn kênh TestFlight nào cho dự án của bạn?
Dùng Internal Testing khi: Bạn đang ở giai đoạn lập trình ban đầu, cần đưa bản build cho sếp hoặc coder trong team cài thử trên iPhone để bắt lỗi nhanh. Ưu điểm lớn nhất là vòng lặp sửa lỗi cực ngắn, đẩy build lên là vài phút sau cả đội đã có bản mới trên máy.
Dùng External Testing khi: Ứng dụng đã tương đối hoàn thiện, bạn muốn tạo link TestFlight công khai (Public Link) chia sẻ lên mạng xã hội để mời hàng nghìn người dùng dùng thử trước khi bấm đăng ký phát hành lên App Store.
Quy trình chuẩn của một đội chuyên nghiệp là dùng cả hai theo thứ tự: đẩy build lên Internal để đội ngũ soát lỗi rõ ràng trong 1 tới 2 ngày, sau đó mới chuyển đúng bản build đó sang nhóm External và nộp Beta App Review. Làm ngược lại sẽ khiến bạn tiêu tốn lượt duyệt cho những bản build còn lỗi hiển nhiên.
Nếu bạn phát hành song song cả hai nền tảng, tham khảo bài so sánh TestFlight với Google Play Closed Testing để nắm khác biệt về chính sách 12 tester 14 ngày bên Android.
Tham khảo thêm bài viết TestFlight là gì & cách mời tester A-Z và bài bảng so sánh chi phí Google Developer $25 vs Apple $99/năm.