adb monkey

常用adb命令及monkey命令详解

测试

基于这篇文章,给大家再深入一下。

一、常用adb命令
1、adb devices:查看已连接的设备
2、adb version:查看adb的版本***
3、adb -s <设备名字>:指定某设备做什么(设备名字用1的方法可以查看)
4、adb install <安装包.apk>:安装应用(写清楚apk的完整路径)adb -s <设备名字> install <安装包.apk>:指定设备安装应用
5、adb shell:通过远程shell命令来控制模拟器/设备
6、exit:退出shell远程连接,回到原路径。(Ctrl+d,退出shell,回到默认路径)
7、adb pull <设备端路径> <pc端路径>:将指定的文件从设备/模拟器上拷贝到pc端(后面的pc端路径可以不指定,默认存储在当前路径下)。例: adb pull /sdcard/log.txt c:/monkey
8、adb push <pc端路径> <设备端路径>:将指定的文件从pc端拷贝到设备/模拟器上
9、adb shell pm list packages:列出电脑端所有apk的包名
10、adb logcat:查看pc端的日志输出。adb shell界面只需输入logcat,查看设备端日志输出(退出Ctrl+c)
二、Monkey命令扩展
1、最简单的monkey执行语句:(adb shell)monkey –p com.jianjiexuan.na –v 500 (对com.jianjiexuan.na 这个程序包单独进行一次500次的monkey测试)
名词解释:-p:用于约束限制,用此参数指定一个或多个包。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。指定多个包:monkey -p –p -p -v 500-v:用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
日志级别 Level 0
例 monkey –p com.jianjiexuan.na –v 500说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息
日志级别 Level 1
例 monkey –p com.jianjiexuan.na –v -v 500说明:提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别 Level 2
例 monkey –p com.jianjiexuan.na –v -v -v 500
说明:最详细的日志,包括了测试中选中/未选中的Activity信息
2、延时及固定序列(adb shell)monkey -s 100 -p com.jianjiexuan.na – -throttle 1000 -v 500 (每次执行一次有效的事件后休眠1000毫秒)(adb shell)monkey -p com.jianjiexuan.na – -throttle 1000 – -randomize-throttle -v 500 (每次执行一次有效事件后随机延时0-200毫秒)名词解释:-s:用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。出现问题下次可以重复同样的系列进行排错。–throttle:固定延时,用于指定用户操作(即事件)间的时延,单位是毫秒;–randomize-throttle:随机延时,用于指定用户操作(即事件)间的时延,单位是毫秒。
3、保存monkey运行结果1)保存在PC中adb shell monkey –p com.jianjiexuan.na –v 500 > d:\monkey\log.txt 2)保存在手机中手机端进入shell模式:adb shell monkey –p com.jianjiexuan.na –v 500 > /mnt/sdcard/monkey/log.txt
4、monkey事件百分比的调整(adb shell)monkey -p com.jianjiexuan.na -v – -pct-anyevent 100 500指定多个类型事件的百分比:monkey -p com.jianjiexuan.na -v –pct-anyevent 50 –pct-appswitch 20 500
名词解释:–pct-****:
adb monkey

设置某个事件的百分比。后面接数字(0-100),100即100%的概率执行该事件注意:各事件类型的百分比总数不能超过100%。如果不进行设置则显示默认百分比。
5、正在运行的monkey如何终止如在命令窗口端直接打印结果,想要停止monkey的运行,那么就再打开一个cmd命令窗口查看monkey的进程:adb shell ps | find “monkey”kill掉该进程就可以adb shell kill + 进程编号 ,即adb shell kill 5182 关于其他的细化的。


二、monkey常用命令参数说明

基本参数 说明
-p <allowed-package-name> 指定一个或多个包
-s <seed> 指定一个随机数生成器的seed值
--throttle <milliseconds> 指定事件之间的固定延迟(ms)
-v 指定反馈信息级别(信息级别就是日志的详细程度)
-c <main-category> 指定一个或多个类别名
-f <scriptfile> 运行指定的monkey脚本
事件参数 说明
--pct-touch <percent> 指定触摸事件百分比
--pct-motion <percent> 指定动作事件百分比
--pct-trackball <percent> 指定轨迹事件百分比
--pct-syskeys <percent> 指定系统按键事件百分比
--pct-nav <percent> 指定基本导航事件百分比
--pct-majornav <percent> 指定主要导航事件百分比
--pct-appswitch <percent> 指定应用启动事件百分比
--pct-flip <percent> 指定flip(弹)事件的百分比
--pct-anyevent <percent> 指定其他类型事件百分比
--pct-pinchzoom <percent> 指定缩放(捏)事件百分比
--pct-permission <percent> 指定
调试参数 说明
--ignore-crashes 忽略因崩溃或异常引起的停止运行
--ignore-timeouts 忽略应用发生超时错误(ANR)
--ignore-security-exceptions 忽略应用发生任何权限错误
--monitor-native-crashes 监视并报告monkey运行时native code的崩溃事件
--ignore-native-crashes 忽略因native code的崩溃事件
--kill-process-after-error 在应用出错后通知系统杀死发生错误的进程
--hprof 在事件序列前后立即生成profilfing report
 
--dbg-no-events 监视应用程序所调用的包之间的转换
--wait-dbg 暂停执行中的monkey,直到有调试器与它连接

三、对小米商城APP跑monkey及其说明

adb shell monkey -p com.xiaomi.sc -v -v -v --throttle 200 -s 1 --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 30 100000 2>/Users/admin/Desktop/error.txt 1>/Users/admin/Desktop/info.txt

adb monkey

对上面命令的描述.png


adb shell monkey -p com.xiaomi.sc -s 2333 --pct-touch 70 --pct-motion 30 --ignore-crashes --ignore-timeouts --monitor-native-crashes --throttle 200 -v -v 500000 >/Users/admin/Desktop/monkey0903.txt

 

--pct-touch 70 --pct-motion 30这两个命令是后面增加的,一个代表点击,一个代表滑动,两个加起来是100,代表不会进行其他事件操作,如轨迹事件,导航事件等等,指定这两种操作后,就极大的降低了monkey点到被测app外面的概率(触发到音量键等系统按键)

在执行向下滑动的命令时,打开了通知栏,然后又开始了瞎点的操作。这时可在执行monkey命令之前,先执行禁用通知栏的命令

adb shell settings put global policy_control immersive.full=*
解禁命令:adb shell settings put global policy_control null