iOS TestFlight 发布包测试
一.背景
现阶段大部分公司在测试和回归期间都是习惯使用测试包,等测试回归没问题了,才打正式发布包发布,由于测试包和发布包在打包时间点和打包过程上存在差异,所以特别容易出现发布包和回归测试的测试包不一致的情况。使用自动化打包,如果打包脚本出现问题,更容易出现这种情况。
二.解决方案
所幸的是,苹果在iOS8之后推出了TestFlight,使我们在提交前可以安装发布包进行测试,所以我们可以把测试周期拆分
测试周期拆分:回归阶段开始前、回归阶段开始后
回归阶段开始前:主测普通测试包
回归阶段开始后:通过TestFlight 内外部测试主测Release包
三.TestFlight使用
- 首先它的出现是在iOS8的时候,在Xcode 6和iOS 8上公开发行,它被整合到了iTunes Connect,你可以通过电子邮件的形式来邀请你的Beta测试成员。
- TestFlight的测试方式分为两种,一种是内部测试,一种是外部测试。
- 内部测试:最多可以邀请25个内部成员,成员需要在iTunes Connect里添加,构建版本无需审核,上传build成功后即可发送测试邀请邮件。
- 外部测试:外部测试人员的上限是2000人,构建版本需要 Beta 版 App 审核部门的批准,一般审核时间为一天左右。审核成功后才可发送外部测试邀请邮件。
如下图:
- 使用步骤:
(1)上传构建版本到iTunes Connect
(2)发送 TestFlight 内部测试邀请,外部测试提交审核
(3)安装TestFlight这个app,先到AppStore上搜索 TestFlight下载,使用你的Apple ID登录,然后在手机打开你的邮箱,找到测试邀请邮件,然后点击 Start Testing 按钮,这个时候会直接跳转到你的TestFlight上,最后点击INSTALL进行下载。如图:
TestFlight提供的管理办法是将测试者分为内部成员和外部成员。理论上说,这两种测试者都可以在测试阶段使用你的App,不过所谓的内部主要是指iTunes Connect上在你的开发团队里参与技术开发或者管理的成员。你最多可以邀请25个内部成员,而与之相对的外部成员,自然就是指那些不属于你的团队或者公司的测试者,外部测试人员的上限是2000人。这里有一点需要注意的是,在你邀请外部成员参与测试之前,需要先通过苹果的审核。而这一限制在内部成员上就没有,也就是说一旦你把你的App上传到iTunes Connect上之后内部成员就可以开始进行测试了,无需审核。
准备工作
- 待测试的 ipa 包(用Application Loader上传)或者是 xcarchive (用Xcode Upload to App Store)文件(需要上传到 iTunes Connect );
- 到 App Store 下载安装软件 TestFlight;
步骤
到 TestFlight 模块下,如果 App Store 有提交过的版本,内部测试员就可以了,我们只需要添加内部测试员用户即可,如图:


添加内部测试员(即添加iTunes Connect 用户),如图:



接下来坐等收邮件,就是刚刚添加的那个用户邮箱,会收到邮件,如图:

点击 View in TestFlight 获取邀请码,如图:


注意:每一个邀请码对应一个 Apple ID ,在 TestFlight 软件中无需收输入Apple ID(其实也没法输入),它会自动获取当前设备登录的 Apple ID ,如果此邀请码已经被激活(就是已绑定 Apple ID ),则无法在不同的 Apple ID 下使用了(如果多台设备都登录的是已绑定的 Apple ID 则不会出现此问题)。不过还有一种方法就是在不同的设备登录邀请码绑定的 Apple ID ,这样直接打开 TestFlight 都不需要输入邀请码即可下载安装测试软件。
温馨提示
如果先添加了 iTunes Connect 用户,则左侧栏的添加外部测试员栏目消失了,同时出现了一个新群组栏,点击这个其实就可以添加外部测试员,只不过给外部测试员进行了分组,起了一个组名而已,本人当时找了半天没找到,希望后面的同学注意下,免得在这里浪费时间。

添加外部测试员基本差不多,接下来我直接上图



填坑
在操作步骤3的时候可能会出现提示:“缺少出口合规证明”,如下图所示:

解决方法:去Info.plist文件中添加 ITSAppUsesNonExemptEncryption 并设置为 NO ,修改 build 号,重新打包上传。

添加了此项,在iTunes Connect 上提交审核的最后一步会有不同,少了一项:是否更改加密功能(这不会影响审核的,放心的使用吧),如图:

小结
此方法的使用视具体情况而定,不见得就是最好的或是最坏的。今天正好有几个特殊用户需要用个特殊版本,所以采用了此方法。目前我们的测试包主要是通过脚本自动编译打包后上传到云服务器,生成一个下载链接,测试的伙伴直接通过此链接下载安装即可,(想学习自动化编译打包的看这里《iOS自动化编译打包》)上图更容易理解,请看图:

对于以上我今天出现的情况,还有很多种方法可以为特殊用户提供特殊版本的APP,比如:
1.用企业账号,打一个特殊包,上传到蒲公英供用户下载使用(需要一个企业账号);
2.获取特殊用户的设备UDID,添加为测试设备,重新用新的配置文件编译打包,把打好的包发给用户安装即可(需要用户设备UDID);
3.用今天所讲的 TestFlight 即可,至于使用内部人员测试还是外部人员测试根据具体情况而定(需要用户下载安装 TestFlight 软件);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix