1、模拟用户随机事件操作,检测APP的稳定性
A、连接移动设备,查看连接的设备情况
adb devices
2、查看monkey命令的帮助说明
adb shell monkey -help
3、参数介绍
-p,用于指定一个或多个包,如不指定将启动设备所有APP包
查看手机中安装有那些包
adb shell pm list packages -3
指定一个包,并模拟100次用户随机事件
adb shell monkey -p com.prestamo.credito.dinero.efectivo.facil.rapido.noro 10
-v,用于反馈日志信息级别,三个等级
-v ,仅仅提供启动提示、测试完成和最终结果等信息
adb shell monkey -p com.prestamo.credito.dinero.efectivo.facil.rapido.noro -v 10
-v -v,提供较详细日志,包括每个发送到Activity的事件信息
adb shell monkey -p com.prestamo.credito.dinero.efectivo.facil.rapido.noro -v -v 10
-v -v -v,最详细的日志,包括测试选中或未选中的Activity信息
adb shell monkey -p com.prestamo.credito.dinero.efectivo.facil.rapido.noro -v -v -v 10
将日志保存到电脑的某个目录下,可用以下命令
adb shell monkey -p com.prestamo.credito.dinero.efectivo.facil.rapido.noro -v -v -v 10 >d:\log.txt
4、日志分析
monkey测试出现错误后,一般的查错步骤如下:
(1)找到是monkey里面的哪个地方出错。
(2)查看monkey里面出错前的一些事件动作,并手动执行该动作。
(3)若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样。
一般的测试结果分析如下。
(1)ANR问题:在日志中搜索ANR。
(2)崩溃问题:在日志中搜索Exception。
正常情况,如果monkey测试顺利执行完成,在log的最后会打印出当前执行事件的次数和
所花费的时间;∥monkey finished代表执行完成。
异常情况。monkey测试出现错误后,看monkey的日志(注意第一个swith以及异常信
息等)。
(1)程序无响应的问题:在日志中搜索ANR。
(2)崩溃问题:在日志中搜索Exception(如果出现空指针NullPointerException)肯定是
有BUG。
monkey执行中断,在log最后也能看到当前执行次数。
5、程序异常的操作参数
参数:-ignore-crashes
参数:--ignore-crashes表示忽略程序异常崩溃。设置此选项后,monkey会执行完所有的事
件,不会因异常崩溃而停止。
adb shell monkey-p com.tencent.mm -v --ignore-crashes 500
参数:-ignore-.timeouts
参数:-ignore--timeouts表示忽略程序超时。设置此选项后,monkey会执行完所有的事件,
不会因超时而停止。
adb shell monkey-p com.tencent.mm -v--ignore-timeouts 500
参数:-ignore-security-.exceptions
参数:-ignore-security-exceptions表示忽略一些许可错误,如证书许可、网络许可。设置
此选项后,monkey会执行完所有的事件,不会因许可错误而停止。
adb shell monkey-p com.tencent.mm -v --ignore-security-exceptions 500
6、事件选项
如果需要指定触屏事件的百分比,命令如下:
adb shell monkey --pct-touch 50 -p com.tencent.mm 100
上述命令表示对微信设定触屏的事件占比率为50%,其他事件百分比的设置方式相同,只
需要直接在参数后添加对应的百分比数值即可。
7.指定其他参数
参数:-throttle
参数:-throttle设定两个事件之间的一个固定延迟,可以减缓monkey的执行速度。如果不
指定,monkey将不会被延迟,事件将尽可能快地生成和发送消息,单位:ms.
adb shell monkey --throttle 3000 -p com.tencent.mm 100
向微信发送100次随机事件,每次事件间隔为3s,这样就更可以模拟用户的真实操作行为
了
参数:-s
参数:$指定产生随机事件种子值,相同的种子值产生相同的事件序列。
monkey测试1:adb shel1 monkey-pcom.tencent.mm -s 200 100
monkey测试2:adb shel1 monkey-pcom,tencent.mm -s 200 100
上述示例中monkey测试1与monkey测试2执行的事件序列是相同的,如果不指定seed,
则在日志中会随机生成一个seed值
综合所有参数
adb shell monkey -p com.tencent.mm-p com.tencent.wstt.gt-throttle 3000
--pct-touch 20--pct-motion 20--pct-appswitch 20-v-v-v-s 1000--ignore-crashes
--ignore-timeouts --ignore-security-exceptions 1000>d:\android package\monkey.log
上面命令语句综合了前面所有的参数,表示对微信、GT两个APP实现1000个事件操作,
其中每个事件之间的间隔事件为3s,并且指定三种事件,分别占比20%,如果运行过程中出现
异常、超时等全部忽略,最后将运行的详细日志信息写入本地文件monkey.log中。