实战演示 H5 性能分析

W3C标准是浏览器标准,一般浏览器都支持W3C标准,它规定使用者可以通过api查询性能信息,可借用W3C协议完成自动化H5性能测试。 W3C官网:www.w3.org/TR/navigati...

使用chrome浏览器对webview进行手工查看,伴随着业务增多,数量加大,手工操作的速度会无法跟上业务增长,此时需要自动化方法测试webview性能。

当页面加载时,会渲染一系列内容,渲染过程可分为多个阶段,比如下图:

• Prompt for unload 访问一个新页面时,旧页面卸载完成的时间

• redirect 重定向,用户注销登陆时返回主页面和跳转到其它的网站等

• App cache 检查缓存,是否打开

• DNS 表示 DNS 查询的时间,如果是长连接或者请求文件来自缓存等本地存储则返回fetchStart时间点

• TCP 与服务器建立链接的时间

• Requests 客户端发起请求的时间

• Response 拿到服务器第一个响应字节到最后一个响应字节的时间

• Processing 各种状态的时间点,例如加载状态等等

• onLoad 触发load事件执行的时间

在chrome浏览器中,执行js代码可获取各个阶段的内容:

javascript

window.performance.timing

上面的时间只是一个时间点,如果想获取各阶段的具体时间,就需要对两个时间点进行相减运算,比如计算domContent加载事件时间:

javascript

window.performance.timing.\

domContentLoadedEventEnd -\

javascript

window.performance.timing.\

domContentLoadedEventStart

appium/selenium可以执行js,借用appium/selenium工具可实现自动化获取能指标,调用

appium/selenium的ExecuteScriptapi,可向页面注入下面代码:

python 复制代码
from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://home.testing-studio.com/")

print(driver.execute_script(    

      "return JSON.stringify(window.performance.timing)"))

案 例

H5性能测试需要配合自动化测试工具使用,比如selenium或者appium,通过js代码注入实现自动化调用api。

使用 python + selenium 进行js注入:

python 复制代码
from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://home.testing-studio.com/")

print(driver.execute_script(    

      "return JSON.stringify(window.performance.timing)"))

执行后会返回一个json数据,包含了简介中的各个性能指标,可对性能指标做二次处理或可视化展示:

python 复制代码
{"navigationStart":1585043212714,

"unloadEventStart":0,"unloadEventEnd":0,

"redirectStart":0,

"redirectEnd":0,

"fetchStart":1585043212717,

"domainLookupStart":1585043212747,

"domainLookupEnd":1585043212747,

"connectStart":1585043212747,

"connectEnd":1585043212835,

"secureConnectionStart":1585043212787,

"requestStart":1585043212836,

"responseStart":1585043212918,

"responseEnd":1585043212921,

"domLoading":1585043212929,

"domInteractive":1585043214972,

"domContentLoadedEventStart":1585043214972,

"domContentLoadedEventEnd":1585043214972,

"domComplete":1585043215976,

"loadEventStart":1585043215976,

"loadEventEnd":1585043215976}

【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
轮到我狗叫了32 分钟前
力扣310.最小高度树(拓扑排序,无向图),力扣.加油站力扣.矩阵置零力扣.二叉树中的最大路径和
算法·leetcode·职场和发展
爱coding的橙子1 小时前
算法刷题Day9 5.18:leetcode定长滑动窗口3道题,结束定长滑动窗口,用时1h
算法·leetcode·职场和发展
卓律涤2 小时前
【找工作系列①】【大四毕业】【复习】巩固JavaScript,了解ES6。
开发语言·前端·javascript·笔记·程序人生·职场和发展·es6
宇钶宇夕5 小时前
MODBUS RTU通信协议详解与调试指南
运维·程序人生·自动化
wuqingshun31415914 小时前
蓝桥杯 16. 外卖店优先级
c++·算法·职场和发展·蓝桥杯·深度优先
緈福的街口15 小时前
【leetcode】2900. 最长相邻不相等子序列 I
算法·leetcode·职场和发展
supingemail18 小时前
面试之 Java 新特性 一览表
java·面试·职场和发展
诸葛大钢铁21 小时前
如何免费在线PDF转换成Excel
职场和发展·pdf·excel
测试者家园1 天前
用 VS Code / PyCharm 编写你的第一个 Python 程序
ide·vscode·python·职场和发展·零基础·pycharm·零基础学python
小羊在奋斗1 天前
【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树
算法·leetcode·职场和发展