(一)Monkey使用场景及常用命令

1.monkey应用场景

> monkey测试是Android平台自动化测试的一种手段,通过monkey程序模拟用户触摸屏幕、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常

======================================

异常:

崩溃:XX应用停止运行

无响应:

闪退:程序运行时,毫无征兆返回到了桌面

======================================

>monkey 是命令行工具

>弱点:monkey虽然可以根据一个指定的命令脚本发送按键消息,但不支持条件判断,也不支持读取待测界面的值来执行验证操作(即不支持断言、执行的时候傻瓜式依次逐行执行)

>monkey用来做什么?

  可以用来做压力测试也可以做自动化测试

>monkey什么时候用?

  产品稳定的时候,没有特别多的bug,一般会用monkey去测应用的稳定性、健壮性

>monkey怎么用?

  Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上。

  每台android手机里都有Monkey工具,但是我们是看不到的,因为,Monkey不是一个可视化的工具

  借助ADB才能与Monkey进行通讯

2.monkey命令格式

>开启安卓模拟器/真机

>进入命令行界面

>查看设备连接情况 adb devices

>在命令行界面输入monkey命令

如果monkey需要指定设备,基本语法如下:

adb  -s  [device]  shell  monkey  [options]

常用:

adb shell monkey -p  包名  -v  -v  -v -s 200 1000

3.monkey常见参数

3.1  -p

>用于约束限制,用此参数指定一个或多个包名。指定包名之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中所有的app。

>命令:

adb shell monkey -p 包名 1000

其中,1000是事件计数(即让monkey模拟1000次随机用户事件)

包名:

方式一:adb shell dumpsys activity| find "mFocusedActivity"

方式二:adb shell dumpsys window | findstr mCurrentFocus 获取当前应用的包名

3.2 -s

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

>命令:

monkey测试1:adb shell monkey -p 包名 -s  101   1000

monkey测试2:adb shell monkey -p 包名 -s  101   1000

>说明:

两次测试的效果是相同的,因为模拟的用户操作序列是一样的。操作序列虽然是随机生成的,但是只要指定了相同的seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以说这个操作序列是伪随机的。

(操作序列:每次操作按照一定的先后顺序所组成的一系列操作,即一个序列),比如:

同时,该图代表3次事件次数

>目的:

通过seed值可以复现bug

3.3 -v

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

-v  日志级别 level 0

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

-v -v 日志级别 level 1

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

-v -v -v 日志级别 level 2

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

>命令:

adb shell monkey - p 包名 -s  180  -v -v -v 1000  

1000是事件计数(即让monkey模拟1000次随机用户事件)

3.4 --throttle <毫秒>

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

>命令:

adb shell monkey -p 包名  --throttle 3000  100

>说明:执行一百次monkey随机事件,每次事件之间的延迟是3s

3.5 --randomize-throttle

在事件之间插入随机延迟,随机延迟范围为0到throttle设置的时间,单位为毫秒

>命令:

adb shell monkey -p 包名 --throttle 5000 --randomize-throttle 100

>说明:执行一百次monkey随机事件,每次事件的间隔在0-5000毫秒之间不固定

3.6 --pkg-whitelist-file  白名单,后面接txt文件

1)第一步把你设置的白名单的包名写到一个txt文档里面,记得路径和文档名字都是英文!如,D:whitelist.txt

2)把这个文件推送到我们的安卓机中去,放到/data/local/tmp下面

>命令:

adb  push    D:whitelist.txt     /data/local/tmp  

 adb  shell  monkey   --pkg-whitelist-file   /data/local/tmp/whitelist.txt  100

3)可以在上面adb 命令后重定向输出查看monkey运行日志,可以用来辅助logcat日志定位问题

3.7 --pkg-blacklist-file  黑名单,后面接txt文件

>操作步骤参考白名单,效果与之相反

>命令:

 adb  shell  monkey   --pkg-blacklist-file   /data/local/tmp/blacklist.txt  100

3.8 百分比事件

>使用:

adb shell monkey  -p 包名  -s  210  -v -v -v  --pct-touch 100  400 //百分百为点击事件

adb shell monkey -p 包名 -s 210 -v -v -v  --pct-touch 50  --pct-rotation 50  400   //一半点击一半旋转

>使monkey进程停止:

进入adb  shell 

ps 查看进程,

找到monkey进程:

杀掉进程:

kill  进程号 

原文地址:https://www.cnblogs.com/kxx-1/p/13172568.html