10年测试工程师 —— 手把手教会你做前端性能测试(超详细)

这篇具有很好参考价值的文章主要介绍了10年测试工程师 —— 手把手教会你做前端性能测试(超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

普通用户如何评价一个网站的体验好不好呢?

除了满足他的功能需求以外,用得爽不爽可能是最大的评估因素。这个爽不爽可以简单理解为快不快,好不好看,是不是符合他的操作习惯等等。而这里的快不快就是我们说的性能。

有数据表明,性能在一定程度上跟公司的收益直接相关。

如下所示:

性能

收益

Google 延迟 400ms

搜索量下降 0.59%

Bing 延迟 2s

收入下降 4.3%

Yahoo 延迟 400ms

流量下降 5-9%

Mozilla 页面打开减少 2.2s

下载量提升 15.4%

Netflix 开启 Gzip

性能提升 13.25% 带宽减少50%

为什么性能会跟收益有关系呢? 因为慢了用户就不用了,用户少了收益自然就下降了。所以提升性能势在必行。

那我们应该从哪些方面提升网站的性能?其实影响性能的因素有很多,大致可分为前端性能和后端性能。本文只讨论前端性能,也就是从用户输入网址或点开链接到页面打开的速度。

应该怎么测试前端的性能呢?

1. 先了解网页加载的过程

在讲怎么对前端进行性能测试之前,我们需要先了解从输入网址开始到页面显示出来这个过程中都经过了什么。

大致的流程是:

  • 输入网址:在浏览器中输入 URL 或点击链接(一般都是域名);

  • 解析域名:浏览器连接到DNS(域名解析系统)将域名解析为对应的 IP 地址;

  • 建立连接:然后与这个 IP 地址确定的那台服务器建立起 TCP 网络连接(三次握手);

  • 发送请求:随后向服务端发送 HTTP 请求;

  • 接收响应:服务端处理完请求后,将数据放在 HTTP 响应里返回给客户端;

  • 关闭连接:数据发送完毕之后关闭 TCP 连接(四次挥手);

  • 渲染页面:浏览器解析模型(HTML&CSS)、渲染页面(布局、绘制);

  • 页面显示:渲染完毕后,页面呈现给用户,并时刻等待响应用户的操作。

如下图所示:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

如果从输入网址后,用户可感知的过程出发,大致可以分为:

  • 显示白屏:从屏幕空白到第一个画面出来。

  • 首次有内容显示:页面在首次有内容显示出来。

  • 显示部分内容:页面中显示部分内容。

  • 页面可以操作:页面所有内容都显示出来,并且可以正常操作。

如下图所示:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

图片来自网络,内容有修改。

2. 再确定关注哪些性能指标

了解了页面的加载过程,我们就需要针对每个过程制定指标了,这样才能衡量性能好不好。

基于用户可感知的过程(用户体验)的常见指标有:

  • 白屏时间(FirstPaint,FP):从屏幕空白到第一个画面出来的时间;

  • 首次内容渲染时间(FirstContentful Paint,FCP):渲染出首个文本或图片的时间;

  • 最大内容绘制时间(Largest Contentful Paint,LCP) :渲染出最大文本或图片的时间;

  • 可交互时间(Time To Interactive,TTI):网页需要多长时间才能提供完整交互功能。

怎么衡量这些指标到底好不好呢?

  1. 参考业界的标准:以业界标准的指标作为参考,跟业界对齐;

  2. 参考竞品的数据:以竞品的性能指标作为参考,向对手学习;

  3. 参考监控的数据:采集用户的前端性能数据作为参考;

比如参考业界的指标:

指标

First Contentful Paint

0~1.8s

1.8~3s

>3s

First Meaningful Paint

0~2s

2~4s

>4s

Speed Index

0~3.4s

3.4~5.8s

>5.8s

First CPU Idle

0~4.7s

4.8~6.5s

>6.5s

Time to Interactive

0~3.8s

3.9~7.3s

>7.3s

Max Potential First Input Delay

0~130ms

130~250ms

>250ms

Total Blocking Time

0~200ms

200~600ms

600ms

Largest Contentful Paint

0~2.5s

2.5~4s

4s

来自:https://mp.weixin.qq.com/s/-AGuUT0sPKn4pkZuP8gqLA

当然也要关注影响性能的因素,比如页面请求数、图片大小、文件是否压缩、是否使用 CDN 等。

由此可以制定出自己产品的性能指标,比如:

指标项

建议/参考值

指标项说明

耗时

finish(s)

<5s

页面上所有 HTTP 请求发送到响应完成的时间

DOMContentLoaded(s)

<1s

DOM 树构建完成

Load(s)

<3s

页面加载完毕

First Contentful Paint

<1.8s

测量页面从开始加载到页面内容的任何部分在屏幕上完成渲染的时间

Time to Interactive

<3.8s

测量页面从开始加载到主要子资源完成渲染,并能够快速、可靠地响应用户输入所需的时间。

Speed Index网页速度

<3.4s

衡量页面加载过程中内容从视觉上呈现的速度。

Total Blocking Time(总阻塞时间

<200ms

一个页面的总阻塞时间是在 FCP 和 TTI 之间发生的每个长任务的阻塞时间总和。

Largest Contentful Paint

<2.5s

根据页面首次开始加载的时间点来报告可视区域内可见的最大图像或文本块完成渲染的相对时间。

Cumulative Layout Shift

<0.1s

测量整个页面生命周期内发生的所有意外布局偏移中最大一连串的布局偏移分数

页面

页面请求数

<80个

页面所有的 HTTP 请求个数。

JS

/

控制体积和数量,体积越大加载耗时越久,数量越多网络交互耗时越久,可参照同行竞品数据。

CSS

/

尽可能的少,可参照同行竞品数据。

图片

<100k

页面资源

/

控制资源大小,资源越大加载耗时越久,可参照同行竞品数据

CDN

静态资源使用 CDN

3. 选择合适的测试工具

关注的指标定好了,下面看怎么拿到这些指标。

1. Lighthouse:前端性能自动化测试分析工具

Lighthouse 是谷歌开源的一款 Web 前端性能自动化测试分析工具,主要用于改进网络应用的质量,我们只需要为其提供一个被测网址,它就能自动进行一些测试,最终会生成一个包括页面性能、PWA(Progressive Web apps,渐进式 Web 应用)、可访问性(无障碍)、最佳实践、SEO 的报告清单提供参考。

我们可以通过 Chrome 开发者工具、Chrome 扩展、命令行、Node Module 使用 Lighthouse。

以  Chrome 开发者工具为例,使用方法如下:

STEP 1. 用 Chrome/Edge 打开被测网址,按 F12 ,开启开发者工具,就能看到 Lighthouse 了。

如下所示:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

STEP 2. 然后点击【Analyze page load】开始分析

报告如下:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

除了上图的评分和指标外,报告中还包括一些提高网页加载速度的优化建议和应用性能的诊断结果。

2. Pingdom Website Speed Test:全面分析影响页面加载速度的原因

Pingdom Website Speed Test 可以全面分析影响页面加载速度的原因,分析出页面中每个元素的大小、详细信息以及各个资源的请求时间。

这个网站的口号非常好:「互联网很脆弱,成为第一个知道你的网站处于危险之中的人。

网站地址:https://tools.pingdom.com/

使用特别简单,只要输入 URL,选择测试的地区,点 「START TEST」 即可,缺点是只能测试不需要登录的页面。

测试报告如下所示:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

3. PageSpeed Insights:测试页面在移动和桌面设备上的性能

PageSpeed Insights (PSI) 是由谷歌开发的网站测速工具,主要是用来测试页面在移动设备和桌面设备上的性能,并提供改进页面的建议。

网站地址:https://pagespeed.web.dev/

测试报告如下:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

5. Chrome DevTools - Performance insights:获取网站性能的可行性深度分析

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

用法参考:https://juejin.cn/post/7107537105664327716

6.自研的性能测试平台

各公司业务特性、关注重点、性能要求等都不尽相同,因此定制开发前端性能测试平台也很常见,一般会基于 Lighthouse 开发。

比如:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

7. 前端组件的性能测试

前面说的都是页面的性能测试方法,但其实页面上还包含了大量的组件。比如:输入框、滚动条、日历等。而组件也会存在性能问题,应该如何测试组件的性能呢?

用 Chrome DevTools 就可以。

测试方法:

STEP 1.  在 Chrome 中输入 URL ,按 F12,打开 Chrome DevTools,点击「性能」标签。

如下所示:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

STEP 2. 点左上角的录制按钮,开始录制:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

STEP 3. 对要测试的组件操作后,停止录制。

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

STEP 4. 停止录制后会自动生成报告,对加载、执行脚本、渲染、绘制的耗时求和即可。这个时间就反映组件的性能。

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

当前对组件的耗时没有明确的标准,以使用流畅、无卡顿感为主,如果有性能优化,可用该方法提供性能优化数据。

4. 制定合适的测试策略

重点关注

需要重点关注的页面性能:

  1. 用户访问量高的页面;

  2. 用户点击量高的功能;

  3. 网站一级/部分二级重要的页面;

  4. 监控发现耗时久的页面/功能;

  5. 用户反馈卡顿的页面/功能。

需要注意

  • 配置一致:选用与客户配置一致或相似的设备(操作系统、系统版本、系统设置、浏览器、浏览器版本等)进行测试;

  • 数据一致:每次测试要用相同的测试数据;

  • 操作一致:每次的操作场景要保持一致;

  • 网络一致:保持网络稳定,每次测试的网络(WIFI、3G、4G、5G)和网速保持一致;

自动测试

搭建固定的前端性能测试环境是有必要的,这样可以保证配置、设备、数据、操作、网络都是一致的,便于性能测试的比对,而且还可以通过自动化的手段重复执行。

比如:

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

总结

本文从网页加载的过程、过程中关注的指标、获取指标的工具和测试的策略较为系统的介绍了前端性能测试的思路,希望能够带给大家一些启发。


学习资源分享

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

前端性能测试,自动化测试,软件测试,技术分享,前端,软件测试,测试工程师,自动化测试,性能测试文章来源地址https://www.toymoban.com/news/detail-640785.html

到了这里,关于10年测试工程师 —— 手把手教会你做前端性能测试(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教会你Unity场景切换进度条制作

    大家好,我是橙子,今天为大家带来的是Unity场景切换进度条的教程。 ★,♫◦★,♫◦★,♫◦★,--------------------华丽的分割线--------------------♫◦★,♫◦★,♫◦★,♫◦★,♫◦ 答:有一些场景,里面包含非常多的资源,比如一个很大的游戏场景,往往加载很慢。这个时候,如

    2023年04月09日
    浏览(49)
  • IntelliJ IDEA安装教程,三分钟手把手教会,非常简单!

    链接:JDK安装教程 1、进入官网 官网地址:https://www.jetbrains.com/ ​ 2、点击【Developer Tools】开发者工具,选择【IntelliJ IDEA】点击跳转。 ​ 3、来到IntelliJ IDEA界面,点击【Download】跳转到下载页面 ​ 4、然后你会看见旗舰版和社区版两个版本,旗舰版的组件很全面,但是要钱(

    2024年03月14日
    浏览(58)
  • Socket实现服务器和客户端(手把手教会)

    😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun,视频号:AI-行者Sun 🎈 本文专栏:本文收录于《网络编程实战》系列专栏,相信一份耕耘一份收获,我会手把手教分享网络编程实战内容,届时可以拳打字节,

    2024年04月12日
    浏览(52)
  • 手把手教会Git分布式系统版本管理工具

    前言 一、Git是什么? 1.1 版本控制器的概念 1.2 Git的强大 1.3 Git的安装 二、Git 基本操作 2.1 创建 Git 本地仓库 2.2 认识⼯作区、暂存区、版本库 2.3 add、commit命令 2.4 Git log命令 2.5 .git文件 index: 暂存区,git add 后会更新该内容。 HEAD: 默认指向 master 分⽀的⼀个指针。 refs/heads/ma

    2024年04月14日
    浏览(53)
  • 手把手教会搭建网站详细全过程(从域名到网站部署)

    过年在家,闲的没有什么事做,刚好在之前通过腾讯的学生认证购买了部署了一个轻量应用服务器,可以用来建站。想到可以用自己域名建一个专属网站,做一回站长就好激动 刚刚提到了腾讯的学生认证购的轻量应用服务器,这个挺实惠的,这里推销一波😁。 腾讯轻量应用

    2023年04月08日
    浏览(44)
  • VMware下载到安装Centos7详细教程(手把手教会)

    一、安装前的准备工作 VMware下载官网:VMware 中国 - 交付面向企业的数字化基础 | CN Centos镜像文件:CentOS-7-x86_64-Minimal-2009.iso 二、开始下载安装VMware 1、选择下一步安装  2、选择VMware安装位置 3、完成VMware安装 三、开始安装Centos7 1、打开VMware,点击“创建新的虚拟机”   2、选

    2024年02月09日
    浏览(50)
  • 测试工程师常用的10个python库,面试必备哦

    目录 前言 1、os库 2、sys库 3、time库 4、selenium库 5、unittest库 6、pytest库 7、email库 8、appium库 9、pymsql库 10、requests库 总结: 今天给各位小伙伴带来的是测试工程师常用的10个python库,相信有些小伙伴肯定知道一些库,也使用过一些库。下面我们就来聊聊这常用的10个python库,我

    2024年02月08日
    浏览(44)
  • 【初识数据结构】手把手教会你时间复杂度的计算方法

    前言   大家好啊,这里是幸麟 一名普通的大学牲 🧩希望可以不断的进步,因此也一直在学习 如果有写的不好或者写错的地方 欢迎在评论区指正 前言后的小前言 不知道在大家学习算法时有没有遇到这样一种情况,在看大佬题解或者讲解视频时 总能找到一个叫 时间复杂度

    2024年02月09日
    浏览(79)
  • Python爬虫入门教程!手把手教会你爬取网页数据

    其实在当今社会,网络上充斥着大量有用的数据,我们只需要耐心的观察,再加上一些技术手段,就可以获取到大量的有价值数据。这里的“技术手段”就是网络爬虫。今天就给大家分享一篇爬虫基础知识和入门教程: 爬虫就是自动获取网页内容的程序,例如搜索引擎,Go

    2023年04月26日
    浏览(105)
  • 数据结构->顺序表实战指南,(手把手教会你拿捏数据结构顺序表)

    文章目录 ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青-CSDN博客 今天开始我们正式进入数据结构的学习了,这篇简单了解一下: 线性表的存储结构:顺序存储结构、链式存储结构; 顺序表的定义:用一段物理地址连

    2024年01月25日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包