Monkey是Android SDK附带的一个工具,一个作app压力测试的工具,经过某些Linux命令,产生必定数量或必定时间内的随机模拟用户操做的事件, 如点击、按键、手势等, 以及一些系统级别的事件。一般也称随机测试或者稳定性测试。html
安装Android SDK 并配置环境变量便可。可参考:JDK与adb/android环境变量配置完整教程 android
一、本地建立白名单文件,如:whitelist.txt,将包名添加到该文件中shell
如:com.ubtechinc.cruzr.advert
com.ubtechinc.cruzr.aiui
com.ubtechinc.cruzr.behavior
com.ubtechinc.cruzr.calendar
com.ubtechinc.cruzr.clock
com.ubtechinc.cruzr.coreservices
com.ubtechinc.cruzr.cruzralbum
com.ubtechinc.cruzr.cruzrbootwizard
com.ubtechinc.cruzr.dance
com.ubtechinc.cruzr.freeguide
com.ubtechinc.cruzr.introduce
com.ubtechinc.cruzr.launcher
com.ubtechinc.cruzr.launcher2
com.ubtechinc.cruzr.map
com.ubtechinc.cruzr.music
com.ubtechinc.cruzr.navigation
com.ubtechinc.cruzr.pccontrolstub
com.ubtechinc.cruzr.power
com.ubtechinc.cruzr.servicesupport
com.ubtechinc.cruzr.systemupdate
com.ubtechinc.cruzr.syswarn
com.ubtechinc.cruzr.timer
com.ubtechinc.cruzr.user
com.ubtechinc.cruzr.video
com.ubtechinc.cruzrpowersettings
com.ubtechinc.cruzrrosexceptionstats
com.ubtechinc.settingsapp
二、电脑链接到设备,将测试应用白名单push到Android系统,如:ide
adb push d:/Monkey/whitelist.txt /mnt/sdcard/data/whitelist.txt工具
三、登陆adb:adb shell测试
四、调用Monkey命令ui
monkey --pkg-whitelist-file /mnt/sdcard/data/whitelist.txt -s 101 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 300 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 50000 |logcat -v time&>/mnt/sdcard/data/monkey_1019.logspa
参数说明:指针
--pkg-whitelist-file /mnt/sdcard/data/whitelist.txt //测试应用白名单
--s 50 //种子序列,出问题须要用相同种子值进行复现;没测出问题,下次须要从新修改种子值再跑
--pct-touch 70 //触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
--pct-motion 20 //动做事件的百分比(动做事件由屏幕上某处的一个down事件、一系列的伪随件机事和一个up事件组成)
--pct-trackball 10 //表示调整轨迹球事件的百分比(轨迹球事件由一个或多个随机移动组成,有时还伴随有点击)
--throttle 300 //毫秒,操做延时
--ignore-crashes //忽略无响应,继续执行
--ignore-timeouts //忽略Crash继续执行
--monitor-native-crashes //用于指定是否监视并报告应用程序发生崩溃的本地代码
--ignore-security-exceptions //表示当应用程序遇到任何类型的权限错误时,Monkey将中止,例如,若是它尝试启动须要某些权限的活动。若是指定此选项,则Monkey将继续向系统发送事件,直到计数完成
-v 日志等级, 经过-v参数能够指定打印信息的详细级别,多一个-v多一个级别
级别 |
表示 |
描述 |
0 |
-v |
打印最基本的事件 |
1 |
-v-v |
更全面的信息,如增长了那些Activity被选中 |
2 |
-v-v-v |
日志记录最全面的信息 |
50000 //事件数量
> monkey_1019.log //日志保存本地SD卡
--kill-process-after-error //当Monkey因为一个错误而中止时,出错的应用程序将继续处于运行状态。当设置了此选项时,将会通知系统中止发生错误的进程。注意,正常的(成功的)结束,并无中止启动的进程,设备只是在结束事件以后,简单地保持在最后的状态
--monitor-native-crashes //表示Android系统原生代码中的监视和报告崩溃。若是设置了-kill-process-after-error,系统将中止
--wait-dbg //表示中止执行中的Monkey,直到有调试器和它相链接
tips:
1) 若只跑指定的几个包,能够不设置白名单,直接执行指令(-p部分添加要执行的包):
adb shell
monkey -p com.ubtechinc.cruzr.music -p com.ubtechinc.cruzr.video -s 50 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 300 --monitor-native-crashes -v -v -v 10000&>/mnt/sdcard/data/ monkey_1019.log
2)不指定应用,跑安卓系统
adb shell
monkey -s 68 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 300 --monitor-native-crashes -v -v -v 50000 &>/sdcard/monkey/ monkey_1019.log
3)指定黑名单,不执行该应用
a. 建立黑名单文件blacklist.txt
b. push黑名单到Android系统:adb push d:/Monkey/whitelist.txt /mnt/sdcard/data/blacklist.txt
c. 执行的时候增长--pkg-whitelist-file /mnt/sdcard/data/ blacklist.txt
一、导出日志到本地:
adb pull /mnt/sdcard/data/ monkey_1019.log E:\Cruzr\Monkey\log\ monkey_1019.log
二、日志分析
1)无响应问题能够在日志中搜索 “ANR”,崩溃问题搜索 “CRASH”, 若是碰到这两类问题,抓取日志同时,须要提供traces.txt,具体存放目录可询问开发
2)内存泄露问题搜索"GC"(需进一步分析),异常问题搜索 “Exception”(若是出现空指针, NullPointerException,需重视)
(Monkey日志内容分析:
通常测试结果分析-搜索关键字:
1.程序无响应,ANR问题:在日志中搜索“ANR”
2.崩溃问题:在日志中搜索“CRASH”
3.其余问题:在日志中搜索”Exception”
4.ForceClosed 和程序异常退出问题:在日志中搜索"Fatal"
5.搜索“system error”)
一、登陆adb :adb shell
二、查看进程号:ps | grep monkey
三、kill掉w进程:kill <进程号>
操做说明:(单独一个文件夹复制过来的,仅供参考)
Cruzr Monkey测试操做说明 monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 88 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 800 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 50000 一、将测试应用白名单push到Android系统,如: adb push d:/monkey/whitelist.txt /mnt/sdcard/monkey/whitelist.txt 二、登陆adb adb shell 三、调用Monkey monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 53 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 100000 &>/mnt/sdcard/monkey/b0f1ecac466e_0806-001.log 参数说明: --pkg-whitelist-file /mnt/sdcard/data/whitelist.txt //测试应用白名单 -s 50 //种子序列(不一样的随机操做系列),出问题须要用相同种子值进行复现;没测出问题,下次须要从新修改种子值再跑 --pct-touch 70 //触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置) --pct-motion 20 //动做事件的百分比(动做事件由屏幕上某处的一个down事件、一系列的伪随件机事和一个up事件组成) --pct-motion 20 “基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成) --throttle 500 //毫秒,操做延时 -ignore-crashes //忽略无响应,继续执行 --ignore-timeouts //忽略Crash继续执行 --monitor-native-crashes 用于指定是否监视并报告应用程序发生崩溃的本地代码 -v 日志等级 500000 //事件数量 >>/mnt/sdcard/data/b0f1ecac46a3_0319-001.log //标准输出日志保存本地SD卡 &>/mnt/sdcard/data/b0f1ecac46a3_0319-001.log //标准输出和标准错误输出日志保存到本地SD卡 -v -v -v 500000 |logcat -v time &>/mnt/sdcard/hly-0414-002.log //输出日志带时间戳 四、导出日志 adb pull /mnt/sdcard/monkey/b0f1ec8c21b7_0327-001.log d:/Monkey/b0f1ec8c21b7_0327-001.log 单个应用跑Monkey adb shell monkey -p com.ubtechinc.cruzr.timer -s 50 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 500 --monitor-native-crashes -v -v -v 100000>d:/monkey/ test.log 多个应用跑Monkey adb shell monkey -p com.ubtechinc.cruzr.timer -p com.ubtechinc.cruzr.launcher -s 50 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 500 --monitor-native-crashes -v -v -v 100000>d:/monkey/test.log 待确认: monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 55 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 300 --monitor-native-crashes -v -v -v 50000 &>/mnt/sdcard/monkey/fss0324-006.log monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 55 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 300 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 30000 &>/mnt/sdcard/monkey/fss0326-003.log