干货 | H5性能分析实战来啦~

简介: ![](https://ceshiren.com/uploads/default/original/3X/9/f/9f1091a2de1d0f0bf718036424b512c9677b9a1c.jpeg)H5性能该如何测试呢?很多人不知道该如何下手。其实可以借用W3C协议完成自动化H5性能测试。因为W3C标准是浏览器标准,一般浏览器都支持W3C标准,它规定使用者可以通过api查询性能信息


H5性能该如何测试呢?很多人不知道该如何下手。其实可以借用W3C协议完成自动化H5性能测试。

因为W3C标准是浏览器标准,一般浏览器都支持W3C标准,它规定使用者可以通过api查询性能信息。W3C官网:https://www.w3.org/TR/navigation-timing/

更多关于专项测试的文章,可以点击公众号关注哦~

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

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

• Prompt for unload 访问一个新页面时,旧页面卸载完成的时间
• redirect 重定向,用户注销登陆时返回主页面和跳转到其它的网站等
• App cache 检查缓存,是否打开
• DNS 表示 DNS 查询的时间,如果是长连接或者请求文件来自缓存等本地存储则返回fetchStart时间点
• TCP 与服务器建立链接的时间
• Requests 客户端发起请求的时间
• Response 拿到服务器第一个响应字节到最后一个响应字节的时间
• Processing 各种状态的时间点,例如加载状态等等
• onLoad 触发load事件执行的时间

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

window.performance.timing


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

window.performance.timing.\
domContentLoadedEventEnd -\ 
window.performance.timing.\
domContentLoadedEventStart


appium/selenium可以执行js,借用appium/selenium工具可实现自动化获取能指标,调用appium/selenium的ExecuteScriptapi,可向页面注入下面代码:

//显示所有阶段的时间点
return
JSON.stringify(window.performance.timing)

//显示指定资源的时间,比如img
return
JSON.stringify(window.performance.\
getEntriesByName (document.querySelector("img").src)[0], null, 2)

使用python+selenium进行js注入:

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数据,包含了简介中的各个性能指标,可对性能指标做二次处理或可视化展示:

{"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}

内容全面升级,5 个月 20+ 项目实战强化训练,资深测试架构师、开源项目作者亲授 BAT 大厂前沿最佳实践,带你一站式掌握测试开发必备核心技能(对标阿里P6+,年薪50W+)!直推 BAT 名企测试经理,普遍涨薪 50%+!

⬇️ 点击“阅读原文”,提升测试核心竞争力!
原文链接

⬇️ 点击“下方链接”,提升测试核心竞争力!

更多技术文章分享和免费资料领取
https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=Aliyun&timestamp=1649927302
相关文章
|
11月前
|
Java 数据库连接 调度
探索阿里巴巴新型ORM框架:初试ElasticJob Plus
【10月更文挑战第17天】 在Java开发领域,Mybatis和Mybatis Plus作为持久层框架,已被广泛使用。它们通过简化数据库操作,提高了开发效率。最近,阿里巴巴推出了一个新的ORM框架——ElasticJob Plus,它不仅包含了Mybatis Plus的所有特性,还增加了分布式任务调度的功能。本文将带你初探ElasticJob Plus,看看它是如何成为Mybatis Plus的有力竞争者。
259 0
|
8月前
|
存储 NoSQL Java
使用Java和Spring Data构建数据访问层
本文介绍了如何使用 Java 和 Spring Data 构建数据访问层的完整过程。通过创建实体类、存储库接口、服务类和控制器类,实现了对数据库的基本操作。这种方法不仅简化了数据访问层的开发,还提高了代码的可维护性和可读性。通过合理使用 Spring Data 提供的功能,可以大幅提升开发效率。
191 21
|
搜索推荐 算法 UED
必应SEO优化步骤:提升网站在必应搜索引擎中的排名
本文深入剖析了必应(Bing)搜索引擎的优化策略,为网站管理员提供了一套完整的必应SEO优化步骤。文章内容兼具深度与独特见解,旨在帮助读者在激烈的网络竞争中脱颖而出。助力您的网站迈向更高的排名。
必应SEO优化步骤:提升网站在必应搜索引擎中的排名
|
SQL XML Java
ruoyi若依框架@DataScope注解使用以及碰到的一些问题
ruoyi若依框架@DataScope注解使用以及碰到的一些问题
4162 0
|
机器学习/深度学习 数据采集 算法
机器学习:升维(Polynomial Regression)
该文介绍了升维的概念,指出在低维度中难以对混合数据进行有效分类,而升维是通过算法将数据投射到高维空间以改善模型性能。文章以多项式回归为例,说明了如何通过升维将非线性关系转换为线性关系,并提供了Python代码示例展示了如何使用`PolynomialFeatures`进行升维。代码结果显示,随着维度增加,模型从欠拟合逐渐过渡到过拟合。
1404 0
|
机器学习/深度学习 数据可视化 算法
R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据
R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据
使用快捷键的方式把多个关键字文本快速替换(快速替换AE脚本代码)
该内容介绍了一个使用AE(Adobe After Effects)脚本汉化英文的教程。首先提到了两个下载工具的链接,分别来自百度网盘和蓝奏云,并附有提取码。接着展示了AE脚本的替换规则,将英文替换为中文。操作步骤包括:1) 打开工具,设置好规则并执行;2) 在AE中复制要替换的脚本代码;3) 使用快捷键Ctrl+Shift+R进行替换,然后Ctrl+V粘贴修改后的代码。文中还配有多张图片以展示操作过程。
|
数据处理 Python
使用Python的time库来格式化时间
使用Python的time库来格式化时间
407 1
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的出租车管理网站附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的出租车管理网站附带文章源码部署视频讲解等
83 0
|
Shell Linux Android开发
Android Mediatek 修改打印串口 (uart0) 为普通串口
Android Mediatek 修改打印串口 (uart0) 为普通串口
183 0