第十期_专项测试实战_20190922

课前准备

  • systrace
  • android studio profile面板
  • 虚拟机与真机
  • battery-historian

性能监控



性能获取办法:

  • 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函数的加载时间。选择并截图整个堆栈结果。