adbshell monkey 1000
adbshell monkey -s 600 2000
adbshell monkey --throttle 500 3000
adbshell monkey --pct-touch10 4000
说明:以上命令行用红色标志的则是monkey测试中事件执行的次数,执行次数一般写在在命令行的结尾。
adbshell monkey -p com.android.mms -s 600--throttle 500 --pct-touch 10 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes-v -v -v 1000>/storage/sdcard0/1.log 2>&1 &
说明:以上命令行是由多个参数组成,下面详细的介绍每个参数用法
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。
用法:-p包名
adb shell monkey -p com.android.mms100
说明:com.android.mms为信息的包名,100是事件计数。所以这条命令意思:对信息模块进行100次的伪随机事件测试
adb shell monkey -p com.android.mobileqq –p com.android.mms -p com.prize.music100
说明:com.android.mobileqq为手机QQ包名;
com.android.mms为手机信息的包名;
com.prize.music 为手机音乐的包名
所以这命令行意思:对手机信息、手机QQ、音乐三个模块共进行100次的伪随机事件测试
adb shell monkey 100
说明:对手机进行随机的100次事件测试(随机测试任意app)
1.手机连接电脑,开启USB调试并且允许本台电脑对手机进行调试
2. 手机进入需要获取包名的应用界面,例如要获取音乐的包名,则进入手机音乐界面
3.在cmd窗口(即电脑端点击运行--输入cmd--确定后弹出的窗口),输入以下命令行:
adb shell dumpsys window w |findstr \/ | findstr name=
4.此时窗口显示第一行命令就是当前运行的应用: mSurface=Surface(name=com.prize.music/com.prize.music.activities.MainActivity)
用于指定反馈信息级别(即日志的详细程度,verbose简称),总共分3个级别,每增加一个-v都将增加反馈信息的详细级别。
adb shell monkey -p com.android.mms-v100
adb shell monkey -p com.android.mms-v-v100
adbshell monkey -p com.htc.Weather -v -v -v 100
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
用法:-s数值
测试1:adbshell monkey -p com.android.mms –s 500 100
测试2:adbshell monkey -p com.android.mms –s 500 100
说明:对手机信息进行seed值为10,做100次的伪随机测试事件。两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的。
用于指定用户操作(即事件)间的时延,而不是每进行一步测试的时间延迟,这里的每个事件是由多个步骤测试如点击、滑动等组成的
用法:--throttle毫秒数
示例:
adbshell monkey -p com.android.mms --throttle 3000100
说明:这里指的是对信息模块进行100次事件测试,每测完一次事件就暂停3000毫秒即3秒再执行下一次事件。
用于指定当应用程序崩溃时(Force&Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成,如果不使用此参数则遇到应用崩溃时monke测试就会停止。
示例1:
adbshell monkey -p com.android.mms --ignore-crashes1000
说明:测试过程中即使信息程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;
示例2:
adbshell monkey -p com.android.mms 1000
测试过程中,如果信息程序崩溃,Monkey将会停止运行
用于指定当应用程序发生ANR(ApplicationNoResponding)超时无响应时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成,如果不使用此参数则monkey会停止测试。
示例1:
adbshell monkey -p com.android.mms --ignore-timeouts1000
说明:测试过程中即使信息出现无响应,Monkey依然会继续发送事件直到事件数目达到1000为止;
示例2:
adbshell monkey -p com.android.mms 1000
测试过程中,如果信息出现无响应,Monkey将会停止运行
用于指定当应用程序发生许可错误(如启动一个需要某些许可时)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。用法与--ignore-timeouts、--ignore-crashes一致。
示例1:
adbshell monkey -p com.android.mms --ignore-security-exceptions1000
说明:测试过程中即使信息出现需要许可证,Monkey依然会继续发送事件直到事件数目达到1000为止;
示例2:
adbshell monkey -p com.android.mms 1000
测试过程中,如果信息出现需要许可证,Monkey将会停止运行
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。
用于指定是否监视并报告应用程序发生崩溃的本地代码。
用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)
调整触摸事件(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)的百分比为10%
adb shell monkey -p com.android.mms --pct-touch101000
说明:对信息模块进行1000次伪随机事件测试,其中触摸事件占10%。
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)
adb shell monkey -p com.android.mms --pct-motion201000
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)
adbshell monkey -p com.android.mms --pct-trackball301000
调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
adbshell monkey -p com.android.mms --pct-nav401000
调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
adbshell monkey -p com.android.mmsr --pct-majornav 50 1000
调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、StartCall、End Call及音量控制键)
adbshell monkey -p com.android.mms --pct-syskeys 601000
调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
adbshell monkey -p com.android.mms --pct-appswitch 70100
调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等
adbshell monkey -p com.android.mms --pct-anyevent 1001000
指定多个类型事件的百分比:
注意:各事件类型的百分比总数不能超过100%
Monkey的APK应用集合分为黑名单和白名单,黑名单是指系统不会执行黑名单中以内的apk;白名单则是只执行在白名单中的apk。
设置方法:
1.新建一个txt文档,如命名为blacklist.txt(注:不得带有中文),在文档内输入不用测试的应用程序包名,如要测试信息模块,则将信息包名com.android.mms输入到txt中保存。如果多个应用程序不需要测试,则输入一个应用包名后回车键,再输入另外一个应用程序的包名
2.将此txt文档放入手机存储任意文件夹下,可以复制粘贴到手机,另一种方法:在手机开启USB调试下,用以下命令行将文档复制到手机文件夹下:
adbpush F:/blacklist.txt /storage/sdcard0/
说明:将F盘下的blacklist.txt文件复制到手机存储根目录下
3.此时使用命令行:
adbshell monkey --pkg-blacklist-file/storage/sdcard0/ blacklist.txt -v -v --throttle 200 1000
说明:对手机进行monkey测试,但是backlight.txt文档内的应用程序不会被测试
白名单的设置方法和黑名单的设置方法基本一致,如命名白名单为whitelist.txt,使用命令:
adbshell monkey --pkg-whitelist-file/storage/sdcard0/ whitelist.txt -v -v --throttle 200 1000
说明:此时只对白名单内的应用程序做monkey测试
注意:1.黑白名单不可同时进行测试
2.设置了黑白名单后 -p参数就不可再使用
1.adbshell monkey 1000
2.adbshell monkey 1000>f:/2.txt
3.adbshell(输入后回车,再输入以下命令)
monkey 1000>/storage/sdcard0/2.txt
说明:1.不保存log
2.在f盘新建一个txt文档,命名为2.txt,此时将log保存在该文档上
3.在手机存储目录下新建一个txt文档,命名为2.txt,此时将log保存在该文档上
可以保存后缀名为.txt的文档,也可以保存后缀名为.log的文件,命名的文件不可带有中文,一般命名为英文、数字。
示例:
1、adb shell monkey 1000>1.txt
2、adb shell monkey 1000>a.log
说明:1、log输出到1.txt内
2、log输出到a.log内
一、log保存到电脑上。如果不设置保存路径则保存在cmd窗口显示的路径下,如C:\Users\Administrator。
1、adb shell monkey 1000>1.txt
说明:此时则在C:\Users\Administrator下生成一个名字为1的txt文档,log保存在此文档上
2、adb shell monkey 1000>f:\3.txt
说明:在F盘新建一个名称为3的txt文档,将log保存到该文档上
二、log保存到手机上
cmd窗口先输入adb shell,回车键后输入命令行
monkey1000>/storage/sdcard0/h.log
说明:此时会在手机存储目录下生成一个h.log文件,会保存运行生成的log。由于实践过程中发现保存到手机上的log有时抓不到报错信息,所以一般会在命令行后面加上2>&1&
完整如下:
adbshell(此时回车键后,在输入以下命令行)
monkey1000>/storage/sdcard0/h.log 2>&1 &
总结
目前我们测试组常写的命令行:
1、常用的参数:-p、-v(一般使用level2,即-v -v -v) 、-s(一般500、600)、--throttle(一般为500ms)、--ignore-crashes 、
--ignore-timeouts、--monitor-native-crashes。
2、跑monkey时一般保存log到手机上:
/storage/sdcard0/1.log 2>&1 &
3、上述提到的参数在命令行的输写顺序无要求,但是一般的话执行事件次数我们会放在命令行的结尾、log保存路径的前面.
引申
可能有时我们要测试某个模块要运行40W次,但是输入了4W次,此时可能会想到关机后再开机重新运行,这里有个不用关机再开机的笨方法:
1、cmd窗口输入adb shell,接着按键盘的Enter键
2、cmd窗口继续输入:ps|grep monkey
3、此时cmd窗口会显示一行:
shell 数字1 数字2数字3。。。。
我们要的就是数字1
4、这个时候键盘同时按住ctrl+c键(即平常时用的复制键)
5、输入adb shell kill 数字1,此时即可停止monkey 运行
2.对两台手机的系统进行10000次伪随机事件测试,要求两台手机跑的不一致,log保存到手机上,遇到程序崩溃或无响应时会继续测试,不停止。
联系客服