App性能测试
目前App测试招聘的越来越多,各种应用、游戏都逐步从pc端向App端迁移,薪水也是与日俱增,未来App应用的市场占有量将远远超越pc应用,可见这是一个很好的发展方向。废话不多说,下面直奔主题。App性能测试分客户端和服务端,服务端的性能可以通过接口或者web网页模拟用户输入进行测试,和普通的PC端性能测试方法一样;客户端性能需要借助一些专门的工具来测试,App性能的关注点主要有耗电量、耗流量、启动退出耗时、响应时延、流畅度、crash率、卡顿、cpu内存等,下面介绍下网上搜集的一些App测试工具:
Android
痛点 |
工具名 |
推荐原因 |
工具类别 |
落地优先级 |
落地成本 |
卡顿 |
Chrome for android开源性能测试工具(surface_stats.py) |
里面已经涵盖了FPS和janky采集的方法,用python写的命令行,简单直接地跟自动化测试结合。 |
发现 |
P0 |
低 |
卡上报(AnimationPerfMon.java) |
在空间落地卡上报,跟处理crash一样,通过堆栈快速定位解决问题, 补充ANR的缺失 |
发现+定位 |
P0 |
中 |
|
听云/OneAPM |
基于UIThread/主线程的监控,都有不错的卡顿的发现能力。但是因为没有获取堆栈,而只有简单的方法名和activity,所以对于复杂的软件定位稍微困难。 |
发现+定位(弱) |
P1 |
低 |
|
Fresco |
通过内存缓存的优化达到流畅的图片及列表展示性能 |
解决 |
P1 |
低 |
|
Realm |
通过更优秀的I/O性能,降低APP对持久化数据读写的损耗,从而提升交互性能。可替代sqlite。 |
解决 |
P1 |
中 |
|
闪退 |
LeakCanary |
高效率发现大部分内存泄漏导致的OOM。 |
发现+定位 |
P0 |
低 |
Bugly/听云/OneAPM/Testin |
CRASH监控的能力大同小异,都能对数据上报的统计分析,清晰现网情况,用户痛点。但我会推荐腾讯的BUGLY, 因为ANR, CRASH都能提供比较足够的信息定位问题,另外,因为是腾讯的。 |
发现+定位+反馈上报 |
P0 |
低 |
|
Testin |
兼容性/稳定性测试利器,关键是机器的量够! |
发现+定位 |
P0 |
低 |
|
待机时间短 |
Chkbugreport |
从用户手机中提取BUGREPORT。通过这个工具是可以分析简单的耗电问题,如sensor或摄像头没有关闭,wakelock的问题。 |
发现+定位 |
P0 |
中 |
痛点指标 |
工具名 |
推荐原因 |
工具类别 |
落地优先级 |
落地成本 |
卡顿 |
FastImage |
通过节省decode的耗时等方法,提升图片及图片列表的展示性能 |
解决 |
P1 |
低 |
Realm |
通过更优秀的I/O性能,降低APP对持久化数据读写的损耗,从而提升交互性能。可替代coredata,userdefault,sqlite。 |
解决 |
P1 |
中 |
|
MGWatchdog |
实现类似ANR的机制,主要是要跟上报结合 |
发现+定位 |
P0 |
低 |
|
闪退 |
Infer |
解决因内存泄漏导致的内存耗尽导致的闪退。能扫描简单的循环引用导致的内存泄漏。 |
发现+定位 |
P0 |
低 |
Bugly/听云/OneAPM/Testin |
CRASH监控的能力大同小异,都能对数据上报的统计分析,清晰现网情况,用户痛点。但我会推荐腾讯的BUGLY, 因为ANR, CRASH都能提供比较足够的信息定位问题,另外,因为是腾讯的。 |
发现+定位+反馈上报 |
P0 |
低 |
|
待机时间短 |
iOSDiagnostics |
可以获取一些耗电的模块的信息,如果可以融合到数据上报中的话就更好了。 |
发现+定位 |
P0 |
中 |
痛点指标 |
工具名 |
推荐原因 |
工具类别 |
落地优先级 |
落地成本 |
流量大/速度慢 |
BPG(android,类似webp) BPG(ios) |
BPG是H265帧内压缩做图片压缩,webp是利用VP8帧内压缩做图片压缩。图片压缩对于图片应用来说,除了能提升用户下载显示图片的速度,还能为企业节约带宽成本。 |
解决 |
P1 |
中 |
Pngquant |
利用PNG8压缩PNG图片,颜色单一的图片,效果会非常明显。 |
解决 |
P0 |
低 |
|
Wireshark |
实用的流量分析工具,包括export http object, I/O graph等等 |
发现+定位 |
P1 |
中 |
|
Emmagee |
Android的性能测试组件,里面涵盖很多性能数据获取的方法,可参考使用。 |
发现 |
P1 |
低 |
|
HAR + PageSpeed |
利用tcpdump在手机上获取的PCAP, 利用HAR转换PCAP,然后给pagespeed组件分析。 |
定位 |
P1 |
低 |
|
弱网兼容性差(ios通用) |
ATC |
Facebook弱网络模拟工具。好处是模拟丢包,抖动的时候比较稳定,而且还有HTTP API可以调用, 方便和自动化配合。 |
发现 |
P0 |
中 |
SPDY/QUIC |
特别是QUIC, 就是为了网络抖动而设计的。 |
解决 |
P2 |
中 |
|
OKHTTP |
推荐的HTTP组件。性能好,弱网兼容也不错。 |
解决 |
P1 |
低 |
App性能测试
目前App测试招聘的越来越多,各种应用、游戏都逐步从pc端向App端迁移,薪水也是与日俱增,未来App应用的市场占有量将远远超越pc应用,可见这是一个很好的发展方向。废话不多说,下面直奔主题。App性能测试分客户端和服务端,服务端的性能可以通过接口或者web网页模拟用户输入进行测试,和普通的PC端性能测试方法一样;客户端性能需要借助一些专门的工具来测试,App性能的关注点主要有耗电量、耗流量、启动退出耗时、响应时延、流畅度、crash率、卡顿、cpu内存等,下面介绍下网上搜集的一些App测试工具:
Android
痛点 |
工具名 |
推荐原因 |
工具类别 |
落地优先级 |
落地成本 |
卡顿 |
Chrome for android开源性能测试工具(surface_stats.py) |
里面已经涵盖了FPS和janky采集的方法,用python写的命令行,简单直接地跟自动化测试结合。 |
发现 |
P0 |
低 |
卡上报(AnimationPerfMon.java) |
在空间落地卡上报,跟处理crash一样,通过堆栈快速定位解决问题, 补充ANR的缺失 |
发现+定位 |
P0 |
中 |
|
听云/OneAPM |
基于UIThread/主线程的监控,都有不错的卡顿的发现能力。但是因为没有获取堆栈,而只有简单的方法名和activity,所以对于复杂的软件定位稍微困难。 |
发现+定位(弱) |
P1 |
低 |
|
Fresco |
通过内存缓存的优化达到流畅的图片及列表展示性能 |
解决 |
P1 |
低 |
|
Realm |
通过更优秀的I/O性能,降低APP对持久化数据读写的损耗,从而提升交互性能。可替代sqlite。 |
解决 |
P1 |
中 |
|
闪退 |
LeakCanary |
高效率发现大部分内存泄漏导致的OOM。 |
发现+定位 |
P0 |
低 |
Bugly/听云/OneAPM/Testin |
CRASH监控的能力大同小异,都能对数据上报的统计分析,清晰现网情况,用户痛点。但我会推荐腾讯的BUGLY, 因为ANR, CRASH都能提供比较足够的信息定位问题,另外,因为是腾讯的。 |
发现+定位+反馈上报 |
P0 |
低 |
|
Testin |
兼容性/稳定性测试利器,关键是机器的量够! |
发现+定位 |
P0 |
低 |
|
待机时间短 |
Chkbugreport |
从用户手机中提取BUGREPORT。通过这个工具是可以分析简单的耗电问题,如sensor或摄像头没有关闭,wakelock的问题。 |
发现+定位 |
P0 |
中 |
痛点指标 |
工具名 |
推荐原因 |
工具类别 |
落地优先级 |
落地成本 |
卡顿 |
FastImage |
通过节省decode的耗时等方法,提升图片及图片列表的展示性能 |
解决 |
P1 |
低 |
Realm |
通过更优秀的I/O性能,降低APP对持久化数据读写的损耗,从而提升交互性能。可替代coredata,userdefault,sqlite。 |
解决 |
P1 |
中 |
|
MGWatchdog |
实现类似ANR的机制,主要是要跟上报结合 |
发现+定位 |
P0 |
低 |
|
闪退 |
Infer |
解决因内存泄漏导致的内存耗尽导致的闪退。能扫描简单的循环引用导致的内存泄漏。 |
发现+定位 |
P0 |
低 |
Bugly/听云/OneAPM/Testin |
CRASH监控的能力大同小异,都能对数据上报的统计分析,清晰现网情况,用户痛点。但我会推荐腾讯的BUGLY, 因为ANR, CRASH都能提供比较足够的信息定位问题,另外,因为是腾讯的。 |
发现+定位+反馈上报 |
P0 |
低 |
|
待机时间短 |
iOSDiagnostics |
可以获取一些耗电的模块的信息,如果可以融合到数据上报中的话就更好了。 |
发现+定位 |
P0 |
中 |
痛点指标 |
工具名 |
推荐原因 |
工具类别 |
落地优先级 |
落地成本 |
流量大/速度慢 |
BPG(android,类似webp) BPG(ios) |
BPG是H265帧内压缩做图片压缩,webp是利用VP8帧内压缩做图片压缩。图片压缩对于图片应用来说,除了能提升用户下载显示图片的速度,还能为企业节约带宽成本。 |
解决 |
P1 |
中 |
Pngquant |
利用PNG8压缩PNG图片,颜色单一的图片,效果会非常明显。 |
解决 |
P0 |
低 |
|
Wireshark |
实用的流量分析工具,包括export http object, I/O graph等等 |
发现+定位 |
P1 |
中 |
|
Emmagee |
Android的性能测试组件,里面涵盖很多性能数据获取的方法,可参考使用。 |
发现 |
P1 |
低 |
|
HAR + PageSpeed |
利用tcpdump在手机上获取的PCAP, 利用HAR转换PCAP,然后给pagespeed组件分析。 |
定位 |
P1 |
低 |
|
弱网兼容性差(ios通用) |
ATC |
Facebook弱网络模拟工具。好处是模拟丢包,抖动的时候比较稳定,而且还有HTTP API可以调用, 方便和自动化配合。 |
发现 |
P0 |
中 |
SPDY/QUIC |
特别是QUIC, 就是为了网络抖动而设计的。 |
解决 |
P2 |
中 |
|
OKHTTP |
推荐的HTTP组件。性能好,弱网兼容也不错。 |
解决 |
P1 |
低 |