monkey测试
一、获取包名
adb shell pm list packages 查看手机所有的安装包
adb shell pm list packages -3 查看手机上所有的第三方安装包
二、简单的monkey测试指令
adb shell monkey -p com.tencent.news -v -v -v 100 (此时指定软件会被打开并开始乱点乱按)指定一个包
adb shell monkey -p com.tencent.news -p com.pdfreader -p com.widgets -v 1000 指定多个包
adb shell monkey -v 1000 不指定包
- 结果如下
- Event percentages(事件百分比)
0:触摸事件百分比,即参数--pct-touch
1:滑动事件百分比,即参数--pct-motion
2:缩放事件百分比,即参数--pct-pinchzoom
3:轨迹球事件百分比,即参数--pct-trackball
4:屏幕旋转事件百分比,
5:基本导航事件百分比,即参数--pct-nav
6:主要导航事件百分比,即参数--pct-majornav
7:系统事件百分比,即参数--pct-syskeys
8:Activity启动事件百分比,即参数--pct-appswitch
9:键盘翻转事件百分比,即参数--pct-flip
10:其他事件百分比,即参数--pct-anyevent
三、-throttle 添加事件延迟
adb shell monkey -pcom.htc.Weather –throttle 3000 100
四、参数: --ignore-crashes
- 用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到测试完成
adb shellmonkey -p com.htc.Weather --ignore-crashes 1000 测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;
五、参数: --ignore-timeouts (无响应ANR)
- 用于指定当应用程序发生ANR(ApplicationNo Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,也不会停止运行
adb shell monkey -p com.htc.Weather --ignore-timeouts 1000
六、日志保存以及日志分析
adb shell monkey -p 包名 --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 12358 --throttle 1000 --ignore-crashes --ignore-timeouts -v-v 500000>D:log11.txt
脚本解释:
**--pct-touch 和 --pct-motion**
分别代表触摸事件和手势事件,是比较常见的操作,
所以通过--pct-touch 和 --pct-motion 将这两个
事件的占比调整到40%与25% (自定义)
**--pct-appswitch**
目标应用包含了多个 Activity (页面),为了能覆盖大部分的activity,
所以通过--pct-appswitch将Activity切换的事件占比调整到10% 即--pct-appswitch 10 。
**--pct-rotation**
通过--pct-rotation把横竖屏切换事件调整到5%。
**-s (s 值随便设都可以)**
Monkey会根据seed值来生成对应事件流, 同一个seed生成的事件流是完全相同的。
这里指定了seed值, 是为了测试发现问题时便于问题复现,所以seed 可以随便设,
如果要复现上次的过程,需要保证两次的值一致。
**--throttle**
来控制Monkey每个操作之间的时间间隔,单位:毫秒 1秒=1000毫秒
--ignore-crash和--ignore-timeouts (奔溃、无响应)
在执行Monkey测试时, 会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数--ignore-crash和--ignoretimeouts,
让Monkey在遇到崩溃或没有响应的时候, 能在日志中记录相关信息, 并继续执行后续的测试。
**–-ignore-security-exceptions**
忽略安全异常(比如证书许可,网路许可)
**–-ignore-native-crashes**
忽略本地代码导致的崩溃
**–-monitor-native-crashes**
监听并报告程序发生崩溃的本地代码
**-v**指定log的详细级别
Monkey的日志输出有3个级别: -v默认的是level 0, -v-v日志级别为level 1, -v-v-v日志级别为level 2。 日志的级别越高, 其详细程度也越
高。 为了方便问题的定位, 将日志级别设置为level2。
1、先查进程号:adb shell “ps | grep monkey”
2、然后 :adb shell kill 刚才查到的进程号
程序无响应的问题:在日志中搜索 “ANR”
奔溃问题搜“Crash”
搜索“fatal”
崩溃问题:在日志中搜索 “Exception” ,常见的Java异常:
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
违法访问错误:IllegalAccessError
内存不足错误:OutOfMemoryError
堆栈溢出错误:StackOverflowError
|