距离2022年大老板使用app随手点出一个闪退,大发雷霆,领导决定下达稳定性治理任务一算快2年,目前来说,颇有成效,目前iOS的崩溃率不到0.02%,Android的崩溃率不到0.03%。
一、什么是稳定性?
稳定性指APP「崩溃」与「卡顿」、「异常退出」等情况,相关数据显示,当iOS的崩溃率超过0.8%,Android的崩溃率超过0.4%的时候,活跃用户有明显下降态势。它不仅会造成关键业务中断、用户留存率下降、品牌口碑变差等负面影响,而且会直接带来卸载和流失。也同时给开发者带来不可小觑的资本损失。
(数据图片来源:蒲公英云网站 iOS的崩溃率高于Android?来自听云的数据告诉你真相-蒲公英云)
二、如何衡量一个APP的质量?
首先,衡量一个App质量好坏时我们需要定义一个统一的口径,即哪些指标可以作为稳定性的评估口径?以友盟+的U-APM定义的稳定率这个概念为例,评价一个App的稳定性和质量,一般从以下三点综合考虑:
1.发生了崩溃- crash,如java崩溃和Native崩溃,即用崩溃率这个指标来评估计算;
崩溃,也就是程序出现异常,导致程序退出。包括:
Java崩溃,也就是在Java代码中出现了未捕获异常,导致程序异常退出。如:空指针异常、数组越界异常等。
Native异常,也就是在Native代码中,出现错误产生相应的signal信号,导致程序异常退出。如:访问非法地址、地址对其问题等。
2.发生了ANR-Application Not Responding,即用ANR率这个指标来评估计算;
当应用程序一段时间无法及时响应,则会弹出ANR对话框,让用户选择继续等待,还是强制关闭。从用户体验的角度看,有时候ANR可能要比崩溃会带来更糟糕的体验,所以开发者重视崩溃的同时也要非常重视ANR
3.异常退出,如:low memory killer、任务列表中划掉、系统异常、断电、用户触发关机/重启等,即用异常率这个指标来评估计算。
三、目前APP情况怎么样?
参考公司目前的EMS平台,我们爬取了过去的七月数据:
安卓端崩溃次数13835次,影响设备9459台,每日平均崩溃率0.08%,每日峰值崩溃率发生在7月12日,为0.12%,每小时峰值崩溃率为0.47%,发生在7月12日14点
IOS端崩溃次数15239次,影响设备14004台,每日平均崩溃率0.059%,每小时峰值崩溃率为0.29%,发生在7月19日22点,虽然从崩溃率上看优于安卓,但崩溃设备数接近安卓的1.5倍
综上所述,
线上安卓端crash次数13835次,日均446.3次,受影响设备数9459台,日均305台,ios端crash次数15239次,日均491次,受影响设备数14004台,日均451台。
除去用户低活跃的1:00-6:00,平均每80秒便有一位客户受到客户端崩溃困扰,严重影响用户体验,目前公司业务量飞速增长,该数字会随着用户基数的提升而愈发突出。
虽然在单看全天平均崩溃率时,安卓端的0.086%,iOS端的0.059%,对比业内标准0.05%,超出数值不算太大,但在用户活跃的每日7:00-24:00,崩溃率时常呈现冲高形式,峰值甚至一度超过标准的5倍,所以使用一款工具来测试App的稳定性,更早的发现crash问题并在上线前修复,很有必要。
四、既然有问题,那我们该怎么做?
我们调研了市场上几款主流的稳定性测试的工具发现
最终确定使用字节开源的fastbot工具。