Playwright系列:第14章 Playwright性能测试实战

news2024/11/25 2:44:14

下方查看历史精选文章

重磅发布 - 自动化框架基础指南pdfv1.1
大数据测试过程、策略及挑战

测试框架原理,构建成功的基石

在自动化测试工作之前,你应该知道的10条建议

在自动化测试中,重要的不是工具

功能测试可以验证应用程序的功能是否正常,而性能测试关注程序在执行功能测试的同时,资源和服务的性能表现是否达标。

对于网页应用,主要的性能指标包括:

- 页面加载时间:首页或关键路径页面加载完成的时间。

- 资源加载时间:CSS、JS、图片等静态资源加载完成的时间。

- FPS和帧时间:用于衡量网页动画流畅度的指标。

- CPU和内存占用:反映网页实际运行时占用的系统资源。

- 请求数和转发时间:衡量服务端性能的指标。

Playwright不仅用于功能测试,也是一款强大的网页性能测试工具。它通过性能测量API和与Lighthouse的整合,提供全方位的网页性能测试解决方案。

本章我们将学习如何使用Playwright进行网页性能测试,掌握性能指标的测量方法和如何分析测试报告进行性能优化。

Playwright性能测试API

Playwright提供以下主要API用于性能测试:

- page.metrics():获取页面加载及性能相关指标。

- page.evaluate(cb):在页面环境执行自定义Javascript代码,用于采集自定义性能指标。

- page.tracing.start():开始performance跟踪,用于获取FPS、帧时间和内存占用数据。

- page.evaluateHandle('Lighthouse.createReport()'):生成Lighthouse性能审计报告。

示例:

# 获取页面指标  
metrics = page.metrics()


# 自定义采集前端性能指标
time_to_interactive = page.evaluate('window.performance.timing.domInteractive')


# 开始跟踪FPS和内存  
page.tracing.start()  
# 滚动页面后结束跟踪
page.tracing.stop()
trace = page.tracing.trace()


# 生成Lighthouse报告
lh_report = page.evaluateHandle('Lighthouse.createReport()')

Playwright性能测试步骤

1. 确定测试场景和性能指标

根据产品需求和用户痛点,确定关键用户场景和需要测量的性能指标,如首页time_to_interactive指标等。

2. 编写测试脚本采集指标 

使用Playwright性能测试API编写测试脚本,在关键场景下采集对应的性能指标。

3. 运行测试并获取性能数据

运行测试脚本,Playwright自动获取页面加载指标和资源指标。对于FPS、帧时间和内存指标,需要在测试中手动添加page.tracing.start()和page.tracing.stop()进行跟踪。

4. 分析Lighthouse报告找到性能瓶颈 

使用evaluateHandle方法生成Lighthouse性能审计报告,报告中的各项得分和建议可以帮助找到性能优化方向。

5. 优化性能bottleneck并重新测试

根据报告建议,对bottleneck进行优化,如启用文本压缩、移除未使用资源、优化CSS和JS等。然后重新运行测试进行验证。

6. 导入数据并监控性能指标 

将测试收集到的性能数据导入外部系统进行监控,定期运行性能测试并与历史数据对比监控网页性能。

使用Lighthouse分析性能报告

Lighthouse是一个用于性能审计和优化的开源工具。Playwright与Lighthouse进行深度整合,可以通过page.evaluateHandle()方法直接在Playwright测试中生成Lighthouse报告。

报告包含页面的性能得分及针对得分较低项的优化建议。主要包含六大类:

- 速度:衡量页面加载性能,以及资源优化情况。

- PWA:渐进式网络应用指标,包含installable manifest等。

- 可访问性:页面对残障人士等的友好程度。

- 最佳做法:像SEO、HTTPS或Viewport等最佳实践的遵循情况。 

- SEO:搜索引擎优化相关指标,如meta描述存在与否。

- 进步空间:Lighthouse对相关改进和优化的建议。

通过分析报告中的各项得分和优化建议,可以快速定位影响页面性能的关键bottleneck,并进行修复与优化。这是一个非常有效的性能测试及优化方法。总结性能测试是产品开发及测试过程中不可或缺的一部分。本章学习了如何使用Playwright进行性能测试,通过性能指标的收集与分析,找到性能优化方向并验证优化效果。

Playwright不仅提供丰富的性能测试API,其与Lighthouse的深度整合更是大大简化了性能测试流程。开发者可以轻松生成详尽的性能报告并据此进行针对性优化。这套将功能测试、性能测试和优化有机结合的解决方案,让Playwright成为市面上测试工具中性能测试能力最强的工具之一。

希望通过本章的学习,不仅掌握如何进行性能测试,也对性能优化和提升有初步认知。性能优化是一个持续的过程,需要不断测试、分析和优化。借助Playwright,可以更高效地进行性能增强,打造高性能的Web应用。

002742df169b76dd486d74147fde0ef3.jpeg

af4f7ad7f4d6bf5837cc285151ff4c57.png

微信搜一搜 或 长按加群

514161dc7a60dc56703eecd8deec8d3f.png

开源优测

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

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

相关文章

Cocos Store打通企业提现,诚邀更多团队和公司入驻!

2023年5月29日 Cocos Store 终于上线,令众多开发者期盼已久的功能——企业对公提现。 在此,真诚地对大家说一声:抱歉,我们来晚了! 但请一定相信 Cocos 引擎、Cocos Store 一直在努力并从未间断为开发者们创造价值&…

chatgpt赋能python:小黑框:Python程序员必备利器

小黑框:Python程序员必备利器 如果您是一名Python程序员,小黑框(Terminal)一定不陌生。小黑框是一种基于文本的用户界面,通常用于执行命令行任务,编写或调试代码等。Python程序员可以通过小黑框完成许多任…

【JUC基础】16. Fork Join

1、前言 “分而治之”一直是一个非常有效的处理大量数据的方法。著名的MapReduce也是采取了分而治之的思想。。简单地说,就是如果你要处理 1000 个数据,但是你并不具备处理 1000个数据的能力,那么你可以只处理其中的 10 个,然后分…

使用JSAPl来做一个倒计时的效果

今天的小案例需要做一个倒计时的效果 我们的时分秒需要一直进行倒计时&#xff0c;然后我们的页面颜色需要根据定时器的操作来进行更换&#xff0c;首先我们还是可以来分析一下我们的HTML步骤 <div class"countdown"><p class"next">今天是22…

HCIE-Cloud Computing LAB备考第二步:实战解题–第五题:论述二--跨数据中心部署问答--缩写法

跨数据中心部署 通常部署在同城或相近城市存在的两个数据中心&#xff0c;其物理距离在300km以内&#xff0c;两个数据中心均处于运行状态&#xff0c;可同时承担相同业务&#xff0c;提高数据中心的整体服务能力和系统资源利用率&#xff0c;当单数据中心故障时&#xff0c;业…

学会使用perf性能分析工具(含移植到arm-linux开发板)

文章目录 一、在ubuntu中使用apt包下载Perf二、使用源码安装Perf&#xff0c;并移植到arm-linux环境下三、使用perf四、Perf的功能介绍 系统&#xff1a;Ubuntu18.04系统 内核版本&#xff1a;5.4.0-150-generic&#xff08;通过uname -r查看&#xff09; 一、在ubuntu中使用ap…

针对大屏设备优化 Android 应用的方式及相关注意事项

作者 / Android 团队 近年来&#xff0c;包括大型可折叠设备、平板电脑以及 Chromebook 等大屏 Android 设备的数量与日俱增。确保应用可以在大屏设备上为用户提供无缝体验比以往任何时候都更加重要。例如&#xff0c;用户希望应用能够更充分利用这些设备的更大屏幕空间。我们发…

数据库信息速递 MONGODB CTO 看数据库发展趋势 与 不使用MONGODB你就要交“创新税”...

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群 3群&#xff…

为了女神,我拼了!

大家注意&#xff1a;因为微信最近又改了推送机制&#xff0c;经常有小伙伴说错过了之前被删的文章&#xff0c;比如前阵子冒着风险写的爬虫&#xff0c;再比如一些限时福利&#xff0c;错过了就是错过了。 所以建议大家加个星标&#xff0c;就能第一时间收到推送。&#x1f44…

第二十八章 开发Productions - ObjectScript Productions - 定义业务操作

文章目录 第二十八章 开发Productions - ObjectScript Productions - 定义业务操作介绍关键原则定义业务操作类 第二十八章 开发Productions - ObjectScript Productions - 定义业务操作 本页介绍如何定义业务操作类。 提示&#xff1a; IRIS 提供使用特定出站适配器的专用业…

解读大模型的微调

在快速发展的人工智能领域中&#xff0c;有效地利用大型语言模型&#xff08;LLM&#xff09;变得越来越重要。然而&#xff0c;有许多不同的方式可以使用大型语言模型&#xff0c;这可能会让我们感到困惑。实际上&#xff0c;可以使用预训练的大型语言模型进行新任务的上下文学…

【移动架构】Flutter和React Native:最后的PK

首先&#xff0c;有点离题。做出决定的最简单方法是回顾历史。让我们沿着怀旧之路走一趟。早在2000年初&#xff0c;JAVA就有两个UI框架。一个是AWT&#xff0c;它是一种为多个操作系统构建UI的方法&#xff0c;同时仍然保持操作系统的外观。 每个操作系统都有自己的组件&#…

驱动开发--创建设备文件--控制LED灯

目录 1、手动创建设备文件 2、应用程序如何将数据传递给驱动 3、控制LED灯&#xff1a; 4、应用层控制灯 5、自动创建设备节点 1、手动创建设备文件 cat /proc/devices 查看主设备号 sudo mknod hello(路径&#xff1a;任意的) c/b&#xff08;C代表字符设备 b代表块设备&a…

华为无线AC双机热备三层组网配置案例

核心交换机: dis current-configuration sysname hx undo info-center enable vlan batch 10 66 88 99 to 100 ip pool vlan10 gateway-list 192.168.10.254 network 192.168.10.0 mask 255.255.255.0 dns-list 8.8.8.8 ip pool vlan100 gateway-list 172.16.100.254 network …

Qt在MySQL中存储音频文件

一、在存储音频视频等大文件时需要以二进制文件进行存储&#xff0c;首先需要了解mysql存储二进制文件的字段类型以及大小&#xff1a; 需要创建数据库中的图片类型为&#xff1a;二进制mediumblob类型&#xff0c;&#xff08; TinyBlob 最大 255 Blob 最大 65K MediumBlob …

苹果发布会,卧槽,卧槽,卧槽

今天跟二哥在群里聊到苹果的发布会&#xff0c;二哥完整的看了发布会&#xff0c;我随口问一句二哥看完后什么感受。 二哥说「苹果的工业设计还是遥遥领先&#xff0c;交互设计也是一流水准&#xff0c;然后价格也是遥遥领先」。 然后&#xff0c;我今天也抽空看了关于苹果新发…

【算法与数据结构】203、LeetCode移除链表元素

文章目录 题目一、解题思路完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 题目 一、解题思路 思路分析&#xff1a;这道题需要注意一个特殊情况&#xff0c;当删除的是头结点时&#xff0c;直接删除就找不到整个链表。因此我…

2023LRC软件、Adobe Lightroom Classic下载、安装教程

最后附下载地址 LRC简介&#xff1a; Adobe Lightroom Classic&#xff08;简称LR&#xff09;是Adobe Creative Cloud大家庭中的一款专业的图片管理和编辑工具&#xff0c;用于专业摄影师、摄影爱好者以及所有不断优化数码影像的人等。其目标是以丰富的功能提供高效、一致的…

03【WebStorm开发工具】

上一篇&#xff1a;02【HTML快速入门】 下一篇&#xff1a;04【】 目录&#xff1a;【HTML5系列教程】 文章目录 三、WebStorm开发工具3.1 WebStorm简介3.2 WebStorm安装3.3 WebStorm基本使用3.3.1 创建项目3.3.2 调整字体大小3.3.3 代码自动补全3.3.4 WebStorm常用快捷键 三…

在Anaconda的虚拟环境中添加环境变量并通过python访问(win/mac/linux)

一、前言 有的时候密码登比较敏感的信息&#xff0c;不方便直接写在代码里有很多变量我想很多project都可以访问到 那这时候使用环境变量是非常合适的了。 二、设置环境变量 以linux为例 直接在internal执行命令 export 变量值通过更改bashc文件 vim ~/.bashrc # 在最后一行加上…