赞
踩
备注:未经博主允许禁止转载
个人笔记(整理不易,有帮助点个赞)
笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客
目录
Monkey测试是Android平台自动化测试的一种手段, 通过Monkey程序模拟用户触摸屏幕、滑动,Trackball(轨迹球)、按键等操作来对设备上的程序进行压力测试, 检测程序多久的时间会发生异常(奔溃,闪退,无响应(性能方面的bug)等)。
monkey是命令行工具,是安卓系统自带的一个脚本,通过adb工具在PC端调用
缺点:Monkey虽然可以根据一个指定的命令脚本发送按键消息, 但其不支持条件判断, 也不支持读取待测界面的值来执行验证操作。
作用:monkey可以用来做随机测试,压力测试、自动化测试、稳定性测试,冒烟测试。
monkey什么时候用?等产品稳定了, 没有特别多的bug时候, 一般会用monkey去测试待测应用的稳定性、健壮性(是否会发生闪退、崩溃);整机测试。
monkey是压测手机app的稳定性,不是对服务器
附加:
(1)
可以找到monkey脚本在哪里
查看调用的jar包
从上面看出:monkey是装载电脑上面的,它本身就存在于每一个安卓系统中,它有monkey这样一个脚本,去调用这个jar包(理解可能还不够深入)
(2)日志和执行事件数放最后,要不可能会报错
(1)-p
用于约束限制, 用此参数指定一个或多个包(Package, 即App名字) 。
指定指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包, Monkey将允许系统启动设备中的所有APP
- adb shell monkey -p com.eg.android.AlipayGphoneRC 1000
- #抖音(测试)
- adb shell monkey -p com.ss.android.ugc.aweme 1000
-
-
- #1000是事件计数(即让Monkey程序模拟1000次随机用户事件)
- #指定2个: -p A包 -p B包
注入事件1000次,还有一些日志
分析日志参考:https://www.cnblogs.com/fighter007/p/8439309.html
(2)-s
用于指定伪随机数生成器的seed值, 如果seed相同, 则两次Monkey测试所产生的事件序列也相同的
命令:
Monkey测试1:adb shell monkey -p 包名 -s 101 100 提前指定
Monkey测试2:adb shell monkey -p 包名 -s 101 100
说明:
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作, 即一个序列) 是一样的。
操作序列虽然是随机生成的, 但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;
(3)-v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别
-v:日志级别Level 0
说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息
-v -v:日志级别Level 1
说明:提供较为详细的日志, 包括每个发送到Activity的事件信息
-v -v -v:日志级别Level 2
说明:最详细的日志, 包括了测试中选中/未选中的Activity信息
命令:adb shell monkey-pcom.lemon.lemon ban-v 100
(4)事件时延
--throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
命令:adb shell 包名 --throttle 3000 100
--randomize-throttle
在事件之间插入随机延迟, 随机延迟范围为0到throttle设置的时间, 单位为毫秒
命令:adb shell 包名 --throttle 3000 --randomize-throttle 100
说明: 每次事件的间隔在0到3000毫秒之间不固定
备注:执行一百次monkey随机事件
(5)白/黑名单
--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 100
--pkg-blacklist-file黑名单, 后面接txt文件
命令:adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt 100
注意:包名换行
(6)保存日志
在后面加上空格 > 目录
(7)百分比事件
- #100%的点击事件
- --pct-touch 100
-
- #可以组合,同样方式拼接就行了
- #怎么中途停止
- 1;ctrl+z
- 2:adb shell
- #查看进程
- 3:ps
- 4:kill 进程端口
- 常用的是1,2,3,5,6,7(因为是从0开始的,都-1就行)
-
- 1:触摸(--pct-touch)
- #按下/抬起
- Touch(ACTION_DOWN)和Touch(ACTION_UP)
-
- 2:手势(--pct-motion)
- #直线滑动操作
- #按下、随机移动、抬起,在手机看到是一个没有拐弯的直线操作(比如上滑列表下滑列表)
- ACTION_DOWN、ACTION_MOVE、ACTION_UP
-
- 3:二指缩放(--pct-pinchzoom)
- #放大缩小手势操作
- 起始(两个手指同时点下):ACTION_DOWN、ACTION_POINTER_DOWN
- 中间(两个手指进行直线滑动):ACTION_MOVE
- 结束(两个手指同时放开):ACTION_UP
-
- 4:轨迹(--pct-trackball)
- 现在比较少了
-
- 5:屏幕旋转(--pct-rotation)
- #横屏、竖屏
- 其中degree:旋转方向,0表示90度,1表示180度,2表示270度,3表示360度
-
- 6:基本导航事件(--pct-nav)
- #指定方向设备的上下左右按键操作(现在手机比较少了)
- key(ACTION_DOWN)、Key(ACTION_UP)
-
- 7:主要导航事件(--pct-majornav)
- #如中间键、回退键、菜单键
- 如Home键
- key(ACTION_DOWN)、Key(ACTION_UP)
-
- 8:系统按键(--pct-syskeys)
- #如Home键、返回键、音量键等
- key(ACTION_DOWN)、Key(ACTION_UP)
-
- 9:启动Activity事件(--pct-appswitch)
- #手机上每一个界面就是一个Activity
-
- 10:键盘事件(--pct-flip)
- #点击输入框、键盘弹起、点击输入框外区域、键盘回收等
-
- 11:其他类型事件(--pct-anyevent)
- #如按键、其他不常用的设备上的按钮等
(8)忽略事件
- #忽略某些事件
- --ignore [事件类型]
-
- #指定某些操作的百分比
- --pct [操作类型]
-
-
- #--ignore在monkey的执行过程中,忽略部分引起monkey停止的事件,如:
- crashes:应用奔溃
- timeouts:ANR application not responding:应用未响应
- security:安全验证
- native:系统奔溃
-
- 如:忽略奔溃:--ignore-crashes
拿抖音测试一下
adb shell monkey -p com.ss.android.ugc.aweme -v -v -v 1000 > d:\log2.txt
这些事件组成了一个猴子,Seeded: 1592550640194,如果要复现bug可以使用它
对按键想了解可以搜下:Android KEYCODE键值对应大全
看日志的时候,主要关注timeouts、error、ANR、exception,crash,通过ctrl+f去查看
- #头文件信息
- #类型
- type = raw events
- #执行1次
- count = 1
- #速度
- speed = 1.0
- #启动
- start data >>
- #括号里面是包名,这里我用抖音测试
- LaunchActivity(com.ss.android.ugc.aweme)
- #点击事件,这里的定位我随便写的
- Tap(73,1247)
- UserWait(5000)
- Tap(600,1200)
- UserWait(5000)
- Tap(620,12)
- UserWait(5000)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。