前端自测 - 那些经典的bug

前言

我一直坚持的一个观点,就是不以bug数论成败,但是这个需要加一个前提,就是不能出现那些低级的bug,更不能反复的出现。
由此整理了一系列我认为比较经典常见的前端bug,都是在项目中多次遇到过的,用于前端开发在自测的时候参考,不应当再被测试同学发现这样的问题

1 列表数据搜索时,需重置页码数据

台账表单在搜索时,需将页码数据重置为1,否则极易出现以下bug
初始化台账时,全部数据有300条,页码可以选择到第10页,然后翻页到第10页;此时添加一项筛选条件重新搜索,筛选后数据仅有11条,但页码仍然传的10,这样就会展示出全部数据11条,但台账无数据
因为数据量不够大,不足以支撑当前前端传入的大页码。后端无相关兜底的话,这样就是个bug。

解法

列表数据搜素条件变化时,需要将页码重置为1

2 弹窗二次打开,上次表单填充数据、校验未清空

一个经典的场景,弹窗里面有校验表单,用户输入一些信息之后,提交关闭弹窗,或者直接关闭弹窗,再次打开弹窗的时候,上一次表单的输入项、校验信息未清空

解法

表单型弹窗关闭后,清空填充数据、校验情况

3 不同界面样式覆盖

有一个经典场景:某个界面初始化时样式没问题,然后切几个界面之后回来,样式就错乱了
不用想,肯定是有样式的覆盖,很多的时候,是由于scss未添加scoped的原因,还有一些样式覆盖,是因为在单组件中,将全局的样式重置了

解法
  • css文件需要添加scoped
  • 如果不能添加scoped的话,需要将css通过一个命名空间包住

4 前端未做数据容错处理,造成界面白屏、卡住

浏览器对大部分前端的bug都是友好的,很少出现白屏,但有一种除外
就是从null undefined 上取数据
我们从前端取的数据,可以自己保证,但如果是从后端、甚至上下游来源取的数据,可能就不能那么信任了

const resp = await http.get(url)
this.total = resp.data.page.total
// 其余业务逻辑
如果resp.data,是null或者undefined,这样的话,后面的业务都不会执行
解法
// 通过?.进行兼容判断
this.total = resp?.data?.page?.total

5 前端处理JSON数据未做兼容

通过JSON方法处理数据时,会对数据源有要求,参考下图。后续代码也会无法执行
在这里插入图片描述

解法

JSON方法处理数据时,添加try catch进行兜底兼容

6 表单重复提交问题

这个算是很经典的问题了,个人建议系统内所有的表单都添加防止重复提交,如果考虑性价比或者精力不够,可以在重点的表单提交上添加该功能

解法

开发通用防止重复提交的指令,在所有的提交按钮上添加该指令

7 数据过长、过短的展示问题

如果css未做限制的话,QA人员可能造一些很长很长的数据,导致界面展示异常
也有可能造出空数据、很短的数据来,前端需要做兜底展示

解法

提前通过css控制好数据过长、过短展示

8 输入数据过长限制

这个严格来说不能是前端bug,需要前端与后端一起配合,比如后端数据库是该字段存的50长度,前端限制输入为60,那输入过长的话数据录入肯定会报错

解法

与后端约定好字段长度,输入框都需要添加对应的 maxlength

9 通过setTimeout来判断一些情况

有些比较初级的研发,会通过setTimeout来取上一个接口的返回,而且不加轮询的这种,就一次性取值。
这个就比较坑了,如果网络慢、或者后端返回慢的话,就会取不到数据了

let a = ''
ajax(() => {a = xxx
})
setTimout(() => {// 此处需要用到a
}, 2000)
解法

严谨通过setTimeout来等待接口的返回

10 边界0的处理

前端正常对表单录入自测时,可能没有问题,但很多的时候输入(或者选择)了0,可能就会判断错误,引发问题。
有粗心的前端,校验数据的时候,会如下情况判断。他的本意是判断如果未选择的话,默认给一个赋值。但现在选择了0,也错误的给了默认的赋值。

form.x = form.x || '2'
解法

直接判断是否为null undefined就好了,不要进行 if(a)这种的简化判断

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

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

相关文章

如何学习大模型

学习大模型(例如GPT-3、BERT等)需要一定的数学和编程基础,以及对人工智能、机器学习、自然语言处理等领域的了解。以下是一个学习大模型的基本路线: 基础知识储备: 数学基础:掌握线性代数、概率论与数理统…

史上最全,呕心沥血总结oracle推进SCN方法(五)

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等) 公众号:老苏畅谈运维 欢迎关注本人公众号,更多精彩与您分享。前面介…

2014年上海高考作文题目(ChatGPT版)

一、2014年6月7日上海高考作文题目 生活中,人们常用认可度判别事物,区分高下。请写一篇文章,谈谈你对“认可度”的认识和思考。 要求:(1)自拟题目;(2)不少于800字。 二、…

小牛翻译API详解:功能、优势介绍及案例实战(附完整代码)

写在前面小牛翻译是做什么的案例-调用图片翻译API进行英文翻译✔准备工作✔获取密钥✔调用API✔完整代码✔运行项目 使用建议 写在前面 随着全球化的快速发展和跨国交流的增多,翻译软件的市场需求持续增长。根据市场数据,全球语言翻译软件市场规模在过去…

google keybox.xml格式 内容有哪些 Keybox数量、设备ID、算法的 私钥 公钥 证书链 (ECDSA即ECC, RSA)

根据您提供的文件内容,keybox.xml 文件包含以下主要信息: Keybox数量 ([NumberOfKeyboxes](file:///d%3A/010F200/svn/ProduceToolMfc/FtSmartPos/FtSmartPos/ToolBydMes/httpclient/e%3A%5CGoogleKey%5CLinux_AttestationKeyboxPack_Tool%5CLinux_Atte…

golang定时器使用示例

1.定时器创建与停止 //定时器使用t1 : time.NewTimer(2 * time.Second)<-t1.Cfmt.Println("timer1 fired")t2 : time.NewTimer(5 * time.Second)go func() {fmt.Println("go协程处理中,等待5秒后输出...")<-t2.Cfmt.Println("timer2 fired&quo…

富格林:获取阻挠暗箱伎俩方案

富格林指出&#xff0c;在当今经济不稳定的环境下&#xff0c;投资者们越来越倾向于将资金投入到相对安全稳定的产品中&#xff0c;而黄金往往是他们的首选。然而&#xff0c;成功投资现货黄金并不容易&#xff0c;需要掌握阻挠暗箱伎俩的技巧和策略。以下是富格林给大家准备的…

场景图生成网络——RelTR(TPAMI2023)

一、ReITR概述 场景图是一种图结构&#xff0c;其节点代表图像中的实体&#xff0c;边代表实体间的关系。这项技术超越了传统的对象检测&#xff0c;与视觉关系检测紧密相关&#xff0c;对图像检索、图像字幕、视觉问答&#xff08;VQA&#xff09;和图像生成等多种视觉-语言任…

从零开始搭建盲盒小程序源码的步骤指南

一、引言 盲盒小程序以其神秘性和趣味性深受用户喜爱&#xff0c;越来越多的开发者开始关注并尝试搭建盲盒小程序。本文将详细介绍从零开始搭建盲盒小程序源码的步骤&#xff0c;帮助初学者快速上手。 二、准备工作 1.注册小程序账号&#xff1a;在微信公众平台注册小程序账…

男士内裤怎么选?五款不能错过的超舒适男士内裤

在快节奏的现代都市生活中&#xff0c;男士们同样需要关注内在穿搭的品质与舒适度。一条优质贴身的男士内裤&#xff0c;不仅是日常穿着的舒适保障&#xff0c;更是展现男性精致品味的秘密武器。今天&#xff0c;就让我们一同探讨如何挑选出最适合自己的男士内裤&#xff0c;并…

ArcGIS JSAPI 学习教程 - ArcGIS Maps SDK for JavaScript - 框选显示高亮几何对象

ArcGIS JSAPI 学习教程 - ArcGIS Maps SDK for JavaScript - 框选显示高亮对象 核心代码完整代码&#xff1a;在线示例 在研究 ArcGIS JSAPI RenderNode 高亮&#xff08;highlights&#xff09;FBO 的时候&#xff0c;实现了一下框选高亮几何对象&#xff0c;这里分享一下。 …

LlamaIndex三 配置

前言 在上篇LlamIndex二 RAG应用开发 - 掘金 (juejin.cn)中&#xff0c;我们学习到LlamaIndex对RAG的全面支持。这篇文章&#xff0c;我们就来细化这个过程&#xff0c;尝试各种配置选项&#xff0c;满足不同场景需求。学习过后&#xff0c;大家再开发RAG应用&#xff0c;会更…

Sketch语言设置指南:将英文版改成中文版的教程

Sketch版本的转换一直是困扰大家的关键问题。如今UI设计领域的UI设计软件很多&#xff0c;但大部分都是英文版。对于国内英语基础差的设计师来说&#xff0c;使用这样的软件无形中增加了工作量&#xff0c;往往需要在设计编辑的同时查阅翻译。即时设计详细介绍了Sketch英文版如…

单个python文件代码的车牌检测系统 使用pyqt做界面进行车牌检测,可以保存结果到excel文件

融合了hyperlpr3和opencv 来检测车牌 通过图片检测车牌的系统&#xff0c;使用了pyqt和hyperlpr3结合来进行检测&#xff0c;可以保存检测的结果到excel文件 亲自测试修改代码&#xff0c;运行正常并且不依赖百度网络api, 纯本地运行&#xff0c;融合了2个车牌检测模型, 第…

《计算机组成原理》笔记整理

第一章 计算机系统概论 计算机的硬件&#xff1a;计算机中的电子电路和物理装置&#xff1b;计算机硬件的五大部分&#xff1a;运算器、控制器、存储器、输入设备和输出设备&#xff1b;计算机的软件&#xff1a;计算机运行所需的程序及相关的资料&#xff1b;软件系统&#x…

2024年【起重机司机(限桥式起重机)】考试试卷及起重机司机(限桥式起重机)证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【起重机司机(限桥式起重机)】考试试卷及起重机司机(限桥式起重机)证考试&#xff0c;包含起重机司机(限桥式起重机)考试试卷答案和解析及起重机司机(限桥式起重机)证考试练习。安全生产模拟考试一点通结合国家…

相对路径vs绝对路径 python文件的添加与删除

目录 一、路径问题 1.绝对路径 2.相对路径 3.在不同的操作系统中有不同的方法来查看当前路径&#xff1a; 3.1Windows 系统&#xff1a; 3.2 类 Unix 系统 3.3 pythoon如何查看当前路径 二、使用步骤 2.1 Python文件操作 2.2 cd”命令 2.2.1 cd 目录路径&#xff1a…

音视频开发17 FFmpeg 音频解码- 将 aac 解码成 pcm

这一节&#xff0c;接 音视频开发12 FFmpeg 解复用详情分析&#xff0c;前面我们已经对一个 MP4文件&#xff0c;或者 FLV文件&#xff0c;或者TS文件进行了 解复用&#xff0c;解出来的 视频是H264,音频是AAC&#xff0c;那么接下来就要对H264和AAC进行处理&#xff0c;这一节…

WebAPI AOP方式 异常方式

》》 自定义异常处理特性 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using System.Web.Http.Filters;namespace WebApplication11 {/// <summary>/// 异常处理特性/// </sum…

005.FashionMNIST数据集简介

一、FashionMNIST数据集简介 FashionMNIST数据集&#xff0c;作为经典的MNIST数据集的现代替代品的数据集&#xff0c;是衣物分类数据集&#xff0c;由Zalando&#xff08;一家德国的在线时尚零售商&#xff09;发布。 FashionMNIST数据集和MNIST相比。图片尺寸相同&#xff0c…