课前准备
- systrace
- android studio profile面板
- 虚拟机与真机
- battery-historian
性能监控
- https://github.com/w3c/web-performance
- https://developers.google.com/web/tools/chrome-devtools/evaluate-performance
性能获取办法:
- Appium + WebView Context + execute script + perfmance api
- webview domain socket + forward + websocket
{
"name": "https://testerhome.com/uploads/user/avatar/104.jpg!sm",
"entryType": "resource",
"startTime": 366.745000006631,
"duration": 140.19499998539686,
"initiatorType": "img",
"nextHopProtocol": "http/1.1",
"workerStart": 0,
"redirectStart": 0,
"redirectEnd": 0,
"fetchStart": 366.745000006631,
"domainLookupStart": 366.745000006631,
"domainLookupEnd": 366.745000006631,
"connectStart": 366.745000006631,
"connectEnd": 366.745000006631,
"secureConnectionStart": 366.745000006631,
"requestStart": 469.1650001332164,
"responseStart": 505.46000013127923,
"responseEnd": 506.9399999920279,
"transferSize": 2119,
"encodedBodySize": 1748,
"decodedBodySize": 1748,
"serverTiming": []
}
线上监控
系统性能数据
performance(){
username=$(adb shell ps | grep $1 | awk '{print $1}')
echo "for i in \\$(seq 1 60);do top -u $username -o %CPU,%MEM,RES,CMDLINE -b -d 1 -n 1 -q ;done" > /tmp/p.sh
adb push /tmp/p.sh /data/local/tmp/
adb shell sh /data/local/tmp/p.sh
}
更多性能指标获取方法
adb shell dumpsys procstats --hours 3
adb shell dumpsys meminfo package_name|pid [-d]
adb shell dumpsys batterystats --charged package-name
adb shell dumpsys netstats detail
adb shell dumpsys gfxinfo package-name
帧率
耗电量
监控的优点:可以发现测试无法覆盖的场景,对整体质量有更好的把控。可以分析全量用户的体验。
专项测试发展
- 黑盒
- 白盒
- 监控
白盒
白盒手段
监控
- 使用白盒分析的手段,比如trace debug 插桩分析代码的性能
- 数据同步到监控系统 skywalking
课后作业1
- 用自己公司的app作为示例,找一个经典业务场景,比如滑动、视频播放、打开页面等。不要超过20s
- 统计 cpu mem net jank 使用脚本统计数据(必选),并绘制出图形(可选)
课后作业2
- 同上的业务
- 使用systrace找到卡帧的地方并截图
- 使用cpu profile,找出某个界面的加载时间。xxxActivity::OnCreate函数的加载时间。选择并截图整个堆栈结果。