匿名职言 灰度发布回归测试能多大程度减少全量发布回归测试的痛苦

何致远 · 2022年04月11日 · 最后由 苏楷瑞 回复于 2022年04月11日 · 4292 次阅读

有了灰度发布以后,全量发布是否不容易出线上问题。全量发布测试时间是否能大大缩短。灰度是全量的线上环境子集,能多大程度代表线上环境呢

共收到 6 条回复 时间 点赞

这是正常讨论又不是吐槽,匿名的底层逻辑是啥?顶层设计又是啥?如何保证闭环?如何赋能社区?

感觉楼主这几个问题有点奇怪。楼主理解的灰度发布是什么?

我理解的灰度发布本质上是小规模线上新版本测试,降低出线上问题的影响用户数,进而降低线上问题引起的损失。它和我们日常主动做的回归测试完全是两码事,出问题是切切实实影响用户的线上问题。

在灰度发布的时候如果把问题都修复好的话,那全量出问题的概率确实是会降低,但 “不容易” 这个用词我觉得不妥,好像有了灰度发布后线上很难出问题一样。这个和灰度的量有多少,很大关系。

全量发布测试时间是否能大大缩短 不知道你这里的 全量发布测试时间 具体是啥时间?如果是指上线前的测试时间,我理解灰度并不是决定能否大大缩短的核心因素,核心因素应该是对出质量问题的容忍度,或者说可以接受出多大程度的质量问题。测试阶段在模拟环境进行,就是为了把出问题造成的损失降低为零(都是自家人自家数据),而灰度阶段出问题,这个损失并不为零,只是规模相对全量可以小一些。所以如果对质量问题容忍度高,允许一些规模相对不大的质量问题出现,那部分测试内容可以直接挪到灰度发布阶段由线上用户做小白鼠验证,这样是可以缩短测试阶段耗时的(测试内容少了),但如果容忍度不高,那测试内容很难挪到直接在灰度阶段验证,那就很难减少了。

陈恒捷 回复

我解释下,全量测试是晚上 10 点后接入,灰度是任意时间都可以。测试环境回归测试后,灰度到线上测试,发现线上环境导致的问题可以修复。这样全量发布时,由于已经灰度测试过,所以可以避免环境问题导致的 bug 修复验证时间,缩短全量发布时间,争取全量线上回归测试一遍过

何致远 回复

嗯嗯,大概理解了。你们的术语用法有点特别。

你这里的灰度测试目的是发现由于测试环境差异引发的问题的,这种我们一般称之为 “预发布测试(为发布做准备的测试)”。预发布环境用的是线上数据,也和线上环境在同一个机房环境,但入口是只有公司内网可以进入,外部用户进不来,测试期间用的也是测试人员自己的账号,而非外部用户的账号,保障就算出问题,对外部用户影响也为零。

预发布在互联网里面很常见,也很有效(能有效验证开发发布时做的各个配置项改动是否都合理到位,且由于环境完整,有些涉及第三方系统的测试也可以完整进行)。大部分在测试排期时就会单独排出来预发布测试阶段的。

而我们一般说的 “灰度测试/灰度发布”,指的是在线上环境只更新少量节点结合流量控制,做到只有小规模用户使用新版本的效果。如果出问题,会真的影响外部用户,只是用户规模会比全量小很多(一般 5%-50% 不等,可以自行控制)。详细的你可以搜索引擎看看。

陈恒捷 回复

哈哈是的,目前我们灰度只支持 2 家线上我们自己的公司,灰度也是在自己公司搞;一般灰度没问题了,线上就是切一下全量,基本能一遍过

在我们这,用户量很大,服务端和 app 端的灰度是必须的流程。
服务端灰度一般发现的问题较少,大部分测试都能 hold 住,但是也有极少数的情况发生,所以灰度也是必须的。
客户端的灰度,是实打实的能发现很多 crash 的问题,一般都需要二灰,很多情况,比如空指针,特殊数据引起的异常,在测试这边很难 100% 的覆盖。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册