百度APP流畅度全流程质量监控实践(一) 流畅度现状分析

本文做者:yanxin1563微信

做者:MQA-sherryshare函数

前言

流畅度测试是客户端性能测试技术中一个深度领域,因此百度App给你们带来流畅度全流程质量监控实践的系列文章。oop

其中包含:性能

系列(一)流畅度现状分析,学习

系列(二)流畅度指标选取,测试

系列(三)流畅度线上线下监控实践,优化

系列(四)流畅度竞品评测方案。动画

但愿对你们在流畅度性能测试方向的学习和实践有所帮助。spa

 

背景

为何要关注流畅度?APP容易崩溃、网页新闻打不开等属于痛点问题,用户会投诉甚至卸载。通过不断的优化,提高稳定性、下降白屏率以后,这些痛点问题不那么痛时,咱们就须要把关注目标集中到用户的“爽点”上来,影响爽点的典型问题之一就是——卡顿问题。线程

测试同窗经过用户反馈分析,卡顿在不一样业务场景下,对用户体验都存在影响,且部分状况用户情绪较差,但实际上case by case处理时,常由于线下没法复现、用户提供线索不足等缘由不了了之,所以须要单独创建监控指标进行召回。

另外一方面,随着高性能手机不断出现,为了提高用户交互体验,设计再也不是简单的弹框或者加载的交互,动效等较“炫”的交互场景被更多的使用。带来高级感体验的同时,在低端机上会不会形成负担呢?会不会给人不只不“炫”,反而卡的无法用的感受呢?所以,咱们亟需一套好的流畅度监控标准,来掌握高级交互和卡顿之间的平衡

 

业界流畅度监控方案调研(Android)

1. 基础流畅度概念介绍

1.1 理想帧率:

60FPS,受限于显示器的刷新频率60HZ

 

1.2 理想帧长:

1/60≈16.6ms

 

1.3 Vsync机制:

VSync 能够简单的认为是一种定时中断,系统在每次须要绘制的时候都会发送VSync Pulse 信号,cpu/gpu 收到信号后立刻处理绘制。

 

2. 业界方案调研

 

3. 监控实现原理

3.1 统计帧长基于VSYNC:统计帧长、SM、SF:

Choreographer类就是接受系统垂直同步信号(VSync信号),在每次接受VSync信号时顺序执行View的Input、Animation、Draw等3个操做,而后等待下一个信号,再次顺序执行3个操做。若是第二个信号到来时,Draw操做没有按时完成,界面将不会更新,显示的仍是第一帧的内容。这就表示丢帧了,丢帧是形成画面卡顿的缘由。因此咱们能够向Choreographer类中加入本身的Callback,经过此Callback的doFrame函数咱们能够统计一秒内帧绘制的次数(即流畅值SM )、绘制耗时(两次doFrame之间耗时,即帧长)、丢帧SF。

 

3.2 基于Looper:

利用UI线程的Looper打印的日志匹配获取帧长。和VSYNC方案相似,只是当UI线程阻塞严重时,可能出现数据丢失。(对UI线程的影响也是一个待平衡点)

 

3.3 堆栈监控:

单开线程按期抓取堆栈,基于Vsync或者Looper机制监控到帧长超过指定阈值时,上传最近的堆栈。但因为单开线程实时抓堆栈,会致使应用自己性能退化,不适宜线上长期大面积使用。

 

3.4 监控注意事项(实测经验):

实际测试中发现,APP静置时,尤为是网页静置时,SM值亦可能出现变低如接近30的状况,SF值、帧长都可能存在超过理想值的状况。缘由是用户虽未对界面进行操做,亦可能在后台发生下载、屏幕显示区域以外的动画等行为,总体界面展示上表现不出卡顿,但可能会对用户肉眼感知不到的加载等形成影响。

——不一样阶段、不一样场景下,相同流畅度指标的绝对值,对用户实际体验的反应准确度有所不一样,所以建议区分场景和阶段进行监控。

 

参考资料

  1. 萧竹:Android App性能评测分析-流畅度篇
  2. htkeepmoving:移动APP性能评测-流畅度评测
  3. 腾讯:【腾讯TMQ】GT3.1简化您的App性能测试(2)——原理讲解,溯本求源
  4. 微信读书:卡顿监控系统
  5. 腾讯perfdog:PerfDog性能狗帮助文档
  6. whbsspu:为何帧率达到60fps页面就流畅?
  7. egos:Android中VSync机制的介绍
  8. markzhai’s home:BlockCanary — 轻松找出Android App界面卡顿元凶(AndroidPerformanceMonitor)

原文连接地址:https://developer.baidu.com/topic/show/290493

相关文章
相关标签/搜索