Android性能测试

转载 2017年01月03日 11:07:44

那些年我们用过的显示性能指标 
Android客户端性能优化(魅族资深工程师毫无保留奉献) 
这一次,我优化了37%的内存 
Android性能测试之fps获取 
Android应用性能测试之CPU和内存占用 
android如何查看cpu的占用率和内存泄漏 
如何解决CPU使用率过高问题 
ADB Shell Commands 
Android应用性能测试 
强烈推荐转载-Android 性能测试(抱歉,没找到原文) 
Android 性能测试实践(四) 流量

测试维度


  • CPU占用率
  • 内存使用
  • 响应时间/加载速度
  • 显示性能(FPS)
  • 电量、流量
  • Crash
  • ANR

命令介绍


本文涉及到的命令主要有:

  • > 表示输出内容写入到文件 eg. echo 121212 > 12.txt
  • >> 表示输出内容追加到文件 eg. echo 343434 >> 12.txt
  • Ctrl + c 快捷键:终止命令
  • adb shell
  • ps 查看进程的,查看某一进程adb shell ps <packageName>而非adb shell ps | grep <packageName>
  • top 查看占用率 top -d 1 | grep com.baidu.BaiduMap(以百度地图为例,每一秒打印一次资源利用情况)
  • adb shell dumpsys <service name>打印当前系统信息。
  • adb shell dumpsys 输出信息的开始部分就是所有运行的service;
  • adb shell service list 同样查看所以运行的service

    查询到运行的system service后,就可以在dumpsys后面加上service的名字,查看指定的service信息。
    adb shell dumpsys activity
    adb shell dumpsys cpuinfo
    adb shell dumpsys battery
    adb shell dumpsys window(最后部分可以看到分辨率的信息)
    有些service能够接收额外的参数,我们可以使用-h查看帮助信息。
    adb shell dumpsys package -h
    adb shell dumpsys activity -h
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • adb shell cat /proc/cpuinfo 查看CPU信息

  • adb shell cat /proc/stat 查看CPU使用率
  • adb shell dumpsys gfxinfo <packageName>查看帧率FPS
  • adb shell pm list package列出所有的包名
  • adb shell dumpsys package:列出所有的安装应用的信息
  • adb shell dumpsys package <packageName>:查看某个包的具体信息

更多内容请参考:ADB Shell Commands

维度分析


CPU占用率

  • CPU使用背景知识

    在开发过程中,我们会遇到手机的CPU使用率而引发的问题,那接下来,我对这方面知识做些整理及归纳: 
    **CPU利用率是指:**CPU执行非系统空闲进程的时间 / CPU总的执行时间。 
    Android关于进程使用率的限制: 
    前台进程不超过95%,后台进程5%, 但是在系统没有前台进程时,后台进程可以超过5% 
    (关于什么是前/后台进程,我就不啰嗦了)

  • 可能引发的问题

    整体性能降低 
    界面卡顿 
    响应慢,容易引起ANR

  • 数据获取

  • 通过ADT中的DDMS来查看 
    System Information(CPU Load & Memory usage & Frame Render Time)

  • adb shell $ dumpsys cpuinfo|grep <package>

扩展阅读

  • top命令如下
130|shell@hnSCL-Q:/ $ top -h
Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [
-t ] [ -h ]
    -m num  Maximum number of processes to display.// 最多显示多少个进程
    -n num  Updates to show before exiting.// 刷新次数 
    -d num  Seconds to wait between updates.// 刷新间隔时间(默认5秒) 
    -s col  Column to sort by (cpu,vss,rss,thr).// 按哪列排序 
    -t      Show threads instead of processes. // 显示线程信息而不是进程 
    -h      Display this help screen.// 显示帮助文档 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 查看前5个进程CPU情况
shell@hnSCL-Q:/ $ top -m 5 -s cpu

User 1%, System 2%, IOW 0%, IRQ 0%
User 9 + Nice 1 + Sys 18 + Idle 595 + IOW 0 + IRQ 0 + SIRQ 0 = 623

  PID PR CPU% S  #THR     VSS     RSS PCY UID      Name
11003  0   2% R     1   2788K   1228K unk shell    top
  409  0   0% S     8   9864K   1376K  fg root     /system/bin/jankservice
  872  0   0% S   172 1885420K 199516K unk system   system_server
  207  2   0% S     1      0K      0K  fg root     ksoftirqd/2
 2904  0   0% S     6   5708K    276K unk shell    /sbin/adbd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

注:PCY显示是前台进程(fg)还是后台进程(bg)的

日志说明(来自:Android应用性能测试

User 35%, System 13%, IOW 0%, IRQ 0% // CPU占用率 
User 109 + Nice 0 + Sys 40 + Idle 156 + IOW 0 + IRQ 0 + SIRQ 1 = 306 // CPU使用情况 

PID CPU% S #THR VSS RSS PCY UID Name // 进程属性 
xx  xx% x   xx  xx  xx  xx  xx   xx 

CPU占用率: 
User    用户进程 
System  系统进程 
IOW IO等待时间 
IRQ 硬中断时间 

CPU使用情况(指一个最小时间片内所占时间,单位jiffies。或者指所占进程数): 
User    处于用户态的运行时间,不包含优先值为负进程 
Nice    优先值为负的进程所占用的CPU时间 
Sys 处于核心态的运行时间 
Idle    除IO等待时间以外的其它等待时间 
IOW IO等待时间 
IRQ 硬中断时间 
SIRQ    软中断时间 

进程属性: 
PID 进程在系统中的ID 
CPU%    当前瞬时所以使用CPU占用率 
S   进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。 
#THR    程序当前所用的线程数 
VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) 
RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存) 
PCY OOXX,不知道什么东东 
UID 运行当前进程的用户id 
Name    程序名称android.process.media 

// ps:内存占用大小有如下规律:VSS >= RSS >= PSS >= USS 
// PSS  Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存) 
// USS  Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 查看CPU信息adb shell cat /proc/cpuinfo

  • 查看CPU总使用率 :在/proc/stat 下有详细的CPU使用情况,可以使用命令adb shell cat /proc/stat

    shell@hnSCL-Q:/ $ cat proc/stat
    cpu  17082742 1298092 14400241 128401698 1072426 4115 524675 0 0 0
    • 1
    • 2
    • 1
    • 2

    CPU后面的几位数字分别是

    user 从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。 
    nice 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间 
    system 从系统启动开始累计到当前时刻,处于核心态的运行时间 
    idle 从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间 
    iowait 从系统启动开始累计到当前时刻,IO等待时间 
    irq 从系统启动开始累计到当前时刻,硬中断时间 
    softirq 从系统启动开始累计到当前时刻,软中断时间

所以totalCpuTime这个7个属性的和. 
CPU总数用率的算法是:100*((totalCpuTimeS-totalCpuTimeF) -(idelS-idelF))/ (totalCpuTimeS-totalCpuTimeF)

详细内容参考:Android获取cpu使用率,剩余内存和硬盘容量

  • 查看当前进程的CPU使用率:/proc/pid/stat下则是该pid的CPU使用情况。先找到自己的进程pid,然后再查看(例如查看com.le.bbs)
shell@hnSCL-Q:/ $ ps com.le.bbs
USER     PID   PPID  VSIZE  RSS     WCHAN    PC        NAME
u0_a170   961   374   1603376 96532 ffffffff 00000000 S com.le.bbs
shell@hnSCL-Q:/ $ cat /proc/961/stat
961 (com.le.bbs) S 374 374 0 0 -1 4194624 83875 0 1 0 2785 532 0 0 20 0 28 0 698
196143 1641857024 24133 4294967295 1 1 0 0 0 0 4612 0 38136 4294967295 0 0 17 1
0 0 0 0 0 0 0 0 0 0 0 0 0
shell@hnSCL-Q:/ $
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

其中2785 532 0 0 四个数字分别是 
utime 该任务在用户运行状态的时间 
stime 该任务在核心运行的时间 
cutime 所有已死线程在用户状态运行状态的时间 
cstime 所有已死线程在核心的运行时间

所以processCpuTime为这个四个属性的和。当前进行所占CPU的算法是:100*(processCpuTimeS-processCpuTimeF)/(totalCpuTimeS-totalCpuTimeF)

详细内容参考:Android获取cpu使用率,剩余内存和硬盘容量

内存使用

内存限制

adb shell进入手机,这此参数被纪录在/system/build.prop中,如果想直接查看可以使用adb shell getprop 
dalvik.vm.heapgrowthlimit 单个应用程序最大内存限制,超过这个值会产生OOM 
dalvik.vm.heapstartsize 应用启动后分配的初始内存 
dalvik.vm.heapsize 单个Java虚拟机最大的内存限制,超过这个值会产生OOM

以下是在dos中,在Linux中可以直接adb shell getprop|grep

C:\Users\bugeikan :-)>adb shell
shell@hnSCL-Q:/ $ cat /system/build.prop|grep heapgrowthlimit
dalvik.vm.heapgrowthlimit=192m
shell@hnSCL-Q:/ $ cat /system/build.prop|grep heapstartsize
dalvik.vm.heapstartsize=14m
shell@hnSCL-Q:/ $ cat /system/build.prop|grep heapsize
dalvik.vm.heapsize=512m
shell@hnSCL-Q:/ $
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

数据获取

  • 查看内存使用情况
shell@hnSCL-Q:/ $ dumpsys meminfo com.le.bbs
Applications Memory Usage (kB):
Uptime: 1135059305 Realtime: 7004018879

** MEMINFO in pid 3336 [com.le.bbs] **
                   Pss  Private  Private  Swapped     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap     4169     4136        0        0     5748     5427      320
  Dalvik Heap    23306    23028        0        0    34152    29625     4527
 Dalvik Other      578      576        0        0
        Stack      220      220        0        0
      Gfx dev     9600     9600        0        0
    Other dev        5        0        4        0
     .so mmap      728      188      144        0
    .apk mmap      260        0       44        0
    .ttf mmap      252        0      128        0
    .dex mmap     6444        0     6320        0
    .oat mmap     1459        0      368        0
    .art mmap     1210      948        0        0
   Other mmap       24        4        8        0
      Unknown      129      128        0        0
        TOTAL    48384    38828     7016        0    39900    35052     4847

 Objects
               Views:      133         ViewRootImpl:        1
         AppContexts:        3           Activities:        1
              Assets:        3        AssetManagers:        3
       Local Binders:        7        Proxy Binders:       12
       Parcel memory:        3         Parcel count:       12
    Death Recipients:        0      OpenSSL Sockets:        0

 SQL
         MEMORY_USED:        0
  PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0

shell@hnSCL-Q:/ $
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 查看内存使用率状况adb shell top
User 1%, System 3%, IOW 0%, IRQ 0%

User 8 + Nice 0 + Sys 21 + Idle 599 + IOW 0 + IRQ 0 + SIRQ 0 = 628

  PID PR CPU% S  #THR     VSS     RSS PCY UID      Name

27047  0   2% R     1   2800K   1240K unk shell    top

  409  0   0% S     8   9864K   1376K  fg root     /system/bin/jankservice

 9883  2   0% S     6   5812K    424K unk shell    /sbin/adbd

13754  3   0% S    39 1659460K  59560K  bg u0_a68   com.tencent.mobileqq:MSF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

注:PCY显示是前台进程(fg)还是后台进程(bg)的

内存耗用:VSS/RSS/PSS/USS 的介绍

VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) 
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存) 
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存) 
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

响应时间/加载速度

响应时间主要分为3类 
1. 首次启动 –应用首次启动所花费的时间 
2. 非首次启动 –应用非首次启动所花费的时间 
3. 应用界面切换

数据来源

  • adb shell am start -W <pkg/activity> 可参考Android_adb shell am/pm使用 
    启动某个Activity时间

  • 通过使用android提供的DisplayManager来获取所有Activity的启动时间。

C:\Users\yuhushuan>adb logcat > d:\test\logcat.log
^C
C:\Users\yuhushuan>d:
D:\>cd test
D:\test>find "Displayed" logcat.log > all.log //通过“Displayed”过滤
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

显示性能

性能指标

指标名称 指标意义 基础数据来源 采集方式 用途
FPS 系统合成帧率 SurfaceFlinger adb shell 监控
Aggregate frame stats 应用跳帧次数、幅度 FrameInfo adb shell 监控/上报
Jankiness count (估算)应用跳帧次数 FrameInfo(128帧) adb shell 定位
Max accumulated frames (估算)应用跳帧幅度 FrameInfo(128帧) adb shell 定位
SM 应用绘制轮询频率 Choreographer 多种方式 监控
Skipped frames 应用跳帧次数、幅度 Choreographer 多种 监控/定位/上报

数据来源

命令行获取 
adb shell dumpsys gfxinfo <PackageName>主要数据来源:gfxinfo(Profile data in ms) 
 
adb shell dumpsys SurfaceFlinger --latency <pkg/activity> Android性能测试之fps获取 
数据展示

数据参考

  1. FrameInfo 相关指标无法直接进行缺陷定位,但 FrameInfo 当中包含了大量详尽的绘制基础数据,对于缺陷定位也有较大帮助;
  2. 关于缺陷定位过程中连续掉帧阈值的选取,可参考维基百科中提到几个重要的帧率数值:

    • 12 fps:由于人类眼睛的特殊生理结构,如果所看画面之帧率高于每秒约10-12帧的时候,就会认为是连贯的
    • 24 fps:有声电影的拍摄及播放帧率均为每秒24帧,对一般人而言已算可接受
    • 30 fps:早期的高动态电子游戏,帧率少于每秒30帧的话就会显得不连贯,这是因为没有动态模糊使流畅度降低
    • 60 fps:在实际体验中,60帧相对于30帧有着更好的体验

    以上各数据分别对应: 0 帧、1帧、2.5帧、5~6帧。(这就是为啥选择3/6的原因)

相关阅读

[Fps Versus Frame Time](http://www.mvps.org/directx/articles/fps_versus_frame_time.htm) 
[量化和优化用户与 Android 设备之间的交互](https://software.intel.com/zh-cn/android/articles/quantify-and-optimize-the-user-interactions-with-android-devices)

测试显示性能-基于Android M 开发者预览版

电量、流量

  • 流量测试,同样需要引入几个名词 
    中等负荷:应用正常操作 
    高负荷:应用极限操作

    流量测试包括以下测试项: 
    a、应用首次启动流量提示 
    b、应用后台连续运行2小时的流量值 
    c、应用高负荷运行的流量峰值 
    d、应用中等负荷运行时的流量均值

数据来源

  • 通过PID
D:\test>adb shell ps com.le.bbs
USER     PID   PPID  VSIZE  RSS     WCHAN    PC        NAME
u0_a170   29273 374   1679132 173580 ffffffff 00000000 S com.le.bbs

D:\test>adb shell cat /proc/29273/net/dev > net.txt

D:\test>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

以下为net.txt内容:

Inter-|   Receive                                                |  Transmit

 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed

r_rmnet_data7:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

r_rmnet_data4:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

 wlan0: 36971167   30768    0    5    0     0          0         0  1731561   20200    0    0    0     0       0          0

r_rmnet_data1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

  p2p0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

  sit0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

dummy0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

rmnet0: 157348588  265691    0    0    0     0          0         0 41547752  311861    0    0    0     0       0          0

r_rmnet_data6:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

r_rmnet_data3:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

    lo: 279636994  548567    0    0    0     0          0         0 279636994  548567    0    0    0     0       0          0

rmnet_data7:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

rmnet_data6:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

rmnet_data5:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

rmnet_data4:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

rmnet_data3:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

rmnet_data2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

rmnet_data1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

rmnet_data0: 152976131  263638    0    0    0     0          0         0 41547752  311861    0    0    0     0       0          0

r_rmnet_data8:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

r_rmnet_data0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

r_rmnet_data5:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

r_rmnet_data2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

这边的wlan0代表wifi 上传下载量标识! 上传下载量单位是字节可以/1024换算成KB 
这里可以看到下载的字节数 、数据包 和 发送的字节数 、数据包

小技巧:wlan0这些值如何初始化0 很简单 你打开手机飞行模式再关掉就清0了

  • 通过UID 
    adb shell cat /proc/<pid>/status 测试pid=29273,查看结果uid=10170 
    adb shell cat /proc/net/xt_qtaguid/stats > allnet.txt 
    find "10170" allnet.txt
D:\test>adb shell cat /proc/net/xt_qtaguid/stats > allnet.txt

D:\test>find "10170" allnet.txt

---------- ALLNET.TXT
idx iface acct_tag_hex uid_tag_int cnt_set rx_bytes rx_packets tx_bytes tx_packets rx_tcp_bytes rx_tcp_packets rx_udp_bytes rx_udp_packets rx_other_bytes rx_other_packets tx_tcp_bytes tx_tcp_packets tx_udp_bytes tx_udp_packets tx_other_bytes tx_other_packets

56 wlan0 0x0 10170 0 10729 55 6033 100 10729 55 0 0 0 0 6033 100 0 0 0 0
57 wlan0 0x0 10170 1 3245372 3410 254265 3412 3245372 3410 0 0 0 0 254265 3412 0
 0 0 0
154 rmnet_data0 0x0 10170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
155 rmnet_data0 0x0 10170 1 2261 4 482 5 2261 4 0 0 0 0 482 5 0 0 0 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其中第6和8列为 rx_bytes(接收数据)和tx_bytes(传输数据)包含tcp,udp等所有网络流量传输的统计。一个uid可能对应多个 进程,所以这有两行流量是累加的就求和就行。

Crash

数据获取

将crash log上报给服务器,不再赘述 
第三方工具:友盟统计、百度统计

ANR

第三方测试工具


  • GT
  • 安测试
  • 腾讯APT

Android性能测试

  • 2017年11月01日 15:27
  • 554KB
  • 下载

[iTest]Android开发者性能测试工具

  • 2012年03月06日 16:26
  • 3.59MB
  • 下载

Android性能测试之fps获取

关键点 在testerhome看到一个好的帖子,说的是fps的获取方式,值得好好研究一下。 获取的方式是通过下面的命令获取 adb shell dumpsys SurfaceFlinger -...

android性能测试之APT测试工具

  • 2014年08月23日 08:34
  • 3.93MB
  • 下载

强烈推荐转载-Android 性能测试

关于Android的性能测试,看到一篇很好的文章,转载过来和大家分享下。    Android性能测试,跟pc性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类,对于...

Android移动端性能测试

Android 移动端的性能指标包括:cpu ,内存,流量,电量,速度/耗时等信息
  • lwcn01
  • lwcn01
  • 2016年12月17日 19:05
  • 143

Android 性能测试实践(二) 实时监控工具

前言 各位 这个工具是本人写的非常简陋体验也非常一般,大家手下留情,不要吐槽!能用上的拿去用吧!Monkey说开源,但是呢git我正在研究怎么用,回头更新源码给大家! 这个工具问题估计很多...
  • wanglha
  • wanglha
  • 2015年05月27日 09:09
  • 717

强烈推荐转载-Android 性能测试

关于Android的性能测试,看到一篇很好的文章,转载过来和大家分享下。    Android性能测试,跟pc性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类,对于应用性能测试,...

Android的app性能测试--流量

测试场景:在手机上面点击想要测试的界面或者一组场景,然后查看用了多少流量。 方法一:使用流量测试的工具:1.tcpdump抓包 2 wireshark进行分析 tcpdump介绍:tcpd...

android客户端性能测试

2.1 性能指标 a,响应时间/加载速度 b,动画帧率         图片处理器每秒刷新的帧数(FPS),可用来指示页面是否平滑的渲染。高的帧率可以得到更流畅,更逼真的动画,不过帧...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android性能测试
举报原因:
原因补充:

(最多只允许输入30个字)