1、基本的测试checklist和手段
- 业务测试
- 回归测试
- 专项测试
- 质量监控
image.png
2、非功能(专项)测试
- 业务测试(面向新需求)
- 回归测试(面向已交付需求)
- 非功能测试:针对专项质量问题的测试
- 移动端性能问题(硬件相关,比如cpu、mem、disk、network、gpu)
- 移动端场景问题(场景相关,比如弱网测试、兼容性测试、国际化)
3、专项测试(用户维度)
- 崩溃(Crash,弱网)
- 卡顿(掉帧、gc、cpu)
- 响应慢(启动时间、交互响应、H5加载)
- 发热(cpu,mem、io、network、gps等硬件使用)
- 掉电快(硬件占用)
- 兼容性问题(机型覆盖、回归)
4、专项测试(技术维度)
- 崩溃:自动遍历、monkey测试、横竖屏切换、快速进退
- 卡顿(掉帧、gc、cpu):卡顿测试、内存泄漏测试、method profile
- 响应慢(启动时间、交互响应、H5加载)∶冷热启动、界面切换、h5性能测试
- 发热(cpu,mem、io、network、gps等硬件使用)
- method profile、gc统计、io统计、流量统计、硬件使用统计、耗电量分析
- 兼容性问题(机型覆盖、回归)
- 兼容性测试、自动化测试、自动遍历、monkey测试
5、App性能
Activity启动流程
image.png
主要流程
- Application OnCreate
- 加载第三方的sdk
- Activity OnCreate
- 加载自身的逻辑
- 发送远程数据请求xxx.json
- 渲染界面List
响应时间
- app启动:首次安装启动、冷启动、暖启动、热启动
- app交互:事件响应、内部加载速度、首屏渲染
- 接口性能: dns、http/https、download、json
- h5性能:cache、资源加载、dom、page
app启动性能度量指标
- 首次安装启动:首次安装会耗费较多的时间初始化,比如补丁下载、缓存数据
- 冷启动:进程不存在
- 暖启动:进程存在,界面不存在
- 热启动:界面对象仍然存在,只是从后台前置到前台
- 首屏启动:第一屏加载完整
UI性能检测常用办法
- adb logcat
- 录屏+视频拆帧
- uiautomator等自动化工具200ms巡检界面变化
- traceview
- 硬埋点
logcat中的性能数据
package=com.xueqiu.android
- 清理缓存数据:
adb shell pm clear $package
- 停止进程:
adb shell am force-stop $package
- 启动app:
adb shell am start -S-W $package /.view.WelcomeActivityAlias
- 获取数据:
adb logcat lgrep-i displayed
代码性能剖析
- 基于dalvik art虚拟机的剖析技术
- traceview
- android studio自带的profile面板
- 火焰图
- 调用图
-
cpu时间与user时间
image.png
6、webview性能分析
image.png
-
获取小程序的性能指标,使用inspect工具
-
performance.timing
,获取总共统计的性能指标 -
performance.getEntries
,获取所有资源的性能指标
image.png
image.png
-
-
通过
adb shell cat /proc/net/unix | grep devtoo
,查找Android上跨进程通讯的句柄,通过这些句柄可以找到webview的组件,从而找到对应的进程。
image.png
真机webview性能测试
- 模拟器6.0默认支持
- 真机需要打开
- setWebContentsDebuggingEnable开关
- https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews?hl=zh-cn