monkey的基本语法都是:

adb  shell  monkey  -p  包名  执行的数字

monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中,他向系统发送伪随机的用户时间流(如:按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

monkey测试是一种为了测试软件的稳定性、健壮性的快速有效方法。

首先要测试一款APP,需要先知道APP对应的包名是什么,除了可以向开发人家直接获取,还可以自己获取。

在安装SDK的目录下面找到build-tools,具体路径E:\android-sdk-windows\build-tools\28.0.3,在输入框中输入cmd进入DOS命令

夜神模拟器:

第一种,获取自己已经有apk的包名:

aapt dump badging +apk存放路径

aapt dump badging  E:\soft\longteng\appium\apk\touchaction.apk

第二种:查看手机上所有APP的包名

输入adb shell,进入命令后进入目录data/data

1)adb shell

2)进入手机的  cd data/data

3) ls (需要root)

查看手机或者第三方应用的包名:

adb  shell  pm  list packages -3

真机:

打开开发者选项(小米手机在MUIU中连续点击)-之后在手机“设置”-“更多设置”中有一个“开发者选项”打开调试的功能

然后win+r,输入adb devices

如下情况表示连接成功

获得包名以后就可以操作了:

查看所有参数:

adb shell monkey

1.  -p  : 指定包名

1) 指定包名对应进行的点击数操作

adb  shell monkey -p 包名 次数

2)指定多个包

adb shell monkey -p 包名1  -p 包名2  次数

2. -v:打印日志

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

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

adb  shell monkey -p 包名 -v 500

2)  level1:提供较为详细的日志,包括每个发送到activity的信息

adb shell monkey -p 包名 -v  -v  500

3)  level2:最详细的日志,包括测试中选中/未选中的activity信息

adb shell monkey -p 包名 -v  -v  -v  500

3.   -s 随机数

打印日志的时候包含了seed参数:

这个参数是发送请求的时候自动生成的伪随机数,用于产生相同序列的执行流,比如有bug了,开发可以去模拟当时一模一样的场景:v

我们可以自己指定相应的随机数seed:

adb shell monkey -s 12345 -p com.taobao.taobao -v 500

4.   throttle  : 毫秒

用于指定用户操作即事件间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息300毫秒

指定500次的点击事件,每次之间间隔300毫秒:

adb shell monkey -p com.taobao.taobao --throttle 300 500

5.点击次数的设置

500  这里指点击的次数,根据经验,单个应用程序设置在100000次就ok;如果是整机,设置在500000次

6、--ignore-crashes

应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成

adb shell monkey -s 12345 -p com.taobao.taobao -v --ignore-crashes 500

7、--ignore-timeouts

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

adb shell monkey -s 12345 -p com.taobao.taobao -v --ignore-timeouts 500

8. --ignore-security-exception

当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

adb shell monkey -s 12345 -p com.taobao.taobao -v --ignore-timeouts --ignore-security-exception 500

9.--kill-process-after-error

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

10、--monitor-native-crashes

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

11.  --wait-dbg

停止执行中的Monkey,直到有调试器和它相连接。

12.  -c

如果你指定一个或多个类别,Monkey将只允许系统启动这些指定类别中列出的Activity。如果你不指定任何类别,Monkey将选择谢列类  别中列出的Activity,Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY。指定多个类别使用多个-c,每个-c指定一个类别。

13. --dbg-no-events

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

14.  --hprof

设置此选项,将在Monkey生成事件序列前后生成profilling报告。在data/misc路径下生成大文件(~5Mb),所以要小心使用。

monkey事件百分比:event percentages

由上图可以看出

0:触摸事件百分比,即参数--pct-touch

1:滑动事件百分比,即参数--pct-motion

2:缩放事件百分比,即参数--pct-pinchzoom

3:轨迹球事件百分比,即参数--pct-trackball

4:屏幕旋转事件百分比,即参数 --pct-rotation

5:基本导航事件百分比,即参数--pct-nav

6:主要导航事件百分比,即参数--pct-majornav

7:系统事件百分比,即参数--pct-syskeys

8:Activity启动事件百分比,即参数--pct-appswitch

9:键盘翻转事件百分比,即参数--pct-flip

10:其他事件百分比,即参数--pct-anyevent

例如: 设置触摸事件需要占百分之60,(例如游戏的APP,触摸就会显得比较重要)

0--10这11中事件的总共百分比=100%,不能超过100%.

设置序列号为12345,包名是com.taobao.taobao,打印简单日志,点击事件500次,触摸事件百分比占60%:

adb shell monkey -s 12345  -p  com.taobao.taobao -v --pct-touch 60 500

monkey日志的导出:

指定电脑某个位置:

adb shell monkey -p com.taobao.taobao -v  500 > e:\test.txt

log分析:

日志最开始都会显示Monkey执行的seed值、执行次数、测试的包名

查看日志里是否出现了ANR或者异常

ANR:日志里搜索“ANR ”(此处有空格)

崩溃问题:日志里搜索“Exception”,快速定位到关键事件信息,然后查看Monkey里面出错前的一些时间动作,手动执行该动作,找到重现步骤,给你开发

成功日志和报错日志:

成功日志会显示monkey finish ,events injected :100   # 执行完成,点击事件100次

错误的话会有闪退或者卡死,明显的error字眼:

会有CRASH字眼,后面跟上包名,闪退

ANR异常,无响应的:原因比如代码设计不合理,网络搜索事件太长

需要提供给开发的内容:

1) 被测试手机的详细信息;

2)monkey测试日志: 在cmd中输入命令后的内容

3)手机运行截图;

4)monkey运行时手机日志:可以定位到某一位置 adb logcat  >d:\test

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐