1、H5指移动网页本身

H5是指用H5语言制作的一切数字产品。

H5提供了全新的框架和平台,包括提供免插件的音视频、图像动画、本体存储以及更多酷炫而且重要的功能,并使这些应用标准化和开放化;

H5的最显著的优势在于跨平台性,用H5搭建的站点与应用可以兼容PC端与移动端、Windows与Linux、安卓与IOS。它可以轻易地移植到各种不同的开放平台、应用平台上。

随着H5页面的普及和运用,深深影响着我们各个业务的发展,H5性能测试越来越受到重视。

2、浏览器渲染原理和过程

浏览器作为一个客服端,它的主要作用就是展示可访问的资源,不管这些资源是本地资源还是通过网络请求获取到的资源。

  1. 地址栏输入地址触发网络请求,获取到html文件。
  2. HTML解析器解析HTML文件构建成为DOM树。
  3. 遇到CSS通过CSS解析器解析成为CSSOM。
  4. 遇到JS通过JS解析器解析。
  5. DOM Tree和CSSOM构建呈现树(6、7两个步骤)。
  6. 呈现树根据结构样式确定节点的位置(布局或者回流) ----回流。
  7. 确定好位置以后,根据外观样式绘制 ----重绘。
  8. 通过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性能测试相关推荐

  1. SQLite介绍、学习笔记、性能测试

    哪些人,哪些公司或软件在用SQLite: Nokia's Symbian,Mozilla,Abobe,Google,阿里旺旺,飞信,Chrome,FireFox 可见SQLite的稳定性及性能是不会有 ...

  2. Delphi-IOCP学习笔记九======性能测试和IOCP源码下载5000个连接数

    刚刚的测试,服务端上图 开了5个客户端<每个客户端1000>进行测试. 内存视乎不是很多.客户端的发过来的数据包大小在4096+88字节左右. 测试Echo测试线程 procedure T ...

  3. 思博伦测试仪学习笔记(性能测试方向RFC2544)

    (1) 吞吐率(Throughput) 定义:被测设备在不丢包的情况下,所能转发的最大数据流量.通常使用每秒钟通过的最大的数据包数或者字节数来衡量(MB/s) . 作用:反映被测试设备所能够处理(不丢 ...

  4. class h5 点击后样式变化_H5学习笔记

    目录 什么是HTML: 头部标签 H5视频 H5音频 H5拖放 H5Web存储 H5应用缓存 H5画布SVG H5画布canvas 全局属性: 事件属性: 颜色.样式和阴影 线条样式 矩形 路径 转换 ...

  5. 软件工程学习笔记《三》代码优化和性能测试

    文章目录 软件工程学习笔记目录 如何在开源社区提问? 代码审查 代码优化 运行结果 参数解释 代码优化原则 对常见的数据结构排序算法进行测试 关于冒泡排序优化的探讨 结果 软件工程学习笔记目录 [ht ...

  6. 【测试工具】-性能测试-GT学习笔记

    [性能测试工具]-GT学习笔记 一.GT介绍 腾讯MIG研发的Android APP测试平台,主要应用于手机APP的性能测试(CPU,内存,网络流量,电量,帧率,流畅度) 安卓/IOS手机端调测组件, ...

  7. 计算机组成原理学习笔记第1章 1.3——实验一 计算机性能测试

    计算机组成原理学习笔记第1章 1.3--实验一 计算机性能测试 本篇笔记整理:Code_流苏(CSDN) 目录 计算机组成原理学习笔记第1章 1.3--实验一 计算机性能测试 0️⃣思维导图(自制) ...

  8. CSS入门学习笔记+案例(1)

    CSS入门学习 一.CSS简介 1.什么是CSS CSS:Cascading Style Sheet 层叠样式表 是一组样式设置的规则,用于控制页面的外观样式 2.为什么使用CSS 实现内容与样式的分 ...

  9. miniui文件上传 linux,MINIUI grid学习笔记

    grid 控件 a.事件的绑定和移除 grid.on("rowclick", fn); //绑定事件 (这个的话类似jquery的绑定事件) grid.un("rowcl ...

最新文章

  1. 赠书 | 在Python领域,你与专家之间的距离只差这两本书
  2. MYSQL基础----集合函数(count,sun,avg,max,min)
  3. c运行库、c标准库、windows API都是什么玩意
  4. oracle表还原truncate,Oracle数据库之Oracle表恢复(truncate)
  5. JavaScript越来越简单啦啦啦
  6. Bzoj4561 [JLoi2016]圆的异或并
  7. 单例模式:Instance
  8. 机器学习笔试面试超详细总结(四)
  9. Paddle 基于预训练模型 ERNIE-Gram 实现语义匹配
  10. 消失了一周的小夕在玩什么啦?
  11. dedecms--需要注意的细节
  12. 《剑指Offer》 滑动窗口的最大值
  13. syDataProcess项目
  14. Phase2 Day23 数据库连接池DbUtils
  15. 爱立信Ericsson
  16. IPK轻量级密钥技术在电力卫星物联网中的接入与非证书签名认证
  17. c语言的链表ppt,C语言链表详解ppt.ppt
  18. 洛谷P4234 最小差值生成树 题解
  19. 淘宝商品比价定向爬虫实例介绍
  20. Spring Boot制作个人博客-标签页

热门文章

  1. MMC 开发浅谈 - 准备篇(学习资料与配置环境)
  2. ElasticSerach7.15.2插件中文分词器(IK+pinyin)
  3. 使用CAD圆和多边形内、外接圆命令绘制图形。使用CAD多线段命令绘制图形
  4. 2.4G无线鼠标 PK 蓝牙鼠标
  5. 项目经理如何才能控制项目进度
  6. 〖Python接口自动化测试实战篇②〗- 摒弃 ‘捉虫师’ 称号 - 你需要重新认识软件测试
  7. matlab nlm,NLM.m · hr_yang/MatlabCode - Gitee.com
  8. Google Earth Engine——MODIS Combined 16-Day NDVI逐年合成影像循环下载
  9. Web应用中基于密码的身份认证机制(表单认证、HTTP认证: Basic、Digest、Mutual)
  10. http-杂货铺.md