最近正好在做web前端的性能测试,这次就来聊聊关于这个的测试思路~

首先从用户的思维去思考,关于web前端性能,用户最看重的是什么......

其实就是下面三个点:

  1. 加载性能(即页面加载时间+资源加载时间)

  2. 渲染性能(即浏览器绘制出包含实际内容(如文本、图片等)的时间)

  3. 交互性能(即用户可以进行点击、输入等操作的时间和延迟时间)

这三点组成了用户的等待时间,也就是我们俗称的258秒~

那基于这三点,我开始设计测试方案,最后还是选择了jmeter+lighthouse的性能测试模式,原因也很简单,我太熟悉jmeter了(不是),其实原因大致是下列2点:

  1. Jmeter有加载性能和交互性能方面的优势:

    (1) 精准模拟资源请求: JMeter 可以精确模拟浏览器向服务器发起的各类资源请求,包括 HTML 文档、图片、脚本、样式表等,通过合理配置完全复现用户打开页面时浏览器的加载行为。

     例如:针对一个包含大量图片和脚本文件的网页,JMeter 可以按照实际页面中资源的加载顺序依次发送请求,精准测量每个资源的加载时间;又或者根据get URL 模拟用户触发查看页面的行为来查看响应时间。

    (2) 精准模拟真实用户交互:Jmeter可以完美模拟用户的操作序列。从用户登录、点击菜单、填写表单到提交数据等一系列操作,真实还原用户操作流程。

    (3) 基于多场景并发下的加载评估: 众所周知,jmeter最出名的其实是它作为压测工具的使用,利用其灵活的线程组设置,JMeter 能够模拟不同并发用户数场景下页面的加载情况。

     例如:在低并发时,可观察页面在日常流量下基础资源的加载是否流畅;中并发模拟正常业务高峰,查看资源加载的并发处理能力,查看是否因为并发请求过多导致资源排队等待加载时间延长;高并发考验系统极限,确保在极端流量下页面仍能有基本的加载呈现,不至于完全崩溃。

  

  2. Lighthouse在渲染性能方面的优势:

    (1) 实时渲染追踪:Lighthouse 在测试过程中可以紧密跟踪页面渲染进程,精确捕捉首次绘制(FP)的确切时间点,以及后续内容逐步渲染的节奏和时间,并且可以准确评分。

    (2) 资源优化:对于页面中的资源(如图片、字体等),Lighthouse 会提供资源加载优化的建议。除了前面提到的图片压缩,还会建议合理设置缓存策略,减少重复请求,提高资源加载效率。

  

最后我的做法是设计了三个场景(基于页面平时真正的高峰时间段下的场景)查看高峰时间段系统是否可以完美承受压力,之后开始负载测试查看上压力后的各个资源的性能瓶颈,最后在附上lighthouse的测试报告方便开发优化。

下面是一些疑问和解析:

1. 疑问:jmeter的响应时间是否包含资源的加载时间?

我的答案:这个问题我问了两个不同的AI软件(chatgpt和豆包),结果给的答案截然相反,所以后续我又查了很多资料,最终确认在GET URL请求时是包括的,如果JMeter测得的响应时间过长,大概率意味着页面整体加载以及资源获取过程存在延迟因素,可以进一步排查是服务器处理缓慢、网络传输问题,还是资源本身加载异常。

2. 疑问:Lighthouse是否可以查看大量并发时页面渲染的结果?

我的答案:Lighthouse 本身不能查看大量并发的页面渲染响应结果,它没有内置机制来模拟大量并发用户访问同一个页面或者多个页面的情况,但是它可以结合jmeter来使用,在jmeter并发时进行测试来查看并发场景的页面渲染。(但是这里需要注意,响应时间如果太长lighthouse会直接判定失败不能出报告,所以建议在低并发时使用)

3. 疑问:Lighthouse是否只能对单一页面进行测试?

我的答案:Lighthouse 不能直接同时对多个页面进行测试,要是想要一下子知道多个页面,可能需要结合其他脚本来循环执行lighthouse才能得出结果。

4. 疑问:如何判断不是网络原因和带宽原因导致的响应时间过长或者超时?

我的答案:我是尝试了在多个网络环境下进行的测试才排除了网络的原因,但是也可以在测试时通过(ping [服务器 IP] -t)来查看是否丢包。

浅聊web前端性能测试的更多相关文章

  1. 两款较好的Web前端性能测试工具

    前段时间接手了一个 web 前端性能优化的任务,一时间不知道从什么地方入手,查了不少资料,发现其实还是蛮简单的,简单来说说. 一.前端性能测试是什么 前端性能测试对象主要包括: HTML.CSS.JS ...

  2. 【转】两款 Web 前端性能测试工具

    前段时间接手了一个 web 前端性能优化的任务,一时间不知道从什么地方入手,查了不少资料,发现其实还是蛮简单的,简单来说说. 一.前端性能测试是什么? 前端性能测试对象主要包括: HTML.CSS.J ...

  3. Web前端性能测试-性能测试知多少---深入分析前端站点的性能

    针对目前接手的web前端的性能,一时间不知道从什么地方入手,然后经过查找资料,发现其实还是蛮简单的. 前端性能测试对象: HTML.CSS.JS.AJAX等前端技术开发的Web页面 影响用户浏览网页速 ...

  4. web前端性能测试小点

    关于前端性能的文章: http://www.cnblogs.com/fnng/archive/2011/09/19/2181894.html web应用的前端性能响应时间指浏览器的页面加载时间.浏览器 ...

  5. 浅谈web前端性能优化

    前端性能优化: 一.尽可能减少前端http请求. 1.合并优化脚本文件和css文件. 2.同种类型的背景图片尽量放在一起,用css控制显示. 二.使用浏览器缓存. 如果能强制浏览器缓存在本地,将会降低 ...

  6. 浅谈web前端开发阅历

    WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正轨教育,大多数人都是靠本人自学成才.本文次要引见本人从事web开发以来(从大二至今)看过的书籍和本人的成长过程,目的是给想了解Java ...

  7. 浅谈web前端开发

    我个人认为前端攻城狮其实就是编程技术人员,用一句话来形容“比UI设计懂技术,比技术人员更懂交互”,当然也有人说前端工程师是工程师中的设计师,是设计师中的工程师. 好了废话不多说了,下面进入正题吧!   ...

  8. 利用Docker安装Web前端性能测试工具Sitespeed.io

    目录结构 一.Sitespeed.io概述 1.Sitespeed.io简介 2.Sitespeed.io使用场景 二.Sitespeed.io的安装和使用 1.安装Sitespeed.io 2.连接 ...

  9. 浅谈web前端安全

    单纯地在你的客户端弹出信息只是类似于迫使你在自己的房间脱衣服--没人看得到,自然也不算啥恶意行为.那么如果我把你的信息通过脚本发送到我的服务器保存起来呢?先放心,我不打算这么做,也没那笔闲钱去购置一个 ...

  10. 浅谈web前端优化

    开篇 优化网站是一个系统性和持续性的过程.很多人认为优化网站的性能只需要合并图片啦,减小HTTP请求啦,部署CDN啦就行,实际上这都是见木不见林的做法.以上的做法经常会被面试者提起,在被问到自己在网页 ...

随机推荐

  1. Python | os.path.join() method

    Python中的os.path.join()方法可以连接一个或多个路径组件. 此方法将各个路径组成部分,与每个非空部分路径组成部分恰好用一个目录分隔符(" /")连接起来. 如果要 ...

  2. ByConity与主流开源OLAP引擎(Clickhouse、Doris、Presto)性能对比分析

    引言: 随着数据量和数据复杂性的不断增加,越来越多的企业开始使用OLAP(联机分析处理)引擎来处理大规模数据并提供即时分析结果.在选择OLAP引擎时,性能是一个非常重要的因素. 因此,本文将使用TPC ...

  3. js有效括号匹配

    // 定义一个括号映射 const bracketMap = [ { left: '[', right: ']' }, { left: '<', right: '>' }, { left: ...

  4. modbus基础

    Modbus是一种单主站的主从通信模式,Modbus只能有一个主站,允许多个从站(0-247):从站之间不能交流:主站发送数据,从站应答: 一主多从 : 1. 地址码,表,功能码 地址码一般是Modb ...

  5. SpringBoot进阶教程(八十二)Spring Security图形验证码

    在之前的博文<SpringBoot进阶教程(八十)Spring Security>中,已经介绍了在Spring Security中如何基于formLogin认证.基于HttpBasic认证 ...

  6. 黑神话:悟空电脑太卡?配置不够?ToDesk云电脑入门新手教程

    许多玩家在玩<黑神话:悟空>时会遭遇硬件配置不足导致的游戏卡顿.画面不流畅等问题. 其实这个难题很好解决,用ToDesk云电脑即可迎刃而解.即使你的本地电脑配置不高,也能享受到流畅的游戏体 ...

  7. js常用函数-02 _关于$(function () { })的运行时机

    js常用函数-02 _关于$(function () { })的运行时机 代码模式: $(function() { //执行操作 }); 查找到的结果: (function() {}),即 $(doc ...

  8. 体验国产系统Deepin:很爽

    最近开始把之前一直吃亏的旧电脑拿出来再利用了,先还是选择了熟悉的ubuntu系列.安装了Ubuntu 22.04之后,风风火火地把需要的开发环境搭建起来,虽然桌面有些卡顿,但瑕不掩瑜玉.趁着热情又想着 ...

  9. SSIS错误汇总

    问题一 [Excel 目标 [2]] 错误: SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.对连接管理器"未匹配用 ...

  10. 鸿蒙Navigation拦截器实现页面跳转登录鉴权方案

    我们在进行页面跳转时,很多情况下都得考虑登录状态问题,比如进入个人信息页面,下单交易页面等等.在这些场景下,通常在页面跳转前,会先判断下用户是否已经登录,若已登录,则跳转到相应的目标页面,若没有登录, ...