内部测试是 Play Console 里唯一能在「应用设置」完成之前就开启的测试轨道,也是唯一能让测试包在几分钟内装到测试员手机上的轨道。它同时也是最被低估的一条轨道:很多团队只把它当成走向封闭测试前的一道礼节,结果接下来一周都在处理同一个问题——测试员根本没收到加入链接、新上传的 CSV 覆盖了原有邮箱列表,或者所有人装上的其实是正式版。本文把内部测试轨道从头走一遍:测试员列表、每个应用 100 人的上限、可分享的加入链接、版本号如何决定测试员实际装到哪个包,以及完全不需要开轨道、只用一条链接交付单个安装包的「内部应用共享」。
三条测试轨道,以及只有内部测试才能做到的两件事
Play Console 提供三条发布前的测试轨道。内部测试把安装包分发给每个应用最多 100 名测试员,用于快速的质量检查;封闭测试把范围扩大到你自己控制的测试组;开放测试则把测试版本放到 Google Play 上,任何人都可以加入。Google 官方的建议很明确:先跑内部测试,再扩展到小规模封闭测试组。
内部测试有两个真正独有的特性:
- 可以在应用设置完成之前就开启。只要手里有一个有效的应用包,即使正式版和预注册功能仍然不可用,你也能把包分发给内部测试员。在应用通过首次审核之前,测试员看到的是临时应用名称,名称可以在「信息中心」的应用概览里查到。有一个后果是不可逆的:一旦上传了安装产物,该应用的包名就固定下来,无法再修改。
- 新包几分钟内就能到测试员手上。发布到内部测试轨道的新应用包几乎立刻对测试员可见;首次上传的包立即可用,临时名称与商店详情信息最多显示 48 小时。相比之下,开放测试与封闭测试的链接在首次发布后可能需要数小时才会生效。
还有四条规则决定了「谁能真的测到」。测试员可以来自任何国家/地区——即使内部测试员所在国家/地区并没有分发你的正式版、开放测试版或封闭测试版,他依然能拿到内部测试的访问权。测试员在内部测试轨道上可以免费安装付费应用,但应用内购买仍需把测试员加入许可测试员(license testers)名单才能免费。内部测试员不受设备排除规则限制。此外,内部测试可能不经过标准的 Play 政策审核或安全审核:处于内部测试轨道的应用可豁免数据安全(Data safety)表单。
两条限制同样重要。测试员不能对测试版本公开发表评价,测试用户的反馈也永远不会影响应用的公开评分。而加入链接只在应用状态为已发布(Published)时才显示——处于草稿或待发布状态的应用根本没有加入链接,这正是「链接怎么不见了」最常见的真实原因。
第一步 —— 建立测试员邮箱列表
- 登录 Play Console,选择应用,进入 Test and release > Testing > Internal testing。
- 打开 Testers 标签页,点击 Create email list。
- 填写列表名称。同一个列表可以在这台账号下的任意应用、未来的任意测试中重复使用。
- 用逗号分隔粘贴邮箱地址,或点击 Upload CSV file。CSV 文件里每个邮箱必须独占一行且不带逗号。两个最容易踩的坑:上传 CSV 会覆盖你此前手动输入或上传过的所有地址;Play Console 不接受以 UTF-8 with BOM 保存的 CSV 文件。
- 点击 Save changes,再点 Create。
任何 Google 账号或 Google Workspace 账号都可以加入测试。如果部分测试员属于使用 managed Google Play 的企业组织,就必须单独打开这条通道:在应用的 Advanced settings 页面(Test and release > Advanced settings)打开 Managed Google Play 标签页,勾选 Turn on,并把该组织加入你的定向列表。注意这里的代价——打开后应用会变为私有应用,将无法在公开的 Play 商店中被搜索到。
第二步 —— 添加测试员并取得加入链接
- 在 Testers 表格中勾选应当收到本次发布的用户列表。
- 填写反馈网址或反馈邮箱。它会显示在测试员加入页面上,也是内部测试员唯一可用的私密反馈渠道——他们无法使用公开评价。
- 复制可分享链接。内部测试与封闭测试的应用无法通过 Google Play 搜索到,因此这条链接是测试员唯一的安装入口,而且每一位测试员都必须自己打开链接完成加入(opt in)。
这里有两个让团队意外的行为。已加入内部测试的用户会失去加入你的开放测试与封闭测试的资格,即使你同时把他列在那些轨道的名单里也一样——要把他转到别的测试,必须先让他退出内部测试,再重新加入另一个测试。另一个是版本号逻辑:同时有资格收到多个轨道的用户,会拿到这些轨道中版本号最高的包;而内部测试员只会拿到你发布到内部测试轨道上的版本号。
第三步 —— 创建发布版本
测试信息保存完成后,按正式版的流程准备发布:创建发布版本、附加应用包、填写发布说明,然后开始发布。由于设备排除规则对内部测试员不生效,你无法在这里用排除名单来收窄受众——这个控制要到封闭测试和正式版轨道才会出现。
版本号决定测试员实际装到什么
设备安装的是「该用户有资格收到」的所有轨道中版本号最高的那个包,而所有用户都默认有资格收到正式版轨道。这一条规则派生出 Play Console 在轨道页面上报告的四种状态:
- Shadowed(被遮蔽)——某个包覆盖了另一个更高版本号包的部分或全部相同设备配置。
- Promoted(已提升)——该轨道上所有活跃的包同时也存在于回退轨道中并处于活跃状态。
- Superseded(被取代)——该轨道上所有活跃的包都被回退轨道上更高版本号完全遮蔽,实际上没有任何用户收到该轨道的包。
- Partially shadowed(部分被遮蔽)——至少有一个活跃包被遮蔽:一部分测试员拿到该轨道的包,另一部分则静默地收到正式版。Google 把这种状态视为版本号分配出错的信号。
落到运营上只有一条规则:当测试员说「更新一直没收到」时,先比对内部测试轨道的版本号与线上正式版的版本号,再去排查其它原因。
内部应用共享 —— 一个包、一条链接、不开轨道
内部应用共享(Internal app sharing)与内部测试轨道是两套独立机制。你把应用包或 APK 上传到内部应用共享上传页面,拿到一条链接;这条链接既可以限定给指定的邮箱列表,也可以让任何拿到链接的人下载。它存在的意义是覆盖「开轨道太重」的场景:一个 QA 包、一个 debug 包,或者一个你不想记录到应用包浏览器里的产物。
它的规则相当特殊,值得记住:
- 上传需要 Release apps to testing tracks 权限;持有该权限即默认获得内部共享的上传授权。
- 版本号不必是新的、也不必唯一——共享的包和 APK 可以随意复用版本号。
- 允许上传可调试(debuggable)的应用包或 APK。
- 共享的产物永远不会出现在应用包浏览器中,也不能被包含进测试轨道或正式版的发布里。
- 产物可以用任意密钥签名,不要求正式签名密钥或上传密钥。Google 会用为该应用自动创建的 Internal App Sharing 密钥重新签名每一次上传——这也是为什么有些第三方 API 服务商需要这份测试证书。可在 Test and release > Setup > Internal app sharing 下载证书,并复制各类证书指纹。
- 单条链接最多支持 100 次下载。要覆盖更多人,就重新上传同一个包,会得到一条新链接和另外 100 次下载额度。
- 下载链接在上传日起 60 天后失效;失效后重新上传即可获得新链接。
访问控制与测试轨道思路一致。在 Uploaders and testers 标签页里,授权上传者既可以用新建邮箱列表的方式添加,也可以复用已有列表——而且授权上传者不必是 Play Console 账号的用户。下载者则有两种模式:把链接可用范围切换为 Email lists 并勾选列表,或保留默认设置,让任何拿到链接的人都能下载。
测试员如何打开内部应用共享
授权测试员不能直接安装文件,必须先在 Play 商店应用中打开这个功能:打开 Google Play,点菜单进入 Settings,在 About 区域连续点击 Play Store version 七次,出现开关后打开 Internal app sharing 并确认。有两种失败情形值得提前排除:如果测试员从未被加入名单、链接也不是对所有人开放,他当然下载不了;而如果一个应用对某位用户在 Google Play 上本就不可用——因为未在该用户所在国家/地区分发,或只存在于他无权访问的轨道上——那么即使链接本身有效,也无法通过内部应用共享交付给他。碰到 100 次下载上限或链接过期,解决办法始终只有一个:重新上传。
内部测试员不计入正式版访问权限的条件
对于 2023 年 11 月 13 日之后创建的个人开发者账号,获取正式版访问权限的前提是:运行一次至少有 12 名测试员连续加入满 14 天的封闭测试,然后从 Play Console 信息中心提交申请。内部测试员不计入这项要求,而且内部测试本身是可选环节——官方推荐把它当作起点,而不是封闭测试的替代品。如果这个月的目标是拿到正式版发布权限,那么在内部测试轨道上花的时间属于准备,而不是进度。
结束内部测试
要关闭一条轨道,打开该应用的内部测试页面,找到对应轨道并点击 End track(或 Pause track)。测试结束后,测试员不再收到更新,但已安装的应用会保留在他们设备上,不会被远程卸载。你的测试员邮箱列表会保留下来,可以在账号下任意应用中复用,也能直接用于下一条你要开启的轨道。
开启内部测试轨道前的检查清单
- 包名是否已经确定?第一次上传安装产物后它就无法再改。
- 测试员列表是否已建好,且地址正是测试员将用于登录的账号?
- 是否设置了反馈地址,让测试员有地方报告问题?
- 是否比对过内部测试版本号与正式版版本号,避免发布被遮蔽的包?
- 对于一次性构建,内部应用共享是不是比开一条轨道更合适?
- 测试员是否清楚必须先打开加入链接、或先启用内部应用共享?
- 若涉及付费应用,测试员是自行支付应用内购买,还是需要加入许可测试员名单?
一句话模型:内部测试快、私密,而且在应用设置完成前就能开启——每个应用最多 100 名测试员、包几分钟内生效、付费应用可免费安装、设备排除规则不适用、也不影响公开评分。真正决定测试员收到哪个包的是版本号,所以任何异常都先拿它和正式版比对。而当你只需要把某一个包交给某一个人时,用内部应用共享,根本不必开轨道。