你们公司的【前端项目】是如何做测试的?字节10年测试经验的我这样做的...

前端项目也叫web端项目(通俗讲就是网页上的功能)是我们能够在屏幕上看到并产生交互的体验。

前端项目如何做测试?

要讲清楚这个问题,先需要你对测试流程现有一个全局的了解,先上一张测试流程图:

测试流程图

接下来下面我们从需求阶段-开发阶段-测试阶段-发布阶段 共四个环节来还原一次完整的测试过程。

备注: 前端项目如何测试,在以上四个环节中的"测试阶段" 有详细阐述

一、需求阶段

在项目开始后,产品同学提出了若干需求,经过需求评审之后,最终给出了产品需求计划和迭代文档。

在这个阶段,测试跟开发同学要参与需求评审,在需求评审的过程中,开发同学会开始思考怎么做。

作为测试,有哪些不理解的,要及时提出来,让产品经理给出更清晰的解答。

最终,经过需求评审和澄清,我们了解了需求的细节,有哪些功能,要测哪几个点,要做到大概心里有数。

二、开发阶段

需求已经清楚了,开发同学就要进入开发了。同时呢,我们开始确定测试方案(工期评估、人力安排),根据需求编写测试用例(一般使用xmind或excel,根据自己习惯和团队规范来选择)。

为了防止测试用例遗漏,我们要做一次用例评审,邀请开发和产品经理参加,拉齐各方对需求的理解,最终产出一份完整的测试用例。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

三、测试阶段

在测试阶段,分为后端测试和前端测试,划分如下:

  1. 前端测试部分(用户在前端的操作,包含前端样式,交互效果等)
  2. 后端测试部分(前端对后端的接口请求,包含增删改查、数据处理的逻辑等)
说明:有些公司前后端测试分别由不同的团队或测试同学跟进,有些公司前后端测试都由同一个团队或同一个人跟进。

后端测试一般会先于前端测试介入,为啥要后端测试先开始呢?

来看一个小片段(下例中,前后端测试不是同一个人):

开始测试了,前端测试同学一看,页面没有展示预期的数据。好家伙,顺手给前端小哥提了一个bug。
前端开发经过排查发现直喊冤:后端没返回数据,臣妾也做不到呐。回头便将bug指给后端研发小哥了。
后端小哥一看:这个bug刚刚已经有后端测试同学提了 ,别着急哈,正在解决。
前端测试同学心想:敢情我这是白忙活了呀,怎么避免这个问题呢?
后来,经过大家的讨论决定:后端测试先开始,保证接口基本功能正常后前端测试再介入,避免重复劳动,提高工作效率。

首先开始的是后端测试,后端的测试范围如下:

1、功能测试

输入(入参)的测试:必传和非必传、参数长度、数值类型、正常和异常、有、无和为空,以及参数组合。
输出(返回)的测试:主要看正常返回的响应内容,和异常返回的响应码和提示语。

2、异常测试

重复提交:多次重复提交,连续重复提交,特别是涉及到支付、交易金额相关。
并发:两个以上用户操作同一场景,争夺资源、死锁等情况。
事务测试:多个连续步骤才能完成的业务流程。

3、性能测试(一般来说新接口需要做,老接口根据实际需求来定)

主要看响应时间、吞吐量、并发数、服务器资源使用率、cpu、内存、io、network等

这些测试内容基本都可以通过接口测试来完成,接口测试的工具推荐Postman。

接口稳定之后,可以写成自动化测试,方便后续的回归测试。

这里用到的自动化测试框架,小编使用的是java中的Testng(常用的还有JUnit4),不同的语言有各自的测试框架(比如python中的Unittest和Pytest)【本文最后会分享他们的区别】。

后端测试完成一遍冒烟测试之后,前端测试就可以开始了(重点来了,重点来了)

前端的测试范围如下:

1、UI测试

验证所有页面字体的风格是否一致
背景颜色应该与字体颜色和前景颜色相搭配
图片的大小和质量是否正常

2、功能测试(也称为e2e测试)

基本的功能是否符合预期
模拟用户操作,交互流程是否正确

3、兼容性测试

平台兼容性,使用用不同的 操作系统平台对网站进行测试。最常见的有 Windows、macOS、 Linux 等。
浏览器兼容性, 查看不同浏览器中的兼容性问题。
分辨率测试,在不同分辨率下的显示效果,避免分辨率低时界面文字显示太大,而分辨率高时又有些文字显示时太小。

4、性能测试

页面首次打开的耗时
页面加载时间
频繁操作是否崩溃

5、稳定性测试

页面是否白屏
掉电重启,断网重连后是否正常
长时间运行是否会崩溃

6、易用性测试

常用快捷键 (刷新,关闭等)
常用习惯性操作(回车搜索)
便捷性功能(记住密码等)

在测试的过程中,要对照测试用例来执行,避免遗漏。

每执行完一个测试用例,要记录实际的效果,不符合预期的要在禅道(或其它项目管理平台)记录bug,并指给对应的开发同学。

等所有的bug都解完了,需要完整的流程走一遍(回归测试)。

四、发布阶段

前后端的测试case都执行完了,bug也修改好了,就可以发送测试报告了。

一切妥当之后,就等一个良辰吉日将项目发布上线。

所谓吉日,一般要避免周五或节假日的前几天,因为万一上线后有问题,研发小哥们都在休息,找不到人修复,影响到用户体验可就要挨老板批了。

所谓良辰,一般是在夜黑风高的晚上,因为这个时候用户基本休息了,万一上线后有问题及时回滚就行了,不会影响到用户体验。煞费苦心,一切都是为了用户着想!

上线后,一般会通过灰度放量,观察线上效果,没有问题再逐步放量,最终完成项目的全量发布。

现在,有关“『前端项目』是如何做测试的?”已经有了答案。

接下来回复几个补充问题

1、前端测试覆盖率基本上很少有100%的,那么哪些代码需要测试?

没错,前端测试覆盖率几乎不可能到100%。

正因为如此,为了保证项目质量,不仅需要测试前端代码的展示效果,也要测试后端代码的处理逻辑。

2、有没有e2e测试?

e2e全称 end-to-end,其实就是模拟用户行为,属于是前端测试的内容。可以通过编写脚本或手动来完成,几乎所有的项目,业务都在不断更新的。业务变了,模拟用户行为也会随之改变。因此编写脚本性价比不高,所以通常是由人工来完成这项测试工作

3、前端项目有专业的测试人员吗?

大厂有细分,会分为前端测试和后端测试(也叫服务端测试),分别保障前端和后端的质量。

前端测试人员主要负责页面展示和交互的正确性。

后端测试人员主要负责接口请求的正确性。

4、测试框架是什么?

小编自己在公司用的是java中的TestNG。

如果是使用python语言,也有对应的测试框架,下面分别说一下Java和Python的测试框架

Java常用的测试框架

有JUnit和TestNG,二者的对比如下图:

相对于JUnit4来说,TestNG功能更加丰富。

从实际使用的角度来说,参数化的设置及功能,以及处理有上下依赖关系的测试时,JUnit测试框架有着明显的不足。因此,一般都会使用TestNG(推荐)。

python常用的测试框架

常用的有Unittest、Pytest它们的区别如下,各有特色,可以根据自己的业务需求来选择。

至于java和python哪个更适合做测试?

建议结合自己的基础能力和公司的语言习惯来选择.

最后: 可以在我的VX公众号:【自动化测试老司机】免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

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

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

相关文章

旧版Xcode文件较大导致下载总是失败但又不能断点续传重新开始的解决方法

问题: 旧版mac下载旧版Xcode时需要进入https://developer.apple.com/download/all/?qxcode下载,但是下载这些文件需要登录。登录后下载中途很容易失败,失败后又必须重新下载。 解决方案: 下载这里面的内容都需要登录&#xff0…

开发一个RISC-V上的操作系统(二)—— 系统引导程序(Bootloader)

目录 文章传送门 一、什么是Bootloader 二、简单的启动程序 三、上板测试 文章传送门 开发一个RISC-V上的操作系统(一)—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统(二)—— 系统引导…

机器学习深度学习——多层感知机

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——感知机 📚订阅专栏:机器学习&&深度学习 希望文章对你们有所帮助 上一节…

Git时间:版本控制工具进阶

Git时间:版本控制工具进阶 忽略文件 Git允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的目录下是否存在一个名为.gitignore的文件,如果存在,就去一行行读取这个文件中的内容,并把每一行指定的文件…

MySQL 读写分离

目录 一、什么是读写分离? 二、为什么要读写分离呢? 三、什么时候要读写分离? 四、主从复制与读写分离 五、MySQL 读写分离原理 六、企业 使用MySQL 读写分离场景 1)基于程序代码内部实现 2)基于中间代理层实现…

你说你会Java手动锁,但你会这道题吗???

按照这个格式输出你会吗??? 你说你不会,接下来认真看认真学了。 1.首先引入原子类。AtomicInteger num new AtomicInteger(0); 什么是原子类? 就是可以保证线程安全的原子操作的数据类型。 有什么作用?…

在Debian 12 上安装 PHP 5.6, 7.4

环境:Debian 12 Debian 12 默认的PHP版本为 8.2 如果直接安装php7.4就出现下面的报错: sudo apt-get install libapache2-mod-php7.4 php7.4 php7.4-gd php7.4-opcache php7.4-mbstring php7.4-xml php7.4-json php7.4-zip php7.4-curl php7.4-imap p…

导出为PDF加封面且分页处理dom元素分割

文章目录 正常展示页面导出后效果代码 正常展示页面 导出后效果 代码 组件内 <template><div><div><div class"content" id"content" style"padding: 0px 20px"><div class"item"><divstyle"…

Ubuntu Server版 之 mysql 系列

Ubuntu 分 桌面版 和 服务版 桌面版 &#xff1a;有额外的简易界面 服务版&#xff1a;是纯黑框的。没有任何UI界面的可言 安装mysql 安装位置 一般按照的位置存放在 /usr/bin 中 sudo apt-get install mysql-server查看mysql的状态 service mysql status mysql 安全设置…

使用xtcp映射穿透指定服务

使用xtcp映射穿透指定服务 管理员Ubuntu配置公网服务端frps配置service自启(可选) 配置内网服务端frpc配置service自启(可选) 使用者配置service自启(可选) 通过frp实现内网client访问另外一个内网服务器 管理员 1&#xff09;配置公网服务端frps2&#xff09;配置内网服务端…

FS32K144官方提供串口Bootloader对接Matlab串口烧写程序

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ 前言 Bootloader升级工具&#xff1a;可用TTL、232、485&#xff08;硬件收发模式&#xff09;,其中的一种&#x…

CertGetCertificateChain trust error CERT_TRUST_REVOCATION_STATUS_UNKNOWN

执行命令&#xff1a; curl --cacert http_ca.crt -u elastic https://localhost:9200 结果报错了 直接访问https://localhost:9200/ &#xff0c;正常 解决办法&#xff1a; curl --cacert http_ca.crt -u elastic https://localhost:9200 --insecure

2_Apollo4BlueLite中断控制器NVIC

1.概述 Apollo4BlueLite 的中断控制器是采用 ARM Cortex-M4 内核&#xff0c;并集成了 NVIC&#xff08;Nested Vectored Interrupt Controller&#xff0c;嵌套向量中断控制器&#xff09;作为其中断控制器。 NVIC 是 ARM Cortex-M 系列处理器中常用的中断控制器&#xff0c…

「前缀和以及差分数组」

文章目录 1 前缀和数组1.1 题解1.2 Code1.3 结果 2 二维矩阵的前缀和数组2.1 题解2.2 Code2.3 结果 3 差分数组 1 前缀和数组 适用于快速频繁的计算一个索引区间内的元素之和&#xff0c;核心思想就是使用一个前缀和数组&#xff0c;然后使用前缀和数组的两个元素之差&#xf…

GNN的一篇入门 :A Gentle Introduction to Graph Neural Networks

原文链接 A Gentle Introduction to Graph Neural Networks (distill.pub)https://distill.pub/2021/gnn-intro/ 内容简介&#xff1a;本文是“A Gentle Introduction to Graph Neural Networks”的阅读笔记&#xff0c;因为第一次接触GNN&#xff0c;很多深奥的概念不懂&…

C++容器——list的模拟实现

目录 一.list的基本结构 二. 接下来就是对list类构造函数的设计了&#xff1a; 三.链表数据的增加&#xff1a; 四.接下来就是迭代器的创建了&#xff1a; 四.简单函数的实现&#xff1a; 五.构造与析构 六.拷贝构造和赋值重载 传统写法: 现代写法&#xff1a; 七.迭…

C#中未能找到为main方法指定的XXX.Program怎么解决

有时在修改项目名称后&#xff0c;报错未能找到为main方法指定的XXX.Program 解决办法&#xff1a; 点击进入项目属性&#xff0c;将启动对象设置为空或者你要指定的XXX.Program&#xff08;改名后的&#xff09;

akka 简单使用

由于AKka的核心是Actor&#xff0c;而Actor是按照Actor模型进行实现的&#xff0c;所以在使用Akka之前&#xff0c;有必要弄清楚什么是Actor模型。 Actor模型最早是1973年Carl Hewitt、Peter Bishop和Richard Seiger的论文中出现的&#xff0c;受物理学中的广义相对论(general…

服务器数据恢复-误操作导致存储VDisk丢失的数据恢复案例

服务器数据恢复环境&#xff1a; IBM某型号存储&#xff1b; Solaris操作系统&#xff0c;部署Oracle数据库。 服务器故障&#xff1a; 重建MDisk导致对应的存储池中的VDisk丢失&#xff0c;导致Solaris操作系统中的Oracle数据库无法使用。 服务器数据恢复过程&#xff1a; 1、…

理解Android中不同的Context

作者&#xff1a;两日的blog Context是什么&#xff0c;有什么用 在Android开发中&#xff0c;Context是一个抽象类&#xff0c;它是Android应用程序环境的一部分。它提供了访问应用程序资源和执行各种操作的接口。可以说&#xff0c;Context是Android应用程序与系统环境进行交…