monkey简略:
1 2
| monkey是android下自动化测试比较重要的的一个工具,该工具可以运行在host端或者设备(模拟器或真实设备)。 它会向系统发送随机事件流(即随机模拟用户各种操作:点击、滑动、AP切换等),对单个程序或者整个系统进行压力测试。
|
monkey脚本:
1 2 3 4 5 6
| 脚本优势:简单、快捷、不需要借助任何工具,可以做简单的性能测试 脚本缺点:只能简单实现坐标、按键等基本操作(根据像素点来进行操作) #头文件、控制monkey发送消息的参数 type = raw events count = 10 speed = 1.0
|
Api |
说明 |
LaunchActivity(pkg_name,activity) |
启动应用的Activity |
Tap(x,y,tapDuration) |
模拟单击事件.tapDuration为点击的持续时间,此参数可冒略 |
RotateScreen(rotationDegree,persist) |
旋转屏幕,rotationDegree为旋转角度,1代表90度:persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变 |
DispatchPress(keyName) |
按键 |
DispatchFlip(true/false) |
打开或者关闭软键盘 |
RunCmd(cmd) |
在设备上运行 shell 命令 |
PressAndHold(x,y,pressDuration) |
模拟长按事件 |
DispatchString(input) |
输入字符串 |
DeviceWakeUp() |
唤醒屏幕 |
UserWait(sleepTime) |
让脚本中断一段时间 |
adb获取系统已安装的apk文件:
1 2
| 1.第三方app:adb shell /data/app/目录下apk pull出来 2.系统app:adb shell /system/app/目录下apk pull出来
|
monkey脚本编写步骤:
1 2 3 4 5 6 7 8 9 10
| 1:确定步骤,如下: 获取包名和activityname 通过SDK自带的aapt工具 一步一步的在手机上操作,并获取像素点 利用工具(SDK自带uiautomatorviewbat或者开发者选项中的坐标位置 要仔细的检查下,是否脚本上的每一步都跟你的手动操作都对应 检查脚本,跑一下脚本。 2:运行脚本 将文件放到手机中:adb push 本地monkey脚本文件 /data/local/tmp 运行文件:adb shell monkey -f 手机文件地址/文件名称 数量
|
脚本示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| //myMonkey.txt文件内容: #头文件、控制monkey发送消息的参数 type = raw events count = 10 speed=1.0 #以下monkey命令 start data >> #打开测试应用程序 LaunchActivity(com.android.browser,com,android.browser.BrowserActivity) #让浏览器将页面加载出来,所以我们的脚本需要等待一段时间 UserWait(3000) #点击浏览器网址 Tap(367,109) #输入www.ningmengban.com DispatchString(www.ningmengban.com) #输入enter键 DispatchPress(KEYCODE ENTER) #输入Home键返回到桌面 DispatchPress(KEYCODE HOME)
|
获取手机当前显示的界面的包名:adb shell dumpsys activity | find “mFocusedActivity”
命令帮助:adb shell monkey –help
monke常见参数:
-p:
1 2 3 4 5
| 用于约束限制,用此参数指定一个或多个包( Package,即App名字)。指定指定包之后Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP 命令 : adb shell monkey -p com.lemon.lemonban 1000 说明 : com.emon.lemonban 为包名,1000是事件计数(即让Monkey程序模拟1000次随机用户事件)
|
-s:
1 2 3 4 5 6
| 用于指定伪随机数生反工seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同 命令 : Monkey测试1 : adb shell monkey -p com.lemon.lemonban -s 101 100 提前指定 Monkey测试2 : adb shell monkey -p com.lemon.lemonban -s 101 100 说明 :两次测试的效果是相同的,因为模拟的用户操作序列( 每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。 操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的,
|
-v
1 2 3 4 5 6 7 8
| 总共分3个级别日志级别(正常使用3个-v) -v 用于指定反馈信息级别( 信息级别就是日志的详细程度) Level0 说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息 -v -v 日志级别 Level 1 说明 :提供较为详细的日志,包括每个发送到Activity的事件信息 -v -v -v日志级别 Level 2说明:最详细的日志,包括了测试中选中/未选中的Activity信息 命令 : adb shell monkey -p com.lemon.lemonban -v 100 说明: com.emon.lemonban 为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)
|
–throttle
1 2
| 用于指定用户操作( 即事件)间的时延,单位是毫秒 命令 : adb shell monkey -p com.lemon.lemonban --throttle 3000 100
|
–randomize-throttle
1 2 3
| 在事件之间插入随机延迟,随机延迟范围为0到throttle设置的时间,单位为毫秒 命令 : adb shell monkey -p com.lemon.lemonban --throttle 5000 --randomize-throttle 说明: 执行一百次monkey随机事件,每次事件的间隔在0到5000毫秒之间不固定
|
–pkg-whitelist-file
1 2 3 4 5
| 白名单,后面接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
|
–pkg-blacklist-file
1 2
| 黑名单,后面接txt文件 命令 : adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt 100
|
日志输出到指定路径
1 2
| > 后面加输出的路径即可; 命令:adb shell monkey -p com.lemon.lemonban 1000 > D:/monkey_log.txt
|
monkey其他常见参数
名称 |
说明 |
–pct-touch |
调整点击事件的百分比,down-up,编号为0(100为百分之百) |
-pct-motion |
调整移动事件的百分比,直线滑动,编号为1 |
-pct-pinchzoom |
调整两指缩放压缩手势的百分比,比如放大缩小手势操作,编号为2 |
-pct-trackball |
调整轨迹球时间百分比,不常用,编号为3 现在手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数 |
-pct-rotation |
调整旋转事件的百分比,横屏竖屏,编号为4 |
-pct-nav |
调整导航事件的百分比,编号为5,包括上下左右,如方向输入设备的输入 )老手机的上下左右键,智能机上没有 |
-pct-majornav |
调整主要导航事件的百分比,编号为6,例如中间键、回退键、菜单键 |
-pct-syskeys |
调整”系统”按键事件的百分比,编号为7,这些按钮一般专供系统使用,如Home, Back,Start Call, End Call,音量控制 |
-pct-appswitch |
调整app切换事件的百分比,编号为8 |
-pct-flip |
调整键盘唤出隐藏的百分比,编号为9 |
-pct-anyevent |
跳转除上面事件外,其它事件的百分比,编号为10,如按键、其他在设备上不常用的按钮等 |