Monkey测试

  1. 查看设备是否存在

命令:adb devices

  1. 获取包名

输入命令前,需要打开APP

获取APP包名命令:adb shell "dumpsys window | grep mCurrentFocus"

  1. 执行命令

语法:adb shell monkey -p (包名) -s(随机种子数) 事件类型(--pct-touch) 占比(50) 调试参数(--ignore-native-crashes) 延时时间(--throttle) 日志级别(-v-v-v) 测试次数(2000) 日志保存地址(>C:\Users\CLT\Desktop\test.txt)

例:adb shell monkey -p xxxxxxxxx --pct-touch 50 --pct-motion 30 --pct-pinchzoom 5 --pct-trackball 5 --pct-flip 5 --pct-anyevent 5 --ignore-native-crashes --throttle 300 -v -v -v 1000 >C:\Users\CLT\Desktop\test.txt

  1. 停止命令

1)ctrl+c 结束命令行跑日志

2)adb shell进入手机目录

3)top | grep “monkey” 找到monkey的编号

4)ctrl+c停止

  1. kill+该编号 杀死monkey进程

  1. 约束条件(基础参数)

1) 参数:-p

用于约束限制,用此参数指定一个或多个包(Package,即APP)。指定包之后,Monkey将只运行系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。

*指定一个包:adb shell monkey –p com.android.music 100

说明:com.android.music为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

*指定多个包:adb shell monkey –p com.android.music –p com.android.browser100 *不指定包:adb shell monkey 100

说明:monkey随机启动APP并发送100个随机事件。

2) 参数:-v

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别。

日志级别 Level 0

示例:adb shell monkey –pcom.android.music –v 100

说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息

日志级别 Level 1

示例:adb shell monkey –p com.android.music–v –v 100

说明:提供较为详细的日志,包括每个发送到Activity的事件信息

日志级别 Level 2

示例:adb shell monkey –pcom.android.music –v –v –v 100

说明:最详细的日志,包括了测试中选中/未选中的Activity信息

3) 参数:-s

用于指定伪随机生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的

*示例:

Monkey测试1:adb shell monkey –p com.android.music–s 10 100

Monkey测试2:adb shell monkey –p com.android.music –s 10 100

两次测试的效果是相同的,因为模拟的用户序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的。

4) 参数:--throttle <延迟毫秒>

用于指定用户操作(即事件)间的时延,单位是毫秒;

*示例:adb shell monkey –p com.andorid.music –throttle 3000 100

5) 日志输出路径

>C:\Users\CLT\Desktop\test.txt(桌面)

  1. 事件(事件类型)

1)--pct-touch <触摸事件>

释义:指在屏幕某处按下并抬起的操作。(该事件由一组Touch(ACTION_DOWN)和Touch(ACTION_UP)事件组成,在手机上看到实际操作类似于点击。)

例:adb shell monkey –pcom.android.music --pct-touch 10 1000

2)--pct-motion<手势事件>

释义:指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。(该事件是由一个ACTION_DOWN事件、一系列ACTION_MOVE事件和一个ACTION_UP事件组成的,在手机上看到的实际操作是一个没有拐弯的直线滑动操作。)

例:db shell monkey –p com.android.music --pct-motion 20 1000

3)--pct-pinchzoom<二指缩放事件>

释义:指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。(该事件起始是一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件,即模拟两个手指同时点下;中间是一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;结束是由一个ACTION_POINTER_UP事件和一个ACTION_UP事件组成的,即两个手指同时放开。)

4)--pct-trackball<轨迹事件>

释义:由一个或多个随机的移动组成的,有时会伴随着点击。(该事件是由一系列的Trackball(ACTION_MOVE)事件组成的,观察手机上的操作,即为一系列的曲线滑动操作。)

5)--pct-rotatio<屏幕旋转事件>

释义:屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件。它其实是模拟的Android手机的横屏和竖屏切换。(该事件由一个rotation事件组成,其中degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向。在执行过程中,可以看到手机屏幕在横竖屏之间不断地切换。)

6)--pct-nav<基本导航事件>

释义:基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。(该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上、下、左、右四个方向按键。)

7)--pct-majornav<主要导航事件>

释义:指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。(该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是中间键和菜单键。)

8)--pct-syskeys<系统按键事件>

释义:系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。(该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上面说到的几个系统按键。)

9)--pct-appswitch<启动Activity事件>

释义:启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。(该事件是由一个Switch操作组成的,从手机上看,上面的操作实际是打开了com.android.settings这个应用的一个com.android.settings.Settings的Activity界面。)

10)--pct-flip<键盘事件>

释义:键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。(如日志所示,这里主要是键盘的打开和关闭操作。)

11)--pct-anyevent<其他类型事件>

释义:其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。(该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是其他的一些系统按键,如字母按键、数字按键等。因为现在手机很少带字母按键或数字按键,所以这个事件一般使用得比较少。)

  1. 调试参数

1)--ignore-crashes

释义:当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。

例:adb shell monkey –p com.android.music --ignore-crashes 1000

测试过程中即使music程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止。

2)--dbg-no-events

释义:设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。

3)--hprof

释义:设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。这将会在data/misc中生成大文件(~5Mb),所以要小心使用它。

4)--ignore-timeouts

释义:当应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。

5)--ignore-security-exceptions

释义:当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。

6)--ignore-native-crashes

释义:忽略monkey本身异常,直至事件执行完毕。

7)--kill-process-after-error

释义:当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项时,将会通知系统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,设备只是在结束事件之后,简单地保持在最后的状态。

8)--monitor-native-crashes

释义:监视并报告Android系统中本地代码的崩溃事件。如果设置了--kill-process-after-error,系统将停止运行。

  1. 查看log日志

1)在日志中搜索关键字
  • ANR:搜索报告中的关键字“ANR”,看有无应用无响应的事件(ApplicationNot Responding)

  • Crash:搜索报告中的关键字“crash”,看有无崩溃的事件

  • Exception:搜索报告中的关键字“exception”,看有无其他异常事件。(如果出现空指针,NullPointerException,需格外重视)

  • GC:搜索报告中的关键字“GC”,查看是否有内存泄漏

2)常见的错误

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

文件已结束异常:EOFException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

操作数据库异常:SQLException

输入输出异常:IOException

违法访问错误:IllegalAccessError

内存不足错误:OutOfMemoryError

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值