对于质量保障,前端职能该做些什么?

news2024/11/24 6:36:55

目录

前言

1. 背景

2. 分析

2.1 前端自动化测试工具

2.1.1 针对工程代码的静态检查

2.1.2 针对部署产物的检查

2.1.3 性能测试

2.1.4 错误检测

2.1.5 容灾(白屏)检测

2.2 devOps 流程关联

2.2.1 提测卡点

2.2.2 发布卡点

3. 总结

3.1 严选中的最佳实践

3.1.1 特殊场景兼容


前言

        各公司各项目的流程怎么做才比较有意思。正文从这开始~~

对于前端项目交付的质量,各团队往往会建设众多的交付标准,希望以此来约束项目的开发,从而保障最终的交付物质量。

1. 背景

        对于前端项目交付的质量,各团队往往会建设众多的交付标准,希望以此来约束项目的开发,从而保障最终的交付物质量。

【第2889期】技术人如何做好业务?

严选也不例外,于先前制定了前端项目验收标准,但在实行期间,遇到以下问题:

  • ·前端团队构成复杂且业务线众多,并且存在较多的项目外包,人员质量参差不齐。

  • ·指标化的交付标准靠规范无法进一步的提升,且指标的维持需要依靠于人为把握,无法严格控制到位。

为保障前端项目验收标准在业务中的落地,从而保证前端项目的在线质量,计划从以下两个手段出发:

  • ·工具化:提供各类检测工具,用于交付物的检测(如性能检测工具、错误检测工具、容灾检测工具等)。

  • ·流程化:穿插到前端的核心研发流程中,实现通过、告警、阻断三种策略,进行自动化验收。

2. 分析

重新审视整个前端的项目周期,前端团队内一般会建设以下的质量保障体系:

1、需求评审

  • ·需求前准备,获取需求链接,需求稿等信息

  • ·项目负责人必须参会,明确需求范围和需求内容

2、技术方案阶段

  • ·依据《前端技术方案模板》输出前端技术方案

3、项目开发阶段

  • ·前端体系知识库

  • ·本地开发工程体系

4、项目提测、测试阶段

  • ·review 机制

5、项目发布

  • ·线上环境监控

        可以看到主要的交付物质量保障是在本地开发工程体系和 review 机制中,而 review 机制是相对脆弱、不可靠的,我们追求使用流程 / 工具化的方式来替代掉这部分,新的质量保障体系如下:

1、需求评审

  • ·需求前准备,获取需求链接,需求稿等信息

  • ·项目负责人必须参会,明确需求范围和需求内容

2、技术方案阶段

  • ·依据《前端技术方案模板》输出前端技术方案

3、项目开发阶段

  • ·前端体系知识库

  • ·本地开发工程体系 -> 前端自动化测试工具 -> 关联提测卡点

4、项目提测、测试阶段

  • ·前端技术方案 -> 关联提测卡点

  • ·前端自动化测试工具

5、项目发布

  • ·前端自动化测试工具 -> 关联发布卡点

  • ·前端自动化测试工具 - 巡检

  • ·线上环境监控

因此体系的重点在于前端自动化测试工具和 devOps 流程关联这两个事项上。

【第2669期】前端开发中的流程自动化与提效实践

2.1 前端自动化测试工具

        有句话说的好,要想改进它,必须度量它。因此测试工具的核心就是将相关的检查项指标化,由具体的数值来判定交付物是否合格。

根据测试的内容不同,这里可以分为两类:

  • ·针对工程代码的静态检查:围绕的是代码本身的静态测试

  • ·针对部署产物的检查:围绕的是部署后的页面内容测试

2.1.1 针对工程代码的静态检查

        一般前端工程中都会使用 eslint、commitlint、commentslint 等工具进行检查,这类的工具一般规则都比较统一,常常内置在工程中。而对于业务性质的代码检查,这部分就不够适用了,比如严选 B 端工程中 sharkrForm 的覆盖率检查,是基于静态代码的检查,可以结合项目本身打包时的 AST 期间,扩展相关插件完成。

2.1.2 针对部署产物的检查

        代码只是交付物的中间产物,最终的交付物往往都是页面,因此对于页面的检查是非常必要的。

        对于业务逻辑功能本身,我们全权依托并相信 QA 同学,但对于页面本身的质量,前端自动化测试工具可以做不限于以下内容的检查:

  • ·性能测试

  • ·错误检测

  • ·容灾(白屏)检测

        对于页面的访问测试,通过 puppeteer 工具可以非常方便的来完成,其中不同的用户身份访问页面,这部分的能力建设值得关注。

2.1.3 性能测试

        性能这个事项之前文章有过介绍,感兴趣的同学可以了解下《如何从零开始做性能优化》,性能检测的核心还是在于指标化和量化,这里采用 FMP 的最大值和均值来作为考核项。

2.1.4 错误检测

        大家往往聚焦在页面内容展示的检查,往往会忽略 console 中的错误,而这类错误有些时候是不可容忍的。

        错误可以简单的分为 2 个大类:语法错误和资源错误,语法错误我们可以通过代码注入监听,对于资源错误则可以采用 puppeteer 的 response 监听就可完成。

【第2755期】 一个检测 JS 内存泄漏的神器 - MemLab

2.1.5 容灾(白屏)检测

        在大流量情况下,服务出现限流或者异常时,前端页面展示白屏是不能接受的,因此前端自动化检测工具集成了自动化的容灾能力测试。

功能的核心可以简单的归纳为以下三个点:

  • ·自动化获取页面内的请求列表;

  • ·创建每个请求异常(拦截 / 异常响应码)的测试访问用例

  • ·检测每个用例后页面是否白屏

2.2 devOps 流程关联

        建设完工具能力之后,就应该关联到 devOps 流程中,在提测和发布两大卡点中,实现通过、告警、阻断三种策略,进行自动化验收。

2.2.1 提测卡点

        对于工程代码的静态检查,我们可以在 CI 阶段进行工具测试,同时上报检查结果,并在项目全流程管理平台中,在项目的提测卡点关联此检查项,对于未通过工具检查的项目拒绝提测。

2.2.2 发布卡点

        对于部署产物的检查,我们需要找到制品部署完成后的节点(注意:这里不是指 git 中 pipeline 完成的时间点)。

通常在我们的 devOps 中,会有以下两个规则:

  • ·测试制品部署测试环境时,是自动的;

  • ·在部署线上制品到线上环境前,会将线上制品部署到测试环境进行回归验证,验证完成后通过手动的方式进行线上发布;

        我们可以在规则二中,在线上制品部署测试环境时,进行部署产物的自动化检查,在线上发布时进行卡点,对于未通过工具检查的项目拒绝线上发布。

        ps:发布卡点往往比较靠后,在测试制品在测试环境部署后,虽然不能进行测试环境的发布卡点(因为是自动完成),但也可以执行部署产物的自动化检查,通过告警的方式,让对应开发提前感知,并进行相关问题的修复。

3. 总结

        以上,我们可以将部分人工的操作以工具化、流程化的方式来替换,聚焦在工具能力的建设,从而形成一套更高效的项目验收流程。

3.1 严选中的最佳实践

        在严选业务中,对于常规业务的验收均能采用上述流程,对于有差异的页面搭建体系中的页面发布流程也提供了解决方案。

3.1.1 特殊场景兼容

3.1.1.1 页面搭建体系中的页面搭建

        页面由平台搭建生成,由运营 / BU / 产品等角色搭建,无完整的 devOps 流程,这类页面则是通过自动巡检的方式,由定时任务触发,对最新创建的页面执行自动化检查,并将结果直接同步搭建业务大群,方便对应业务快速发现问题并解决。

3.1.1.2 页面搭建体系中的页面开发

        对于页面搭建体系中的页面开发流程,底层沿用页面搭建发布流程,不同于一般流程,线上的发布也是自动的,不同的点在于并不会直接对当前产物进行投放,而是通过投放平台,因此可以在投放平台添加投放卡点进行拦截验证。

3.1.2 新的验收标准

        有了一套更高效的项目验收流程后,对于外包类的项目,我们可以建设更指标化的验收标准,通过对每个项目自动打分的方式,用来评判更好地评判项目的交付物质量,从而对这次外包项目进行奖惩。

可参考的验收标准如下(采用扣分制,默认 100 分):

1、需求评审

  • 项目负责人必须到场【考核,签到情况检查】

2、技术方案阶段

  • 项目技术方案输出【考核,方案内容自动检查】

3、项目开发阶段

  • 代码规范(eslint、commitlint、commentslint 等)

  • 页面交互【可申请额外加分】

4、项目提测、测试阶段

  • 冒烟通过率【考核】

  • 提测时间【考核,自动化测试工具已关联卡点,可放大此项】

5、项目发布

  • 上线时间【考核,自动化测试工具已关联卡点,可放大此项】

4. 说在最后

        对于项目外包,我们不能简单的将项目完全托付给外包团队,项目交付物的质量仍然是团队应该重点关注的内容,最终的质量应该是由团队进行负责。

        当然,对于和外包团队边界处理中,更建议团队前期去建设更自动更完善的验收标准,提升最终交付物的质量,以减少不必要的精力和资源消耗。

5. 参考资料

  • puppeteer doc:https://pptr.dev/api/puppeteer.puppeteernode

  • 如何做前端异常监控:https://www.zhihu.com/question/29953354

  • 聊聊前端监控 —— 错误监控篇:https://juejin.cn/post/6867773840768909326

  • Eslint + Prettier + Husky + Commitlint+ Lint-staged 规范前端工程代码规范:https://juejin.cn/post/7038143752036155428

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ消息持久化机制

上一篇说到生产者消息确认机制,它可以确保消息投递到RabbitMQ的队列中,但是消息发送到RabbitMQ以后,如果MQ宕机,也可能导致消息丢失,所以提出了消息持久化。持久化的主要机制就是将信息写入磁盘,当RabbtiMQ…

机械师曙光16电脑开机自动蓝屏怎么解决?

机械师曙光16电脑开机自动蓝屏怎么解决?有的用户在使用机械师曙光16电脑的时候,遇到了一些系统问题,导致自己无法正常的开机使用电脑。因为电脑总会变成蓝屏,无法进行任何操作。那么这个情况怎么去进行问题的解决呢?来…

字节内部又推出最新spring进阶全家桶了!强烈建议人手一份!

前言 一份 Alibaba 内部强烈推荐的“玩转 Spring 全家桶的 PDF” ,小编也不是个吝啬的人,好的东西当然要一起分享咯。今天小编就带你一站通关 Spring全家桶,让你一路通关轻松斩获大厂 Offer! Spring 框架自 2002 年诞生以来一直…

如何真正开启docker远程访问2375

注意看官方文档 Configure remote access for Docker daemon | Docker Documentation 1. windows上Docker Desktop开启远程访问端口2375 系统版本: win10专业版 Docker Desktop版本:4.18.0 很简单勾上, 应用并重启即可 2. linux上开启 尝…

中兴通讯5G荣登《财富》2023年中国ESG影响力榜单

日前,《财富》正式对外公布“2023年中国ESG影响力榜单”,中兴通讯5G榜上有名,旨在表彰其在绿色发展、社会责任、公司治理方面做出的努力与贡献,值得一提的是,“中国ESG影响力榜单”是《财富》在去年创立的榜单&#xf…

怎么把ppt压缩到10m以内?

怎么把ppt压缩到10m以内?众所周知,压缩文件可以使得文件更加易于传输和存储。在PPT演示过程中,如果文件过大,可能会导致文件传输、下载或存储的速度变慢,影响用户使用体验。将PPT压缩到10M可以避免这种情况&#xff0c…

SY8205同步降压DCDC可调电源模块(原理图和PCB)

SY8205同步buck降压电源模块,输入电压4.5-30V,输出电压0.6-30V可调,效率90%以上,最大连续输出电流5A,峰值电流6A。 开源链接:https://url.zeruns.tech/obGu3 SY8025数据手册下载地址:https://…

【Go语言从入门到实战】面向对象编程篇

面向对象编程 Go语言的面向对象编程和其他语言有非常大的差别。 Go 是一种面向对象的语言吗? 是和不是。虽然 Go 有类型和方法,并允许面向对象的编程风格,但没有类型层次结构(继承)。Go 中的“接口”概念提供了一种不…

springboot+vue学生综合测评系统(java项目源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的学生综合测评系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…

electron更新机制

说明: 本文适用于win和mac这两个端mac端若要调试更新功能, 一定要把旧版本和新版本都配置mac的代码签名, 至于怎么配置, 主要就是先成为苹果开发者,然后去帐号那边下一个证书, 然后..... 一. 在package.json配置更新参数 参考: Publish - electron-builder &quo…

六级备考23天|CET-6|翻译技巧5-2|2019年12月真题|翻译荷花lotus|11:05-12:05

目录 一、中文 句子1 PRACTICE ANSWER 句子2 PRACTICE ANSWER 句子3 ​ PRACTICE ANSWER 句子4 PRACTICE ANSWER 句子5 PRACTICE ANSWER 句子6 PRACTICE ANSWER ​ 答案整合​ 一、中文 句子1 荷花是中国的名花之一,深受人们喜爱。 PRACTICE Lotus is one…

使用nvm管理node多版本(安装、卸载nvm,配置环境变量,更换npm淘宝镜像)

目录 前言一、卸载node二、nvm是什么?三、nvm安装1. 官网下载 nvm 包2. 安装 nvm-setup.exe小tips 3. 配置路径和下载镜像4. 检查nvm是否安装完成 四、使用nvm安装node版本五、修改npm默认镜像源为淘宝镜像六、 环境变量配置1. 设置系统变量和用户变量的作用是什么呢…

led显示屏怎么连接电脑主机

要将LED显示屏连接到计算机主机,通常需要使用适当的接口和连接线。以下是常见的连接方法: HDMI接口:大多数现代计算机和LED显示屏都配备了HDMI接口。您可以使用HDMI连接线将计算机主机的HDMI输出端口连接到LED显示屏的HDMI输入端口。这种连接…

leetcode--环形链表.找到入环节点(java)

环形链表II 环形链表.找到入环节点题目描述解题思路 环形链表.找到入环节点 LeetCode 142:环形链表II 可以在这里测试 题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节…

深度解析线程的正确停止方法

一、解惑 1. 什么情况下,线程需要被停止? 线程和任务被创建和启动之后,大部分情况下都是自然运行到结束的,自然停止,但有些情况会需要用到停止线程,如: 用户主动取消 服务被快速关闭 运行出…

【C++实现插入排序、希尔排序、冒泡排序、快速排序、选择排序】

使用C实现来插入排序、希尔排序、冒泡排序、快速排序、选择排序算法。 一、插入排序 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好…

2023爱分析·中国面向开发者的低代码开发平台市场厂商评估报告

01 研究范围定义 “低代码”是一种可视化的应用开发方式,相对于传统编写代码的“纯代码”开发方式,低代码开发平台可以减少代码编写量或不使用代码编写进行应用的开发。随着技术革新,大模型也为低代码开发平台发展指明了新方向。从开发者与开…

单片机GD32F303RCT6 (Macos环境)开发 (二十八)—— 蓝牙透传模块HC-08 Android App开发

蓝牙透传模块HC-08 Android App开发 1、App整体开发思路 a、首先要申请权限,采用动态申请的方式,用户点击确认后方可操作蓝牙。 b、搜索蓝牙,之前的版本用startLeScan函数搜索蓝牙,虽然高版本中依然可用,但是google已…

什么时候该停止使用Scrum?

01、TL;DR:一个团队什么时候应该停止使用Scrum? 什么时候才能超越Scrum?毕竟许多类似思想、实践等事务迟早会过时;那为什么Scrum会是个例外?此外,我们不是通过实践Scrum来获得报酬,而是在既定的约束条件下解决客户的问题,同时又能为组织的…

( 链表) 707. 设计链表 ——【Leetcode每日一题】

❓707. 设计链表 难度:中等 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则还…