TestFlight 简介
TestFlight 是苹果官方的 Beta 测试分发工具,内置在 App Store Connect 中,无需额外付费,支持 iOS / iPadOS / macOS / tvOS / watchOS。
TestFlight 是什么
TestFlight 让你可以在正式上架前,把构建(Build)分发给真实用户进行测试。它解决的核心问题是:
- 真机验证:模拟器无法覆盖的推送、相机、定位、性能、审核路径,需要真机。
- 小范围灰度:在面向全部用户之前,先让一部分人试,发现问题成本更低。
- 收集反馈:测试员可以直接在 TestFlight App 内反馈,崩溃也能自动上报。
和 Ad Hoc 相比,TestFlight 不需要注册测试设备的 UDID,测试员只要安装 TestFlight App、接受邀请即可,管理成本低得多。
两种测试方式
| 维度 | 内部测试(Internal) | 外部测试(External) |
|---|---|---|
| 适用对象 | 团队成员(开发、QA、产品) | 外部真实用户 / 客户 |
| 人数上限 | 100 人 | 10,000 人 |
| 是否需要审核 | 不需要(Beta App Review) | 需要(首次提交该版本需审核) |
| 邀请方式 | 通过成员邮箱添加 | 邮箱邀请 / 公开链接 |
| 测试员是否必须是团队成员 | 是 | 否 |
| 反馈入口 | TestFlight App 内反馈 | 同左 |
「内部测试不需要审核」是相对快,但内部测试员必须是团队成员(Admin / App Manager / Developer 等角色),而且只支持 100 人;要给外部用户测试,必须走外部测试。
基本工作流程
一次完整的 TestFlight 测试,通常包含以下步骤:
- 构建并上传:用 Xcode、Transporter 或 CI(fastlane)上传带有分发证书签名的构建到 App Store Connect。
- 等待处理:构建在 App Store Connect 中「处理中(Processing)」,通常几分钟到几十分钟。
- 创建测试组:在 TestFlight 页面创建内测/外测组,并关联构建。
- 添加测试员:内测添加团队成员;外测添加邮箱或开启公开链接。
- 安装与测试:测试员安装 TestFlight App,接受邀请,下载构建进行测试。
- 收集反馈:测试员在 App 内反馈问题,或通过崩溃报告上报。
- 修复迭代:根据反馈修复问题,上传新构建,重复以上流程。
- 提审上架:测试通过后,把最终构建提交 App Store 审核。
构建有效期
TestFlight 构建在上传后 90 天过期。也就是说,如果 90 天内没有持续上传新构建,旧构建会失效,测试员将无法再安装。这是你需要保持「持续迭代节奏」的硬性约束。
关键概念速览
| 概念 | 说明 |
|---|---|
| Build(构建) | 一次编译打包的产物,有唯一的构建号 |
| 测试组(Group) | 一批测试员的集合,可关联特定构建 |
| Beta App Review | 外部测试的审核环节,与正式审核不同 |
| Export Compliance | 导出合规声明,涉及加密功能的确认 |
| TestFlight App | 测试员手机上的安装/反馈工具(App Store 免费下载) |
常见问题
- TestFlight 和真机调试(开发模式)有什么区别? 开发模式需要把设备 UDID 加入描述文件,适合开发阶段的快速调试;TestFlight 用分发签名打包,面向更接近生产环境的测试,且不需要管理 UDID。
- 测试员需要开发者账号吗? 不需要。外部测试员只要有 Apple ID 即可。
- 外测的构建和正式提交的是同一个吗? 可以不同。通常先上传一个构建用于外测,测试通过后再提交正式审核(也可以同一个构建)。
- 构建一直显示 Processing 怎么办? 通常等待即可;若超过数小时,检查构建是否使用分发证书签名、是否完成导出合规声明、是否有 xcarchive 上传错误。
给团队的落地建议:把「提审前必须完成一轮内测 + 一轮外测」固化为发布流程的强制检查项,能显著降低 App Store 审核被拒与线上事故的概率。
