• [每周一更]-(第13期):灰度测试的解释说明


    在这里插入图片描述

    我们正常开发项目,都会经历到开发测试、测试机测试然后逐步转到线上环境里测试并验收,但是这上线过程可能存在很多不确定的因素,为了保证更完善稳定的上线项目和用户的体验,有了灰度测试,作为一种过渡手段。

    灰度发布,又名金丝雀发布,或者灰度测试,是指在黑与白之间能够平滑过渡的一种发布方式。

    灰度,就是存在于黑与白之间的一个平滑过渡的区域。对于互联网产品来说,上线和未上线就是黑与白之分,而实现未上线功能平稳过渡的一种方式就叫做灰度发布。

    什么是灰度发布?百度百科的解释是这样的:

    灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。 AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
    灰度发布如果按照端来分的话,可以分为web前端、服务端灰度、客户端。

    无论是哪种灰度,一般需要满足以下2点要求:

    需要一个放量配置,给产品/运营等工作人员配置放量策略;
    需要做到同一个用户始终访问的是同一个版本的代码,如果同个用户上个请求访问的是A版本,下个请求访问的是B版本,就可能会出问题。

    web前端灰度

    • 通过前端请求判断+cookie识别

    服务端灰度

    • 1、兼容变更
      • 兼容变更又可分为物理灰度和逻辑灰度。
        • 物理灰度:物理灰度比较简单,根据机器维度进行灰度,直接部署新老版本在不同机器,流量均匀地打在新老版本上面。这种方式虽然简单,但不适用于不兼容变更;
        • 逻辑灰度:逻辑灰度就是根据更精确的流量策略来控制流量,这种灰度一般要写一定的灰度代码。这种方式能比较精确地控制流量,但是增加了一定的灰度代码,灰度完成后要删除相关灰度代码,有点麻烦。
    • 2、不兼容变更
      • 不兼容变更指的是更改了当前功能,即接口逻辑跟之前版本发生很大变化,必须要前后端同时发布,否则会有一段时间服务不可用。
        一般的做法是引入接口版本号,新老版本接口并存,比如 /v1/api 和 /v2/api。前端使用/v2/api版本,当过去一段稳定期后(可以是登录态时间失效后),就可下掉/v1/api版本。

    客户端灰度

    • 类似知乎发布不同版本的情况,需要用户主动安装;
    • 根据用户设备的系统和应用版本;
    • 根据渠道:发布到不同应用市场的app都会被打上渠道标签,所以可以根据渠道来区分用户;
    • 根据设备ID和用户ID。

    灰度放量策略

    流量策略一般分为以下几种:

    • 1、按流量百分比
      先到先得的方式比如限制10%的用户体验的是新版本,90%的用户体验的是老版本。先访问网站的用户就优先命中新版本,直到流量用完为止。
    • 2、按人群划分
      • 按用户id、用户ip、设备类型比如可通过平时的埋点上报数据得知用户的pv、uv、页面平均访问时长等数据,根据用户活跃度来让用户优先体验新版本,进而快速观察使用效果。
      • 按地域、性别、年龄等用户画像比如可通过用户的性别、年龄等做下新老版本的对比效果来看看目标用户在新版本的使用年龄段,性别范围是多少。
    • 3、按渠道划分
      比如根据用户的注册来源来放量。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xREGtk7D-1664552867102)(/uploads/article/20220923/632dd09834a55.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wqw9j4EA-1664552867103)(/uploads/article/20220923/632dd0ac26df1.png)]

  • 相关阅读:
    2022年字节跳动抖音日常实习面经
    CY3/CY5/CY7标记牛血清白蛋白/人血清白蛋白,CY3/CY5/CY7-BSA/HSA
    qbreakpad 生成dump
    google的chromedriver最新版下载地址
    Panglon可视化显示使用
    基于YOLOV8检测和OCR识别的车牌识别
    浮点数保留指定位数的小数,小数位自动去掉多余的0
    高频面试(JavaScript高级)
    leetcode 挑七
    leetcode 3074. 重新分装苹果 【Java】
  • 原文地址:https://blog.csdn.net/hmx224_2014/article/details/127130409