MONKEY测试
1、手机打开USB调试模式
2、打开设备,获取设备号:SNMBB18314511026
3、MONKEY应用场景
# monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触发屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久时间会发生异常
Monkey是命令行工具
# 弱点:monkey虽然可以根据一个指定的命令脚本发送按键 信息,但其不支持条件判断,也不支持读取待测界面的值来执行验证操作
#monkey可以用来做压力测试也开用来做自动化测试
# 什么时候用:产品稳定,没有特别多的BUG,一般会用monkey测试应用的文档性、健壮性(是否发生闪退、崩溃);整机测试
# 异常情形:
ANR: 无响应异常application not responding无响应
crash:崩溃,应用程序在使用中非正常退出;
4、应用步骤
# 启动安卓模拟器/真机
# cmd窗口进入命令行界面
# 查看设备连接情况
# 在命令行界面输入monkey命令
【如果需要制定设备:adb -s [device] shell monkey [options]】
5、monkey命令
adb shell monkey -p com.taobao.taobao -v -v -v -s 200 50
-p 用于约束限制,用次参数指定一个或多个包(package个,即APP名字),指定包之后,monkey将只允许系统启动指定的APP,如果不指定,monkey将允许系统启动设备所有的应用程序
adb shell monkey -p com.taobao.taobao 1000
com.taobao.taobao为包名,1000是事件计数(即让monkey程序模拟1000次随机用户事件)
查看包名:打开一个APP,输入:adb shell dumpsys activity | find "mFocusedActivity"
adb shell dumpsys window w |findstr \/ |findstr name=
adb shell dumpsys window -h
-s 用于指定伪随机数生产器的seed值,如果seed相同,则两次monkey测试所产生的事件序列也相同
adb shell monkey -p com.taobao.taobao -s 101 100
adb shell monkey -p com.taobao.taobao -s 101 100
用途:复现问题
工作原理:seed指定事件序列,用户触摸事件,按下home按键,然后按下物理电源键
同一seed重复事件步骤
adb shell monkey -p com.taobao.taobao -s 230 1000
说明:两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的,工作序列虽然是随机生成的,但是只要我们制定了相同的seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作是伪随机的
-v 用于指定反馈信息级别(信息级别就是日志的详细程度)总共分为三个级别
-v 日志级别 level0
说明:缺省值,仅提供启动提示,测试完成和最终结果等少量信息
-v -v 日志级别level1
说明:提供较为详细的日志,包括每个发送到activity的事件信息
-v -v -v 日志级别level2
说明:最详细的日志,包括了测试中选中、未选中的activity信息
adb shell monkey -p com.android.chrome -s 180 -v -v -v 500
看不懂日志,具体要学习monkey日志的分析
--throttle <毫秒> 用于指定用户操作(即事件)间的时间间隔,单位是毫秒
adb shell monkey -p com.android.chrome --throttle 3000 100
时间间隔3秒执行100次
--randomize-throttle 在事件之间插入随机延迟,随机延迟范围为0到throttle设置的时间,单位为毫秒
adb shell monkey -p com.android.chrome --throttle 5000 --randomize-throttle 100
时间间隔随机0到5秒执行100次
--pkg-whitelist-file 白名单,后面接txt文件
1)第一步把你设置的白名单的包写到一个txt文档里面,记得路径和文档名字都是英文
2)把这个文件拉到安卓机中去,放到/data/local/tmp下面
adb push D:\whitelist.txt /data/local/tmp
命令:adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt 1000
--pkg-blacklist-file 黑名单,后面接txt文件
命令:adb shell money --pkg-blacklist-file /data/tmp/blacklist.txt 100
输出日志文件(默认日志在窗体,但是大小有限制,不一定全):重定向
adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt 100 > D:\apk\monkey_log.txt
测试黑名单的程序
不测试黑名单中的应用程序
monkey常见参数-百分比事件
--pct-touch 调整点击事件的百分比,down-up,编号为0
--pct-motion 调整移动事件的百分比,直线滑动,编号为1
--pct-pinchzoom 调整两指缩放压缩手势的百分比,比如缩小放大手势,编号为2
--pct-rotation 调整旋转事件的百分比,横屏竖屏,编号为4
--pct-syskeys 调整系统按键的百分比,编号为7,如:home,back,start call,end call,音量控制按键
--pct-appswitch 调整app切换事件的百分比,编号为8
--pct-flip 调整键盘换出隐藏的百分比,编号为9
--pct-anyevent 其它时间的百分比,编号为10
adb shell monkey -p com.android.chrome -s 180 -v -v -v --pct-touch 100
——100%都是点击事件
adb shell monkey -p com.android.chrome -s 180 -v -v -v --pct-rotation 100
——100%都是旋转事件(魔性的玩法)
monkeyScript是一组可以被monkey识别的命令集合
monkeyRunner:通过API定义特定命令和事件控制设备;
adb shell monkey -p com.android.chrome -s 180 -v -v -v --pct-touch 50 --pct-touch 50 400
——一半点击一半旋转
停止运行的命令CTRL+C
但是手机还在执行命令,用ps查看进程号,用kill杀进程
ps | grep monkey
Python中os.system模块可执行脚本