背景
前端应用(Native App/H5/React Native/小程序等)分发于前端用户数以亿计的设备之中,我们一般无法直观地感受到生产环境上所有用户的真实使用体验,应用测试阶段因有限的人力、设备资源和特定的网络环境也无法保证测试场景能覆盖市面上的所有设备和真实用户场景,因此测试环境的性能测试只能作为参考,而不能作为真实用户体验的直接依据,另外生产环境的海量设备和应用场景经常触发测试环境无法复现的问题,我们无法通过技术手段直接定位原因,排查线上问题变得非常困难
当我们无法直观地分析应用在所有真实设备上的运行情况,也就无法了解我们的应用有什么问题,进而解决问题,提升用户体验,而用户体验直接影响了 DAU、用户留存率、转化率等这些重要的业务指标,因此如何衡量线上用户体验,快速发现、解决用户体验相关的问题,全面提升用户体验是我们亟需考虑的事情
需求和目标
- 可视化应用性能数据,反应真实用户体验
- 实时监控各类性能指标,快速发现问题
- 通过提升性能指标,提升用户体验,进而提升业务指标
数据流程设计
设计和分析指标
在设计指标之前,先明确几个术语定义:
源数据:根据统计目的(计算相关指标)而采集到的样本数据
数据:统计源(样本)数据或根据其他数据计算而得到的量化的、可分析,进而能指导改进的数据
指标:具有特定描述目标的数据,同时也是我们重点关注的数据
指标纬度:分析与指标相关的一个特定因素,一般通过对比分析确定该因素和指标的相关性
定性分析:目标属性拆解,得到指标和指标纬度
定量分析:确定指标计算公式或统计方式
在采集源数据之前,我们需要明确分析目标:
- 了解应用当前的现状以及当前现状与业务指标的关系(统计指标)
- 根据当前现状为我们指导改进方向(分析指标)
- 验证改进效果(提升指标)
因此我们定义的指标应该满足以上三个目标,那么该如何定义合适的指标呢?
在《精益数据分析》中描述了以下类别的指标:
- 定性指标与量化指标
定性指标通常是非结构化的、经验性的、揭示性的、难以归类的;量化指标则涉及很多数值和统计数据,提供可靠的量化结果,但缺乏直观的洞察- 虚荣指标与可付诸行动的指标
虚荣指标看上去很美,让你感觉良好,却不能为你的公司带来丝毫改变;相反,可付诸行动的指标可以帮你遴选出一个行动方案,从而指导你的商业行为- 探索性指标与报告性指标
探索性指标是推测性的,提供原本不为人所知的洞见,帮助你在商业竞争中取得先手优势;报告性指标则让你时刻对公司的日常运营、管理性活动保持信息通畅、步调一致- 先见性指标与后见性指标
先见性指标用于预言未来;后见性指标则用于解释过去;相比之下,我们更喜欢先见性指标,因为你在得知数据后尚有时间去应对——未雨绸缪,有备无患- 相关性指标与因果性指标
如果两个指标总是一同变化,则说明它们是相关的;如果其中一个指标可以导致另一个指标的变化,则它们之间具有因果关系。如果你发现你能控制的事(比如播放什么样的广告)和你希望发生的事(比如营收)之间存在因果关系,那么恭喜你,你已拥有了改变未来的能力
结合分析目标和对各类指标作用的清晰认识,可将其作为我们设计指标的指导原则
设备画像
在商业业务活动中,一切活动的基础都是用户,因此诞生了基于用户画像理论的商业活动分析,可帮助产品和运营定位目标用户群体,确定产品定位、扩新、留存等;类似地,在前端应用性能分析领域,应用运行的基础是其安装的设备,设备之于应用性能就像用户之于产品,在不同个体上的表现可能天差地别,我们需要准确识别我们的目标设备群,才能针对性优化,同时也只有依据设备画像才能正确解释一些性能指标的变化情况,比如某一年度应用的启动或加载速度明显比上一年度的均值要高,通过设备画像分析,用户机型的升级换代(5G 网络占比上升,机型配置升级等)是指标变化的主要原因
分析思维导图
数据(指标)分析方法
- 逻辑树分析:分析问题的逻辑流程(思路),整个分析过程可由一颗问题树描述,中间结点描述问题,连线和叶子结点描述解决方案
- 多纬度拆解分析:将单项指标转化为一组指标,寻找单项指标的变化规律(比如柱状排序图)或确定结果指标和目标指标的相关性(比如趋势对比图)
- 综合分析:利用多项指标根据一定的算法得到一个综合指标
- 权重分配:专家赋权法+变异系数
- 对比分析
- 趋势对比:根据时间纬度拆分的数据进行对比,包括环比和同比,确定目标指标在一定时间范围内的变化趋势
- 其他纬度对比:根据其他纬度拆分的数据对比,确定该纬度和目标指标的相关性
- 漏斗转化分析:以漏斗图的形式展示某一业务流程各流程节点间(从上一节点进入下一节点)的转化率
本地缓存队列
当我们采集到数据之后,为了提高数据传输的效率和降低服务器压力,会首先将数据缓存在本地,结合一定的缓存和传输方