【学习笔记】H5性能测试

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

方便移动端H5测试,包直接来源于移动端货去PCAP文件;

各类资源数据统计一目了然;

瀑布流展示http请求过程;

操作麻烦,抓包和分析都需要人工操作;

属于离线分析,不实时;

没有具体的web展示;

Page Speed

直观展示测试结果,并给出优化建议;

可以测试移动端和PC端;

提供了网页速度和用户体验两类结果,包括字体清晰度,窗口大小等用户体验结果;

只有结果,没有详细的资源数据统计;

没有提供各个http的request和response的详细数据;

WebPagetest(推荐)

提供了首屏时间、首字节时间,全界面加载时间的工具,并提供对应时间点的截图;

提供了瀑布流视图和连接视图,清晰展示了并发请求的http连接以及请求资源;

提出优化建议checklist,详细标出各个资源是否可以优化,如压缩、缓存、发布CDN、设置GZIP等;

提供测试过程的视频演示;

并不是专门为移动端h5测试所设计的;

关注h5前端页面本身的性能,没有关注浏览器引起的内存、CPU、FPS等的变化;

Chrome DevTools(推荐)

支持移动端h5在PC端远程调试,能够对具体的移动设备进行测试;

集成了Page Speed;

提供Network面板,展示瀑布流视图,各类资源清晰展示,并提供了缩略图,方便查看图的大小尺寸,以及是否有缺失和冗余;

提供TimeLine面板,展示CPU、内存、FPS等性能数据;

录制分析的一种静态分析方法,不同于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

 

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着互联网的发展,移动互联网的普及,手机APP已成为人们使用最多的移动终端产品之一。随着越来越多的APP应用的涌现,越来越多的APP需要内嵌H5页面WebView进行网页的展示和交互。WebView是一种可在应用程序中嵌入Web页面的控件,可以用来显示来自互联网上的Web页面。它可以实现在应用中展示网页或在线功能,解决一些本地应用无法实现的功能。下面,我们分别从用户、开发者两个方面来探讨APP内嵌H5页面WebView的优缺点。 一、用户方面: 优点: 1.节省时间:在APP中直接查看嵌入的网页,省去了用户手动打开浏览器输入网址的步骤; 2.良好的用户体验:页面加载速度相对较快,而且对主应用对内存占用少,不影响其他应用的使用; 3.方便分享:在WebView中打开的网页可以长按复制网址链接,方便分享给其它用户; 4.强大的交互能力:在APP中嵌入H5页面,拓展了应用的交互能力。 缺点: 1.便捷性带来的安全隐患:一些App会在内嵌的H5页面中嵌入第三方广告,导致用户隐私泄露; 2.缺乏统一标准:因为浏览器的内核和引擎都是不同的,所以在不同的WebView中,同一网页的显示效果和交互体验可能会有差异。 二、开发者方面: 优点: 1.拓展应用功能:借助WebView内嵌H5页面,应用的功能可以得到极大的拓展; 2.代码复用:WebView可以实现HTML、CSS等内容的兼容,减轻了移动开发者负担; 3.节省开发成本:相对于开发单独的H5 APP,内嵌方式更为灵活,可以适用于不同场景和需求。 缺点: 1.不支持多线程:WebView在JS调用本地方法的时候是在同一线程下执行的,如果WebView的内容较为复杂,可能会导致主线程卡顿; 2.性能问题:在内存管理、布局排版等方面还不如原生应用; 3.浏览器兼容性:WebView的内核并没有得到很好的统一,不同的WebView之间有兼容性问题,会导致页面显示和交互问题; 4.安全问题:WebView加载HTML页面时容易受到跨站脚本(XSS)和恶意代码注入等安全漏洞的攻击。为此,开发者应该加强前端页面安全防范,对浏览器缓存和Cookie进行管理并开启CSP(内容安全策略)。 综合来看,在APP内嵌H5页面WebView上,开发者需要在开发时注意安全方面的问题,同时还需要加强对WebView性能和兼容性的了解和优化。用户便捷性和良好的用户体验,也需要开发者在开发时重视。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值