【学习笔记】H5性能测试
1、H5指移动网页本身
H5是指用H5语言制作的一切数字产品。
H5提供了全新的框架和平台,包括提供免插件的音视频、图像动画、本体存储以及更多酷炫而且重要的功能,并使这些应用标准化和开放化;
H5的最显著的优势在于跨平台性,用H5搭建的站点与应用可以兼容PC端与移动端、Windows与Linux、安卓与IOS。它可以轻易地移植到各种不同的开放平台、应用平台上。
随着H5页面的普及和运用,深深影响着我们各个业务的发展,H5性能测试越来越受到重视。
2、浏览器渲染原理和过程
浏览器作为一个客服端,它的主要作用就是展示可访问的资源,不管这些资源是本地资源还是通过网络请求获取到的资源。
- 地址栏输入地址触发网络请求,获取到html文件。
- HTML解析器解析HTML文件构建成为DOM树。
- 遇到CSS通过CSS解析器解析成为CSSOM。
- 遇到JS通过JS解析器解析。
- DOM Tree和CSSOM构建呈现树(6、7两个步骤)。
- 呈现树根据结构样式确定节点的位置(布局或者回流) ----回流。
- 确定好位置以后,根据外观样式绘制 ----重绘。
- 通过UI后台和用户界面组件把内容显示到浏览器主窗口上。
3、H5性能参数
H5测试内容包括:功能测试、浏览器兼容测试、前端性能测试、服务端性能测试,这里主要介绍H5性能测试。
(1)H5性能测试点:
影响H5性能有以下几个要素:网络带宽、DNS解析、服务器处理能力、数据库操作等。以下是H5性能的测试点:
加载速度 |
网络 |
WIFI |
5G |
||
4G |
||
3G/2G |
||
启动 |
首字 |
|
首屏 |
||
缓存 |
有缓存 |
|
无缓存 |
||
缩短响应时间 |
CDN部署 |
|
合理分配域名 |
||
流量 |
http请求数 |
资源合并 |
http状态 |
失败资源处理 |
|
单个请求优化 |
缓存机制 |
|
压缩内容 |
||
资源合理组合 |
预加载 |
|
分页加载 |
||
css放顶部 |
||
js放底部 |
||
服务端压力 |
服务端压测 |
服务端性能 |
体验 |
提示信息 |
弱网络下加载提示 |
接口数据异常提示 |
||
打开性能 |
打开或刷新页面是否抖动 |
|
应用回退后台后体验 |
(2)H5性能相关参数介绍:
以下简单介绍和H5性能相关的几个参数概念:
时间相关:
(1)白屏时间:用户首次看到网页有内容的时间,即第一次渲染流程完成时间。
(2)首屏时间:是指用户看到第一屏,即整个网页顶部大小为当前窗口的区域,显示完整的时间。
(3)首资源下载时间:从开始下载到第一个资源均下载完成的时间,不包括页面绘制时间。
(4)总资源下载时间:从开始下载到所有资源均下载完成的时间,不包括页面绘制时间。
(5)用户可操作时间:从页面开始加载到用户操作可响应的时间。
上述各种时间指标应根据当前H5的具体情况,选择合适的测试指标。
WebView相关:
在android和IOS上测试H5性能,测试人员还应该关注因加载H5而引起的app常规性能指标。
(1)内存:加载页面前后内存变化,可间接反映H5中资源数量和大小,如dom数量,图片大小;
(2)CPU:当页面中资源样式复杂,强调视觉效果时,测试员可观察CPU占用率来反映H5绘制质量。如果CPU长期处于高占用率,可考虑降低高计算量的视觉效果等手段;
(3)FPS:帧率尤其在有视频和动画效果的H5中,测试员应该重点关注,防止严重的卡顿流出。
性能要求可以参考下表:
项目 |
指标 |
内存 |
1.页面内反复切换tab,切换场景,滑动页面等场景不存在内存泄露,给出数据并说明结论; 2.运行过程中内存峰值<单个应用程序最大可能内存的60%;3.退出后内存恢复到进入游戏前的占用值; |
电量 |
程序放后台或处于飞行模式的情况下耗电小于10mAh; |
流量 |
无异常流量消耗;不存在资源的重复拉取; |
弱网络 |
1.无crash;2.体验方面提示用户网络环境差;3.拉取失败能正常返回; |
cpu |
CPU 启动时cpu占比<20%;运行时cpu占比峰值<80%; |
Crash |
网络/网络状态发生变化时/连续8小时运行,无crash; |
流畅度 |
avgFPS不小于40;inFPS大于0; |
4、测试方法和工具
(1)抓包工具--Fiddler、Charles等
这类工具不仅可以抓包,还可以对包进行篡改,动态展示瀑布流,对web进行调试。
(2)平台型工具--Page Speed、PCAP Web Performance Analyzer、WebPagetest等
可以快捷的测试出H5前端性能中的数据、视图,并给出一定程度的优化建议。
工具 |
优点 |
缺点 |
PCAP Web Performance Analyzer |
1 方便移动端H5测试,包直接来源于移动端货去PCAP文件; 2 各类资源数据统计一目了然; 3 瀑布流展示http请求过程; |
1 操作麻烦,抓包和分析都需要人工操作; 2 属于离线分析,不实时; 3 没有具体的web展示; |
Page Speed |
1 直观展示测试结果,并给出优化建议; 2 可以测试移动端和PC端; 3 提供了网页速度和用户体验两类结果,包括字体清晰度,窗口大小等用户体验结果; |
1 只有结果,没有详细的资源数据统计; 2 没有提供各个http的request和response的详细数据; |
WebPagetest(推荐) |
1 提供了首屏时间、首字节时间,全界面加载时间的工具,并提供对应时间点的截图; 2 提供了瀑布流视图和连接视图,清晰展示了并发请求的http连接以及请求资源; 3 提出优化建议checklist,详细标出各个资源是否可以优化,如压缩、缓存、发布CDN、设置GZIP等; 4 提供测试过程的视频演示; |
1 并不是专门为移动端h5测试所设计的; 2 关注h5前端页面本身的性能,没有关注浏览器引起的内存、CPU、FPS等的变化; |
Chrome DevTools(推荐) |
1 支持移动端h5在PC端远程调试,能够对具体的移动设备进行测试; 2 集成了Page Speed; 3 提供Network面板,展示瀑布流视图,各类资源清晰展示,并提供了缩略图,方便查看图的大小尺寸,以及是否有缺失和冗余; 4 提供TimeLine面板,展示CPU、内存、FPS等性能数据; |
1 录制分析的一种静态分析方法,不同于fiddler等抓包工具提供的实时抓包、修改等功能; |
5、工具使用举例
(1)WebPageTest
WebPageTest是一个免费开源的在线性能评测工具;其使用真正的浏览器(IE和Chrome等)与真实的消费者连接速度,可以从全球多个地点运行免费网站速度测试;并依据测试结果提供丰富的诊断信息,包括资源加载瀑布图,页面速度优化检查和改进建议,会给每一项内容一个最终的评级。
打开官网地址:https://www.webpagetest.org
开源地址 https://github.com/WPO-Foundation/webpagetest
在上图中2处输入要测试的URL网址。在3处选择地址(Test Location),如下图,下拉选择就好,可以选择安卓,iOS,PC端等设备,以及不同国家地等;补充:点击Advanced Setting下拉可以进行高级设置,不过我们一般选择默认就好。设置完成后,点击START TEST,开始测试;
(2)Chrome DevTools
Chrome DevTools(Chrome 开发者工具) 是内嵌在 Chrome 浏览器里的一组用于网页制作和调试的工具。
手机端USB和PC连接,并打开开发者模式;
在浏览器地址栏输入chrome://inspect 或者 about:inspect 打开DevTools;
如下图所示;由于网络限制缺少性能分析的功能;
6、H5性能优化及原理
1)Http请求个数
有统计证明:一个网页最终到达终端用户有80%的时间都是在JS,CSS,图片,mp3,flash等资源的http请求。另一方面,http请求的数量也是有限制的,浏览器对同一个域名有连接数限制,不同浏览器内核、不同版本的请求数不尽相同,大部分的并发请求数是6个。
看来通过够控制http请求的数量,减少http请求时间,达到减少网页加载和呈现的时间,能带来更好的用户体验。
(2)组件是否压缩
通常来说,组件压缩是一种增加CPU压缩解压缩时间来减少网络传输消耗的办法,并且通常网络资源较cpu资源更紧张,所以对合适的对象设置压缩能个取得良好的收益。
压缩方法:在http请求中设置所接受到压缩方式,在Server端对Response资源进行压缩再传给浏览器。一般使用GZIP设置content-Encoding字段。
压缩对象:从http请求返回资源中的html,js,CSS,xml等都可以设置压缩,值得注意的是我们不需要对图片音乐等资源设置压缩,因为这些资源本身已经压缩过了,再次压缩收益并不高,而且增加CPU负担。Js,CSS我们通常通过去掉空格和回车来压缩,再经过GZIP压缩,能达到良好的压缩效果。
(3)图片格式和大小是否合适
图片格式:显示效果较好的图片格式中,有webp、jpg和png24/32这几种常见的图片格式。一般来说,webp的图片最小,但在iOS或者android4.0以下的系统中可能会有兼容性问题需要解决。
图片尺寸:这获取图片尺寸时候应该考虑图片具体的展示场景,如当前移动设备中常用个尺寸规格为480×800、600×1024、720×1280,800×1280等,从原图来保证图片能够被呈现,而不是通过代码对图片放大或缩小。
图片压缩:对于jpg,png格式图片来说本身就已经经过了压缩,这对于稀缺的带宽资源是不够的,我们还需要更加优化的压缩算法,通过一系列的图片压缩工具如TinyPNG, Smush.it可以得到更好的压缩且图片质量不变。
(4)CSS放在顶部
在浏览器渲染过程中谈到,dom树构建完成后。CSS要放到html代码的开头的head标签结束前。如果网页是动态生成的,那么在head代码完成后可以页面输出,这样浏览器就会更快地解析出来head中的内容,开始下载CSS文件资源。而CSS放在底部则会引起重新绘制,用户侧感受到“闪屏”的不好体验。
(5)JS放在底部
JS在下载的时候会引起两个问题:阻止网页内容的展示并阻止其他资源下载。在“减少http数量”部分中,我们谈到各种资源的下载是并行的,根据不同域名不同浏览器内核并行数量有所不同,所以下载js时候,并行下载机制失效。并且在js中可能包括document.write等改变页面布局的操作,所以渲染引擎会等待js下载完成再开始渲染。所以用户侧页面加载时间会因为等待而变得更长。
(6)使用CDN
CDN内容分发网络(Content Delivery Network)将源站内容发布到最接近用户的“边缘”节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。解决因分布、带宽、服务器能力带来的访问延迟高问题,提供一系列加速解决方案。所以,如果H5的用户分散在全国各地,建议尽可能的将资源放到CDN,如腾讯云CDN。
参考文章:https://mp.weixin.qq.com/s/drQcMJukTjozNRlpjtLPXw
【学习笔记】H5性能测试相关推荐
- SQLite介绍、学习笔记、性能测试
哪些人,哪些公司或软件在用SQLite: Nokia's Symbian,Mozilla,Abobe,Google,阿里旺旺,飞信,Chrome,FireFox 可见SQLite的稳定性及性能是不会有 ...
- Delphi-IOCP学习笔记九======性能测试和IOCP源码下载5000个连接数
刚刚的测试,服务端上图 开了5个客户端<每个客户端1000>进行测试. 内存视乎不是很多.客户端的发过来的数据包大小在4096+88字节左右. 测试Echo测试线程 procedure T ...
- 思博伦测试仪学习笔记(性能测试方向RFC2544)
(1) 吞吐率(Throughput) 定义:被测设备在不丢包的情况下,所能转发的最大数据流量.通常使用每秒钟通过的最大的数据包数或者字节数来衡量(MB/s) . 作用:反映被测试设备所能够处理(不丢 ...
- class h5 点击后样式变化_H5学习笔记
目录 什么是HTML: 头部标签 H5视频 H5音频 H5拖放 H5Web存储 H5应用缓存 H5画布SVG H5画布canvas 全局属性: 事件属性: 颜色.样式和阴影 线条样式 矩形 路径 转换 ...
- 软件工程学习笔记《三》代码优化和性能测试
文章目录 软件工程学习笔记目录 如何在开源社区提问? 代码审查 代码优化 运行结果 参数解释 代码优化原则 对常见的数据结构排序算法进行测试 关于冒泡排序优化的探讨 结果 软件工程学习笔记目录 [ht ...
- 【测试工具】-性能测试-GT学习笔记
[性能测试工具]-GT学习笔记 一.GT介绍 腾讯MIG研发的Android APP测试平台,主要应用于手机APP的性能测试(CPU,内存,网络流量,电量,帧率,流畅度) 安卓/IOS手机端调测组件, ...
- 计算机组成原理学习笔记第1章 1.3——实验一 计算机性能测试
计算机组成原理学习笔记第1章 1.3--实验一 计算机性能测试 本篇笔记整理:Code_流苏(CSDN) 目录 计算机组成原理学习笔记第1章 1.3--实验一 计算机性能测试 0️⃣思维导图(自制) ...
- CSS入门学习笔记+案例(1)
CSS入门学习 一.CSS简介 1.什么是CSS CSS:Cascading Style Sheet 层叠样式表 是一组样式设置的规则,用于控制页面的外观样式 2.为什么使用CSS 实现内容与样式的分 ...
- miniui文件上传 linux,MINIUI grid学习笔记
grid 控件 a.事件的绑定和移除 grid.on("rowclick", fn); //绑定事件 (这个的话类似jquery的绑定事件) grid.un("rowcl ...
最新文章
- 赠书 | 在Python领域,你与专家之间的距离只差这两本书
- MYSQL基础----集合函数(count,sun,avg,max,min)
- c运行库、c标准库、windows API都是什么玩意
- oracle表还原truncate,Oracle数据库之Oracle表恢复(truncate)
- JavaScript越来越简单啦啦啦
- Bzoj4561 [JLoi2016]圆的异或并
- 单例模式:Instance
- 机器学习笔试面试超详细总结(四)
- Paddle 基于预训练模型 ERNIE-Gram 实现语义匹配
- 消失了一周的小夕在玩什么啦?
- dedecms--需要注意的细节
- 《剑指Offer》 滑动窗口的最大值
- syDataProcess项目
- Phase2 Day23 数据库连接池DbUtils
- 爱立信Ericsson
- IPK轻量级密钥技术在电力卫星物联网中的接入与非证书签名认证
- c语言的链表ppt,C语言链表详解ppt.ppt
- 洛谷P4234 最小差值生成树 题解
- 淘宝商品比价定向爬虫实例介绍
- Spring Boot制作个人博客-标签页
热门文章
- MMC 开发浅谈 - 准备篇(学习资料与配置环境)
- ElasticSerach7.15.2插件中文分词器(IK+pinyin)
- 使用CAD圆和多边形内、外接圆命令绘制图形。使用CAD多线段命令绘制图形
- 2.4G无线鼠标 PK 蓝牙鼠标
- 项目经理如何才能控制项目进度
- 〖Python接口自动化测试实战篇②〗- 摒弃 ‘捉虫师’ 称号 - 你需要重新认识软件测试
- matlab nlm,NLM.m · hr_yang/MatlabCode - Gitee.com
- Google Earth Engine——MODIS Combined 16-Day NDVI逐年合成影像循环下载
- Web应用中基于密码的身份认证机制(表单认证、HTTP认证: Basic、Digest、Mutual)
- http-杂货铺.md