从测试到发布的分类

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

测试阶段

测试推荐:

image-20220705204605698

image-20220705204635029

在左边的图为传统测试金字塔:即越底层的测试粒度越细,就需要越多的数量去覆盖所有场景,越顶层的测试越能用少量的case覆盖大多数场景。

但是有一个软件开发中的常识:越早发现的缺陷解决成本越低 因为85%的缺陷是在开发阶段引入的,而如果要在上线之后修复他们,花费的成本可能是一开始就解决他们的数百倍,所以我们还是要尽可能早的发现bug,因此就需要进行充分的单元测试。

image-20220706092820182

日常开发的应用简化为该模型:

由客户端将请求发送到网关,再由网关请求到后端服务器

在后端的服务中,由于不同版本需要在测试中有一个虚拟的环境概念(即用特点的设备通过某些设置,来请求到对应的后端服务器,从而达到测试对应后端服务器,从客户端到服务端的一整套体系称为环境)

在实际的工作中,我们一般至少需要三套环境: 功能环境是用于开发和测试新开发的功能的 集成环境是为了把不同的功能合并在一起测试 回归环境是为了验证新的功能对老功能没有影响 具体要根据你开发的应用采用的架构,这里只是一个最简化的模型

发布阶段

举一个例子:

  1. 当页面打不开时,使用chrome的开发者工具(F12)可以看到一个请求的返回状态是:net:: ERR_CONNECTION_REFUSED
  2. 使用curl检查接口发现api.juejin.cn解析到了 127.0.0.1
  3. 由此定位到是由于host文件绑定了域名解析到本地(绑定了一个错误的地址)

因此在定位问题中,一个请求就像一个链条,顺着链条一节一节的去推理和定位问题。

  • 发布过程要做的事

    image-20220706100647819

  • 各种发布方式

    • 蛮力发布

      • image-20220706101259593
    • 金丝雀发布

      • image-20220706101606014
    • 滚动发布

      • image-20220706102101283
    • 蓝绿发布

      • image-20220706102138095
    • 红黑发布

      • image-20220706102157593
    • 实际情况

      • image-20220706102226646
      • 实际工作中,我们的发布使用的是滚动发布,发布的负责人需要关注滚动的粒度和时间,以及具体执行的进度因为这种方式对用户的体验最平滑,同时公司也有强大的流量控制能力,能够平滑的切换流星能够支持滚动
      • 但是仍然有一些场景需要使用蓝绿发布
      • 可能有些公司因为发布需要在用户低峰期进行,所以在那些公司发布的时候,往往都是在夜深人静的时候,这也就是程序员经常要晚上加班的很大一个原因
posted @ 2022-10-04 19:39  Luciferpluto  阅读(0)  评论(0)    收藏  举报  来源