Skip to content
This repository was archived by the owner on Feb 8, 2023. It is now read-only.
JunchengChen edited this page Feb 24, 2016 · 2 revisions

安装


安装Python

可以从官方网站下载并安装最新版本,推荐版本2.7.10。3.0以上版本还未经过测试(windows安装python时默认没有勾选pip工具,请勾选一下)

下载地址:http://www.python.org/download/

安装TVB工具

$ pip install alitvb

卸载TVB工具

$ pip uninstall alitvb

使用


性能数据监控

  • 通过-d或者--device指定连接设备的ip地址或usb连接名,使用的默认监控项为cpuinfo, meminfo, top, anr, logcat
$ tvb -d 192.168.2.100 #ip
$ tvb -d 61ced2 #usb
$ tvb --device 192.168.2.100 #ip
  • 通过-c指定监控项,多个用空格隔开,若不指定则使用默认的监控项,若监控项有memdetail,需要通过-p指定进程名
$ tvb -d 192.168.2.100 -c cpuinfo meminfo top memdetail anr logcat event
监控项 对应命令 说明
cpuinfo dumpsys cpuinfo cpuinfo.load, cpuinfo.total, cpuinfo.usage.package
meminfo dumpsys meminfo meminfo.uptime, meminfo.total, meminfo.pss.package
temp0 cat /sys/class/thermal/thermal_zone0/temp temperature0
temp1 cat /sys/class/thermal/thermal_zone1/temp temperature1
top top -n 1 top.cpu, top.cpu.package, top.pid.package, top.thr.package
memdetail dumpsys meminfo -a package
showmap showmap pid
dumpheap am dumpheap package 约1个小时收集一次
activity dumpsys acitivity
oom dumpsys activity oom
processes dumpsys activity processes
procstats dumpsys activity procstats
anr cat /data/anr/trace.txt
logcat logcat -v time
event logcat -v time -b events
bugreport bugreport 结束时收集
usagestats dumpsys usagestats 结束时收集
  • 通过-l或--log指定信息收集目录,若不指定则默认为当前目录
$ tvb -d 192.168.2.100 -l /other/path/
$ tvb -d 192.168.2.100 --log d:/log/
  • 通过-t或--time指定监控时间,单位分钟,若不指定则不会自动停止。指定时间或不指定时间都可以通过Ctrl+c手动停止。
$ tvb -d 192.168.2.100 -t 5 #5分钟后自动停止监控并生成报告
$ tvb -d 192.168.2.100 --time 5
  • 通过-i或--interval指定监控数据采样间隔,单位秒,默认为10秒。
$ tvb -d 192.168.2.100 -i 30
$ tvb -d 192.168.2.100 --interval 30
  • 通过-p或--process指定监控进程名用于生成excel图表,多个用空格隔开。
$ tvb -d 192.168.2.100 -p com.abc.xxx1
$ tvb -d 192.168.2.100 --process com.abc.xxx1 com.qwe.xxx2

Monkey性能及稳定性测试

  • 通过-m或--monkey限定应用执行monkey测试
$ tvb -d 192.168.2.100 -m com.abc.xxx1
$ tvb -d 192.168.2.100 --monkey com.abc.xxx1 com.qwe.xxx2
  • 通过-b或--blacklist指定应用黑名单执行monkey测试
$ tvb -d 192.168.2.100 -b com.abc.xxx1
$ tvb -d 192.168.2.100 --blacklist com.abc.xxx1 com.qwe.xxx2
  • 通过-s或--script指定脚本执行monkey测试
$ tvb -d 192.168.2.100 -s /somewhere/script.txt
$ tvb -d 192.168.2.100 --script /somewhere/script.txt
  • 通过-o或--throttle指定monkey事件间隔时间,单位毫秒,默认500
$ tvb -d 192.168.2.100 -m com.abc.xxx1 -o 1000
$ tvb -d 192.168.2.100 -b com.abc.xxx1 --throttle 1000
$ tvb -d 192.168.2.100 -s /somewhere/script.txt --throttle 1000
  • 通过以下参数指定monkey各类事件所占百分比,通过-s脚本方式运行monkey以下配置无效。若指定的事件类型不到100,剩余其他类型的事件均分剩余百分比。
  • 通过-pct-touch指定monkey touch事件百分比,默认0
  • 通过-pct-motion指定monkey motion事件百分比,默认0
  • 通过-pct-trackball指定monkey trackball事件百分比,默认0
  • 通过-pct-nav指定monkey "basic" navigation事件百分比,默认55
  • 通过-pct-majornav指定monkey "major" navigation事件百分比,默认15
  • 通过-pct-syskeys指定monkey "system" key事件百分比,默认15
  • 通过-pct-appswitch指定monkey activity launches事件百分比,默认9
  • 通过-pct-anyevent指定monkey other types事件百分比,默认1
$ tvb -d 192.168.2.100 -m com.abc.xxx1 --pct-nav 100
$ tvb -d 192.168.2.100 -m com.abc.xxx1 --pct-touch 0
$ tvb -d 192.168.2.100 -m com.abc.xxx1 --pct-nav 80 -pct-majornav 19 -pct-appswitch 1

Monkey脚本编写说明

例子:通过脚本测试某应用,循环启动该应用后右移两下再左移两下退出,脚本如下:

LaunchActivity(com.abc.xxx1, com.abc.xxx1.HomeActivity)
UserWait(500)
DispatchPress(KEYCODE_DPAD_RIGHT)
DispatchPress(KEYCODE_DPAD_RIGHT)
DispatchPress(KEYCODE_DPAD_LEFT)
DispatchPress(KEYCODE_DPAD_LEFT)
DispatchPress(KEYCODE_BACK)

脚本常用指令说明

LaunchActivity(String pkg_name, String cl_name) #启动应用,指定应用包名和入口activity
UserWait(long sleeptime) #指定额外延时,单位毫秒
DispatchPress(int keyCode) #短按键操作,keycode见下表
LongPress(int keyCode) #长按操作,keycode见下表

常用按键KEYCODE列表: http://developer.android.com/reference/android/view/KeyEvent.html

#Key events that move around the UI.
NAV_KEYS = ['KEYCODE_DPAD_UP',
            'KEYCODE_DPAD_DOWN',
            'KEYCODE_DPAD_LEFT',
            'KEYCODE_DPAD_RIGHT',
            ]

#Key events that perform major navigation options (so shouldn't be sent as much).
MAJOR_NAV_KEYS = ['KEYCODE_MENU',
                  'KEYCODE_DPAD_CENTER',
                  ]

#Key events that perform system operations.
SYS_KEYS = ['KEYCODE_HOME',
            'KEYCODE_BACK',
            'KEYCODE_VOLUME_UP',
            'KEYCODE_VOLUME_DOWN',
            'KEYCODE_MUTE',
            ]

生成报表

  • 性能数据监控停止以后会自动生成报表,通过-p指定的进程名可额外生成有关该进程相关的图表
  • 若出现异常中断,可通过-r或--report指定收集日志的目录重新生成报表
$ tvb -r /log/dir/datesubdir/
$ tvb -r D:/log/2015.09.18-15.39.22 -p com.abc.xxx1 
$ tvb -r D:/log/2015.09.18-15.39.22 -p com.abc.xxx1 com.qwe.xxx2

报表和日志分析

  • 报表分析
  • meminfo.uptime分析系统是否发生过重启【线条是否连续递增,若从0重新开始说明重启,该点即为重启时间】
  • top.pid.package分析应用是否有crash【线条是否连续水平,出现多条线说明crash,不连续点为crash时间】
  • top.thr.package分析应用是否存在线程泄露【看趋势是否持续递增】
  • meminfo.pss.package分析内存使用情况【1.看趋势是否持续递增;2.看看内存使用大小是否合适,单位MB】
  • cpu.load分析cpu负载【曲线值应该小于CPU核数,若不知CPU核数可查看@cpuinfo.core】
  • cpu.usage.package分析cpu占用【普通应用CPU使用率不应该过高】
  • 日志分析
  • anr trace日志【分析应用无响应问题】
  • logcat error日志【1.根据出问题时间点分析;2.根据关键字搜索,如exception、fatal、应用名、error、fail】
  • memdetail日志【根据问题时间和native/dalvik内存使用详情分析内存问题】
  • mali日志【根据问题时间和GPU内存使用详情分析内存问题】
  • activity日志【根据问题时间和activity任务栈分析问题】
  • logcatevent日志【根据问题时间和events信息分析问题】
  • monkey日志
  • dropbox、admin日志