跳转至正文

Beta 测试

无需重新构建 TestFlight 版本,即可向测试人员推送 Web 端变更

测试人员只需安装一次 App。之后,所有的 JavaScript、HTML 或 CSS 变更都会推送到他们通过 App 加入的 beta channel,并在下次检查更新时生效。涉及 native code 的变更仍需通过 TestFlight 或 Play testing track 进行。

测试人员可在 App 内自主加入

通过 --self-assign 允许在 Channel 上进行自我分配。您的 App 可以通过 listChannels() 列出所有 Channel,并使用 setChannel() 切换设备,从而让测试人员直接在设置界面加入 Beta 测试。

setChannel() 参考

在控制台固定特定设备

在 Capgo 控制台中设置设备覆盖 (device override),无需更改 App 即可将单个测试人员的手机分配到特定 Channel。覆盖设置将在最后一次设置后的 90 天内自动移除。

设备覆盖

通过 QR code 分享 Build

只需为 App 开启一次预览功能。之后,通过 get-qr 或在 upload 时使用 --qr-preview,即可打印出 Bundle 或 Channel 的 QR code 及预览链接,方便您直接发布到 QA 讨论组。

获取二维码参考

原生变更仍需 TestFlight

Live Update 用于更新 JavaScript、HTML、CSS 和资源。当你添加插件或改动原生 code 时,请推送新的 TestFlight 或 Play 测试版本,之后即可通过 channels 进行持续迭代。

哪些场景需要 Native Build

TestFlight 与 Capgo channels 的用途不同

  • 把新 build 交付给测试人员

    TestFlight / Play 测试
    Build、签名、上传,然后等待商店处理
    Capgo beta 测试频道
    使用 CLI 上传 bundle。测试人员下次检查更新时即可获取。
  • 添加测试人员

    TestFlight / Play 测试
    在 App Store Connect 或 Play Console 中邀请他们
    Capgo beta 测试频道
    他们从你的 App 加入 channel,或者由你设置设备 override
  • 把测试人员切换到另一个 build

    TestFlight / Play 测试
    安装另一个 build
    Capgo beta 测试频道
    使用 setChannel() 在应用内切换 channel
  • Native code 和插件变更

    TestFlight / Play 测试
    是
    Capgo beta 测试频道
    不能,需要发布新的二进制包

测试人员只需通过 TestFlight、Play testing track 或应用商店安装一次 App。之后,Web 层面的变更将由 Channel 接管。 哪些场景需要 Native Build

工作原理

QA 团队如何使用 Capgo 进行 Beta 测试

只需安装一个 Build,创建一个测试人员可加入的 Channel,并为每次变更进行一次 CLI upload。以下所有命令均来自 Capgo 文档。

  1. 创建一个测试人员可加入的 Beta Channel

    使用 Self-assignment 功能让 App 自动将设备切换至该 Channel。请在生产环境的 Channel 中保持关闭状态。

    npx @capgo/cli@latest channel add beta com.example.app --self-assign
    Channels 文档
  2. 在应用中添加 Beta 测试加入开关

    setChannel() 会询问 Capgo 该 channel 是否允许自我分配,然后将其存储在设备上。triggerAutoUpdate 会立即开始检查更新。

    import { CapacitorUpdater } from '@capgo/capacitor-updater'
    
    // Join beta and check for its bundle now
    await CapacitorUpdater.setChannel({ channel: 'beta', triggerAutoUpdate: true })
    
    // Leave beta and go back to the default channel
    await CapacitorUpdater.unsetChannel({ triggerAutoUpdate: true })
    setChannel() 参考
  3. 将每次变更上传至 Beta 版

    只需启用一次预览功能。之后,每次 upload 时都打印一个 QR code,以便测试人员和审核人员可以打开新的 bundle。

    # once
    npx @capgo/cli@latest app set com.example.app --preview
    # every change
    npx @capgo/cli@latest bundle upload --channel beta --qr-preview
    get-qr 参考
  4. 将通过 QA 的版本发布

    将测试过的 bundle 关联到生产环境,或者先向部分生产设备推送。测试人员会一直停留在 Beta 版,直到他们主动退出。

    npx @capgo/cli@latest channel set production com.example.app \
      --bundle 1.4.2
    # or roll it out to 10% of production first
    npx @capgo/cli@latest channel set production com.example.app \
      --rollout-bundle 1.4.2 --rollout-percentage 10 --rollout-enable
    渐进式发布文档

谁在使用 Beta 频道

内部 QA

QA 只需安装一个构建版本,即可在 qa、beta 和 feature 频道间切换,无需为每次 JavaScript 变更重新安装。

选择性加入的 Beta 用户

添加一个调用 setChannel() 的“加入 Beta”开关。退出时调用 unsetChannel() 即可返回默认频道。

利益相关者评审

通过 get-qr 发送 QR code,让产品负责人能够直接打开特定 bundle 或 channel 的预览。

使用 Capacitor 构建的应用

社区类应用需要谨慎的功能曝光

高频使用的消费级应用可以在向所有用户推送新体验前,先通过封闭测试组验证游戏、学习或预测流程。

lichess • 免费在线象棋应用图标 游戏面板

lichess • 免费在线象棋

大型社区应用,其锦标赛、分析和社交功能需要经过严谨验证。

Google Play 安装量
11.3M
应用商店评分
4.3
StudySmarter - 学校与大学应用图标 教育

StudySmarter - 学校与大学

教育类工作流中,onboarding 和练习变更应在发布前审核。

Google Play 安装量
650万
应用商店评分
4.8
Windy.com - 天气预报应用图标 天气

Windy.com - 天气预报

预测并规划产品变更的交互流程,在扩大规模前确保变更的可靠性。

Google Play 安装量
32.9M
应用商店评分
4.7

客户证言

使用 Capgo 交付的团队怎么说

5.0/5 开发者团队评分 9,400+ 团队 查看评价

Nate van Jole

CTO, 私有

“配置不到一天就完成了。基于 Channel 的发布让我能先在自己的设备上测试,再推给生产用户。”

no-tone @ Webincode

开发者,Webincode

“能把特定 Device ID 加入指定分组,并只向这些分组推送更改,太救命了。”

Michael Haberler 的肖像

Michael Haberler

nethead emeritors

“这个 updater 插件做得太棒了。它在我这儿运行完美,live updates 对快速测试迭代是极大的加速。”

常见问题

QA 与产品团队常见问题

关于测试人员、build 以及哪些场景仍需 TestFlight 的简要解答。

Capgo 能否替代 TestFlight 或 Play internal testing?

仅适用于 Web 层面的变更。测试人员只需通过 TestFlight、Play 测试轨道或应用商店安装一次应用。之后,JavaScript、HTML、CSS 和资源文件的变更即可通过 channel 推送给他们。但如果涉及添加 plugin、升级 Capacitor,或更改原生 code 或 Capacitor 配置,则需要重新进行 Native Build。

哪些场景需要 Native Build

测试人员如何加入或退出 Beta 测试?

为 beta channel 开启 self-assignment,然后在应用中的某个页面调用 setChannel({ channel: 'beta' })。Capgo 会检查该 channel 是否允许加入,并将选择存储在设备中。调用 unsetChannel() 可将设备切回默认 channel。默认 channel 本身无法通过 setChannel() 加入。

setChannel() 参考

可以在不更改 App 的情况下切换单个测试人员的设备吗?

可以。在 Capgo 控制台中打开该设备并设置 channel override。配置同步到所有 edge server 最多需要 2 分钟,并在最后一次设置后的 90 天后自动移除。通过 setChannel() 在 App 中选择的 channel 不会出现在该列表中。

设备覆盖

如何在不覆盖旧版 live update 的情况下测试新的 Native Build?

请为每次 Native Build 增加 CapacitorUpdater.version。在默认设置下,安装新版本时会自动移除旧版本下载的 bundle。您还可以针对该 channel 关闭开发版 build 和模拟器的更新。

测试不带 Live Update 的 Native Build

如果 Beta bundle 在启动时崩溃了怎么办?

请在 App 加载完成后调用 notifyAppReady()。如果新 bundle 在 10 秒内未调用该方法,设备会将其标记为失败并回滚到上一个可用的 bundle。

notifyAppReady() 与自动回滚

为您的 App 设置 Beta Channel

创建一个测试人员可以加入的 channel,添加开关,并在 14 天免费试用期间发送您的第一个 bundle。无需信用卡。