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 进程号