从技术角度分析如何选择灰度测试方式
灰度测试对于大部分的技术童鞋都不陌生,是我们在做产品迭代时经常会出现的需求,具体来讲是一种在应用测试时常用的方法,它允许在生产环境中对新功能或更改进行控制从而实现有限的上线发布。这使得开发者和测试人员可以在真实世界的条件下测试新代码,而不会对所有用户造成影响。
更简单的来说就是通过我们的技术手段对业务功能进行部分的展示,这个部分可能是基于用户画像、也可能是基于地区范围、手机系统等条件。
举一个栗子:
我是一个在线教育机构,已经上线了一个线上课程学习的 App,里面有视频课程、背单词、题库练习等一系列的功能模块,但是里面的背单词是新上线的功能,我仅想开放给忠实的老用户进行试用,这是就可以通过条件设置仅对注册时间大于或等于 3 年的用户展示。
我们作为开发者,关于灰度测试我们应该关注什么呢?
这里主要分享下我们在开展灰度测试时如何进行工具的选择和应该去重点关注的一些问题。
灰度测试的重点问题
1、确认灰度测试的复杂性
如果我们仅是针对一些简单的场景,一般的灰度测试工具都能满足,但是如果遇到一些非常复杂的灰度测试情况,例如我们的 App 用户量本来就比较多,并且设置的条件也比较多,例如同时设置了年龄、地区、性别、客户等级等多个条件,就需要选择更加灵活的技术工具。
2、灰度测试的安全性
因为灰度测试几乎都会涉及调用到我们的用户数据,我们就需要确保灰度测试的工具能够保证数据的安全,防止一些未授权的数据被工具访问、调用。
如何选择灰度测试形式?
灰度测试实现的方式有很多,因此可供我们选择的形式或工具也比较多,有些可能是企业直接设计的模式有些是借助便捷化的工具进行管理。
1、A/B 测试
例如我们常见到的 A/B 测试就是一种最基础的灰度测试,一般情况下开发者通过将用户分组,每个用户组看到不通的应用功能版本,后续根据用户的行为反馈对上线的功能效果进行评估。
2、金丝雀发布
将应用的新版本逐步部署到生产环境当中,能够在一定程度上确保一部分用户能够访问和体验新功能,如果用户的访问没有太多的问题就可以扩大应用的访问范围。
3、小程序化
小程序化的意思是借助 FinClip 小程序 Runtime SDK(或者也称为小程序容器)将 App 内的功能模块替换为小程序,从而所有的功能模块能够以管理后台上下架的形式去管理,一般情况下,SDK 产品会配套一个管理后台,后台还有一个作用就是去设定每个功能模块的展示条件逻辑,例如用户画像信息。
4、Feature Flags
是一款集"功能开关+ 灰度发布 + 远程配置 + ab 测试 + 版本控制 + 持续交付 + 订阅管理 + 等等" 多个能力融为一体的技术,主要机制是允许开发人员在生产环境中启用或禁用新功能,这种方式下可以让开发人员以更加灵活的方式逐步推出新功能,并根据用户的反馈进行调整。
你们都是如何实现灰度测试的?
版权声明: 本文为 InfoQ 作者【Onegun】的原创文章。
原文链接:【http://xie.infoq.cn/article/7dbf617500a9122ddd4f38251】。文章转载请联系作者。
评论