写点什么

App 怎么做灰度发布?

作者:InfoQ IT百科
  • 2022 年 4 月 19 日
  • 本文字数:1834 字

    阅读完需:约 6 分钟

对于大项移动 APP 来说,每一次版本的发布,特别是在进行大的功能更新时,都需要选择部分用户先进行试用,并及时关注崩溃、卡顿、用户反馈等,等待各项业务指标都达到预期要求时,才能将新版本全量推向市场。灰度发布是移动产品稳定性的重要保障,它能解决以下问题:


在这里,以 IOS 应用为例讲解怎么做灰度发布的。


首先、灰度发布解决什么问题

对于大项移动 APP 来说,每一次版本的发布,特别是在进行大的功能更新时,都需要选择部分用户先进行试用,并及时关注崩溃、卡顿、用户反馈等,等待各项业务指标都达到预期要求时,才能将新版本全量推向市场。灰度发布是移动产品稳定性的重要保障,它能解决以下问题:


常规测试的局限性

常规测试很难覆盖到足够的机型,也无法搜集到足够多的测试数据。一旦常规测试没有发现一些隐蔽的致命 bug,APP 带着 bug 上线,后果不堪设想。灰度发布即是让部分用户参与到产品测试中来,一旦发现问题,可及时止损,将影响降低到最小。


验证服务

高频服务新上线时,客户端和服务端都需要一个适应的过程,灰度发布能逐步放量,保证服务可控。


AB 测试

新上线的功能,当无法确定哪种方式更受用户欢迎或能带来更大的收益时,可以采取 AB 测试。而 AB 测试用灰度发布的方式再适合不过。


灰度策略

灰度发布要达到比较好的效果,需要设计一套优秀的灰度系统。它应该具备或部分具备以下几个特征:


人群筛选

灰度发布一般是和具体业务相关联的,业务需求可能会和用户的位置、年龄、机型、标签等相关,这就需要灰度系统在筛选灰度用户时,能够根据特定的条件获取最优的实验样本,以最短的时间获取最有价值的数据。


数据反馈

除了监控 APP 的崩溃、卡顿等性能问题外,还需要关心灰度的业务指标。特别是对于 AB 测试来说,如何区分两组测试哪一组更优,需要设计一个统一的计算方式。常见就是转化率指标,在灰度的业务路径中,应该事先进行数据埋点。


及时止损

灰度发布虽然是一项测试行为,但发生大范围的崩溃或功能不可用问题,对用户的使用体验也是一种伤害。当出现问题时,应该能引导用户回滚或更新到正常版本。


iOS 的灰度方案

对于 Android 和 Web 产品来说,因为可以自由的控制发布渠道,所以灰度方案相对容易。但对于 iOS APP 来说,受限于 AppStore,灰度方案比较单一。在早几年 91 市场流行的时代,越狱用户的占比相对较高,有很多 APP 选择在越狱市场进行灰度,但越狱市场的问题在于很难获取有效的实验样本,灰度反馈的数据可能和实际情况有偏差,现在已基本不采用。


目前,iOS 的灰度主要有两种方式:


Phased Release for Automatic Updates


在 AppStoreConnect 的后台,可以对 APP 进行分阶段的自动更新。该灰度机制将灰度分为七天,第一天发布 1%的用户,第二天发布 2%...第六天发布 50%用户,最后一天发布到全量用户。灰度期间发现严重问题时,可以暂停并重新提交一个新的版本,也可以在灰度过程中提前开启全量。这种灰度方案有两个问题:


  • 已经升级到灰度版本的用户,无法回退;

  • 无法精准选择灰度用户。


TestFlightTestFlight

测试工具允许开发者通过邮件等方式邀请用户测试。TestFlight 在被苹果收购之后,和 AppStoreConnect 进行了深入整合,现在,它可以生成一个公开的链接,用户可以直接安装测试。


内部测试

在 AppStoreConnect 后台允许从开发者账户的开发、销售、管理成员中邀请少量的(25 个)内测用户,内测用户不需要审核可直接安装灰度版本的 APP。非常适合内部在发版前进行整体功能的验证测试。


外部测试

在 AppStoreConnect 后台的 TestFlight 项新建并提交灰度版本审核通过后(和正式版本的审核不一样),可以生成基于 TestFlight 的公开链接,用户访问该链接后,即可安装灰度版本的 APP。很多 iOS APP 使用「内测邀请」实际上就是依赖于 TestFlight 的「外部测试」的能力。当用户打开现有版本的 APP 后,服务器可以根据当前用户的标签判断是否为灰度用户。如果是的话,需下发 TestFlight 的安装链接,APP 端引导用户进入 TestFlight 安装。外部测试有一些限制条件:


  • 用户需安装 TestFlight(内部测试也一样);

  • 有效测试时间为 60 天(内部测试也一样),再有效期结束之前需引导用户更新正式版本;

  • 外部测试用户可以达到最多 10000。


最佳实践

已安装 TestFlight

可通过判断 itms-beta scheme 的方式判断用户是否已经安装 TestFlight,如果用户符合版本、机型、位置等维度的逻辑条件,则可弹窗提示用户抢先体验。用户点击接受体验则跳转至 TestFlight 安装。用户不接受体验时,可回收邀请链接供其他用户使用。


未安装 TestFlight

这种情况下如果用户命中灰度条件,需要先引导用户下载 TestFlight,后续流程是一样的。

用户头像

还未添加个人签名 2021.04.12 加入

还未添加个人简介

评论

发布
暂无评论
App怎么做灰度发布?_InfoQ IT百科_InfoQ写作社区