Monkey_Maxim 遍历测试工具
Monkey_Maxim 遍历测试工具
1. 简介
Maxim 是基于 Monkey 二次开发的工具,是基于遍历规则的高性能的 Android Monkey,可以对真机/模拟器实现 APP UI 压力测试。相比原始的 Monkey 工具,新增了一些定制化功能:
- 多种随机测试模式,如 DFS 模式(增加深度遍历算法),Mix 混合模式(直接使用底层 accessibiltyserver 获取界面接口 解析各控件,随机选取一个控件执行touch操作),Troy模式(按照控件选择策略进行高低优先级进行深度遍历)
- 可以设置执行时长
- 可以自定义 Activity 黑白名单
- 兼容多个 Android 版本
- 防跳出,防休眠,防假死等
2. 环境安装
- 支持 Android 5,6,7,8,真机及模拟器; Android 5 不支持 dfs mode
- 将 framework.jar,monkey.jar 放到手机上某个目录中,建议放置到手机的/sdcard目录下,命令如下:
adb push framework.jar /sdcard adb push monkey.jar /sdcard
3. 用法
下载 AppetizerIO:APP测试->UI压力测试,支持多种模式,黑白名单,所有配置文件(自动 JSON 语法查错),测试开始前自动 push 配置文件。
- 测试过程log实时更新
- 一键错误log上报作者
3.1 命令行模式
cmd 命令 :
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar \ exec app_process /system/bin tv.panda.test.monkey.Monkey \ -p com.panda.videoliveplatform --uiautomatormix \ --running-minutes 60 -v -v
- tv.panda.test.monkey.Monkey: monkey 入口类,不要修改
- com.panda.videoliveplatform: 被测 App 的包名,需要修改为测试的包名
- --uiautomatormix: 遍历策略
3.2 策略
DFS模式 深度遍历算法
命令行执行时通过增加参数--uiautomatordfs,添加深度遍历算法。
- 用法:
在命令行增加参数--uiautomatordfs,添加深度遍历算法。
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.xueqiu.android --uiautomatordfs 5000
Mix模式 混合模式
在命令行增加参数--uiautomatormix直接使用底层 accessibiltyserver 获取界面接口解析各控件,随机选取一个控件执行 touch 操作。
同时与原 monkey 其他操作按比例混合使用。默认 accessibilityserver action 占比 50%,其余各 action 分剩余的 50%,accessibilityserver action 占比可配置--pct-uiautomatormix n。
用法:
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.xueqiu.android --uiautomatormix --running-minutes 60 -v -v
Troy模式
在命令行增加参数--uiautomatortroy控件选择策略按 max.xpath.selector 配置的高低优先级来进行深度遍历。
配置文件 max.xpath.selector 来控制控件操作的优先级,配置内容如下:
[ { "firstList": [ { "xpath": "//*[contains(@text,'行情')]" } ], "selectList": [ { "xpath": "//*[@clickable='true']" }, { "xpath": "//*[@clickable='true']//*[contains(name(),'Text')]" }, { "xpath": "//*[@clickable='true']//*[contains(name(),'Button')]" }, { "xpath": "//*[@clickable='true']//*[contains(name(),'Image')]" } ], "lastList": [ { "xpath": "//*[../*[@selected='true']]" }, { "xpath": "//*[../../*/*[@selected='true']]" }, { "xpath": "//*[../../*/*[@selected='true'] and contains(@resource-id,'tab_')]" }, { "xpath": "//*[contains(@resource-id,'HorizontalScrollView')]" } ], "blackList": [ { "xpath": "//*[contains(@resource-id,'wrapper_in_custom_title_bar')]//*[contains(@resource-id,'right_button')]" }, { "xpath": "//*[contains(@resource-id,'share')]" } ] } ]
控件选择策略会按 firstList,selectList,lastList 顺序执行,并屏蔽 blackList 的元素内容,来执行遍历测试。
运行前需要把文件 max.xpath.selector push 到手机 /sdcard/ 这个路径下。
保留原始monkey参数
比如可以在命令后增加参数-v来打印详细日志,增加参数--throttle控制事件之间的时间间隔。maxim 保留了monkey原有的参数。
用法举例:
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.xueqiu.android --uiautomatormix --running-minutes 3 --throttle 300 -v -v
设置运行时长
命令行可以增加运行时长的参数,来控制整体的执行时间。命令后面增加参数--running-minutes 3整个遍历测试会运行3分钟即停止执行。
用法举例:
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.xueqiu.android --uiautomatormix --running-minutes 3 --throttle 300 -v -v
增加黑控件、黑区域屏蔽
什么叫黑控件,黑区域?比如雪球 App 详情页面,不想点击某个元素,某个区域,可以将这个元素/区域放到黑名单中,不操作这部分内容。
当前页面为配置的 activity 时,做黑控件、黑区域检查有下面三种方式:
- 仅配置 bounds 屏蔽某个区域,在该区域内的控件或坐标不会被点击
- 配置 xpath 查找匹配的控件,屏蔽点击该控件
- xpath+bounds 查找匹配的控件,当控件存在时屏蔽指定的区域
注意:配置完成后贴在 json.cn 检查格式不报错说明格式正确,然后将该文件 push 到 /sdcard/max.widget.black 位置。
举例,配置文件max.widget.black内容为如下:
[ { "activity":"com.xueqiu.android.stockmodule.stockdetail.StockDetailActivity", "bounds": "[0,288][1440,974]" } ]
注意:上面的activity 页面名称可以通过命令获取adb shell dumpsys window|grep mCurrentFocus。
定义白名单
一旦添加了白名单 ,在每次点击之后会检测跳转的页面,如果跳转的页面不在白名单中,则不进行跳转。
首先创建文件 awl.strings ,将需要添加白名单的页面按行添加到这个文件中,然后将配置文件push到手机中adb push awk.strings。
com.xueqiu.android.common.MainActivity com.xueqiu.android.cube.CubeActivity
执行命令的时候添加 --白名单参数,命令如下:
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.xueqiu.android --uiautomatormix --running-minutes 60 --act-whitelist-file /sdcard/awl.strings -v -v --throttle 500
注意:上面的 activity 页面名称可以通过命令获取adb shell dumpsys window|grep mCurrentFocus。
小结
以上,我们熟悉了 Monkey_Maxim 遍历测试工具的使用。接下里,进一步掌握多平台自动遍历测试工具 AppCrawler 的使用。
<p> 专刊包含了10+年经验测试架构师对测试职业发展的深度解读 帮助你掌握当下 BAT 流行的 App 自动化测试技术基础技能和工具使用;以及从入门到进阶的自动化测试实战经验,在面试中能够脱颖而出。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p> <p> <br /> </p>