你知道monkey命令有什么用吗 一起来看一下吧
一、Monkey 简介
Monkey 就是SDK中附带的一个工具。Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
该工具用于进行压力测试。然后开发人员结合monkey 打印的日志和系统打印的日志,分析测试中的问题
Monkey 测试的特点:
Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性。
1、测试的对象仅为应用程序包,有一定的局限性。
2、Monky测试使用的事件数据流是随机的,不能进行自定义。
3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。
二、Monkey的基本用法
基本语法如下:
$ adb shell monkey [options]
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:
$ adb shell monkey -p your.package.name -v 500
使用android自动化测试工具monkeyrunner启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法:
方法一:使用aapt //aapt是sdk自带的一个工具,在sdk\builds-tools\目录下
1.以ES文件浏览器为例,命令行中切换到aapt.exe目录执行:aapt dump badging E:\apk\es3.apk
2.
注:在android sdk目录搜索可以找到aapt.exe,如果没有可以下载apktool。
三、Monkey测试的一个实例
通过这个实例,我们能理解Monkey测试的步骤以及如何知道哪些应用程序能够用Monkey进行测试。
Windows下(注:2—4步是为了查看我们可以测试哪些应用程序包,可省略):
1、通过eclipse启动一个Android的emulator
2、在命令行中输入:adb devices查看设备连接情况
C:\Documents and Settings\Administrator>adb devices
List of devices attached
emulator-5554 device
3、在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面
C:\Documents and Settings\Administrator>adb shell
#
4、查看data/data文件夹下的应用程序包。注:我们能测试的应用程序包都在这个目录下面
C:\Documents and Settings\Administrator>adb shell
# ls data/data
ls data/data
5、以com.android.calculator2作为对象进行MonkeyTest
#monkey -p com.android.calculator2 -v 500
其中-p表示对象包 –v 表示反馈信息级别
运行过程中,Emulator中的应用程序在不断地切换画面。
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。
四、使用monkey help 命令查看命令参数
C:\Users\chenfenping>adb shell monkey -help
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
COUNT
1 参数: -p
用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,monkey将只允许系统启动指定的APP,如果不指定包,将允许系统启动设备中的所有APP.
* 指定一个包: adb shell monkey -p cn.emoney.acg 10
* 指定多个包:adb shell monkey -p cn.emoney.acg –p cn.emoney.wea -p cn.emoney.acg 100
* 不指定包:adb shell monkey 100
2 参数: -v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
日志级别 Level0
示例 adb shell monkey -p cn.emoney.acg –v 100
说明缺省值,仅提供启动提示、测试完成和最终结果等少量信息
日志级别 Level 1
示例 adb shell monkey -p cn.emoney.acg –v -v 100
说明提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别 Level 2
示例 adb shell monkey -p cn.emoney.acg –v -v –v 100
说明最详细的日志,包括了测试中选中/未选中的Activity信息
3 参数: -s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
Monkey 测试1:adb shell monkey -p cn.emoney.acg -s 10 100
Monkey 测试2:adb shell monkey -p cn.emoney.acg –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。
4 参数: --throttle<毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
adb shell monkey -p cn.emoney.acg --throttle 5000 100
5 参数: --ignore-crashes
用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p cn.emoney.acg --ignore-crashes 1000
测试过程中即使程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止
adb shellmonkey -p cn.emoney.acg 1000
测试过程中,如果acg程序崩溃,Monkey将会停止运行
6 参数: --ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p cn.emoney.acg --ignore-timeouts 1000
7 参数: --ignore-security-exceptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p cn.emoney.acg --ignore-security-exception 1000
8 参数: --kill-process-after-error
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态
(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。
adb shellmonkey -p cn.emoney.acg --kill-process-after-error 1000
9 参数: --monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码。
adb shellmonkey -p cn.emoney.acg --monitor-native-crashes 1000
10 参数: --pct-{+事件类别}{+事件类别百分比}
用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)
示例:
--pct-touch{+百分比}
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
adb shell monkey -p cn.emoney.acg --pct-touch 10 100
--pct-motion{+百分比}
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随件机事和一个up事件组成)
adb shell monkey -p cn.emoney.acg --pct-motion 20 1000
--pct-trackball{+百分比}
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)
adb shell monkey -p cn.emoney.acg --pct-trackball 30 1000
--pct-nav{+百分比}
调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
adb shell monkey -p cn.emoney.acg --pct-nav 40 1000
--pct-majornav{+百分比}
调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
adb shell monkey -p cn.emoney.acg --pct-majornav 50 1000
七、输出monkeylog
跑monkey的时候或者想抓程序log导出时,有时会提示:cannot create D:monkeytest.txt: read-only file system
为什么有时候可以有时候不可以?
后来发现跟使用使用习惯不一样,一会是先进入adb shell 再用命令,一会是直接命令进入。
进入adb shell后再用命令就会失败~
正确方法:退出shell或者执行命令时先不要进shell
C:\Documents and Settings\Administrator>adb shell monkey -p 包名
-v 300 >e:\text.txt
进入adb shell后就相当于进入linux的root下面,没有权限在里面创建文件~
五、Monkey测试结果分析
一. 初步分析方法
Monkey测试出现错误后,一般的查错步骤为以下几步:
1、找到是monkey里面的哪个地方出错
2、查看Monkey里面出错前的一些事件动作,并手动执行该动作
3、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样--复现
一般的测试结果分析:
1、 ANR问题:在日志中搜索“ANR”
2、崩溃问题:在日志中搜索“Exception” Force Close
推荐
-
vivoX80好评率接近100% 搭载联发科天玑9000处理器
5月10日消息,vivo京东自营旗舰店显示,vivo X80好评率接近100%(实际好评率为98%),该机起售价为3699...
来源:
财富更多》
-
曝PS5Pro将在2023年底发布 光线追踪能翻倍
据外媒RedGamingTech爆料,PS5 Pro将在...
-
市场监管总局:公布2022年国家计量比对项目 涉及食品安全、生物制药等领域
市场监管总局:公布2022年国家计量比对...
-
调动更多金融“活水” 纾困滋养小微企业发展
调动更多金融“活水”纾困滋养小微企业...
-
网络市场监管与服务示范区创建办法实施 助力网络经济发展
网络市场监管与服务示范区创建办法实施...
-
市场监管总局:网络市场监管与服务示范区创建管理办法发布实施
市场监管总局:网络市场监管与服务示范...
动态更多》
热点
- 中国电信发布全新一代麦芒手机 售价1799元起
- motoX30系列全线降价 骁龙8旗舰2399元起
- 天猫精灵推出便携智能投影仪小红盒Pro 6月1日正式开售
- 小米首款随身路由曝光 支持四大运营商
- 比亚迪腾势首款高端MPV发布日期定了 45万起售
- 6.5英寸屏幕 realmeGTNeo系列新品即将登场
- OPPOReno8系列曝光 首发搭载骁龙7Gen1处理器
- 抖音宣布网暴杀手功能升级 仅显示1条私信提醒
- 苹果或推出多屏版iPhone 最快可在明年或后年就面世
- 中兴Axon40Ultra开箱 实现无边框沉浸式视觉
- 内存容量为4倍 三星宣布开发出首款512GB内存扩展器
- 千元5G新品上市 荣耀畅玩30开启预订
- “彤心锁汇,蝶变青春”汇泰龙品牌战略及新VI形象发布暨代言人发布会盛大召开!
- 你知道数据类型有哪几种吗 快来看一下吧
- word格式刷快捷键是什么呢 快来看一下吧
- 你知道webm是什么格式吗 快来看一下吧
- UTM与防火墙的区别是什么呢 快来看一下吧
- 你知道平衡二叉树是什么吗 快来看一下吧
- java中线程与进程有什么区别吗 快来看一下吧
- 你知道bug是什么意思吗 快来看一下吧
- 你知道npu是什么吗 主要用途是什么
- xml文件怎么打开呢 需要用到什么软件呢
- 你知道xml文件该怎么打开吗 应该用什么软件呢
- 你知道png是什么格式吗 主要特性有哪些呢
- banner的中文是什么呢 主要用在哪里呢
- 常见的erp软件有哪些呢 一起来看一下吧
- 你知道抽象类的作用是什么吗 快来看一下吧
- 你知道xml文件是什么吗 一起来看一下吧
- 你知道mdf是什么文件格式吗 快来看一下吧
- pscc和pscs6的区别是什么呢 一起来看一下吧
- 改变人类出行?没有什么是高合办不到的!
- 你知道rtf是什么格式吗 一起来看一下吧
- 你知道如何设置定时关机吗 快来看一下吧
- 电脑桌面上的图标不见是怎么回事呢 一起来看一下吧
- 你知道c盘哪些目录可以删除吗 快来看一下吧
- 你知道u盘格式化是什么意思吗 格式化U盘有什么方法吗
- 你知道http端口号是多少吗 一起来看一下吧
- 硬盘损坏该怎么修复呢 快来看一下吧
- 大数据和海量数据有什么区别吗 一起来看一下吧
- 你知道什么是Radeon图像锐化吗 快来看一下吧
- 你知道cfg文件是什么吗 主要用途是什么呢
- 你知道ppt卷轴怎么做吗 制作步骤是什么呢
- 你知道api是什么意思吗 一起来看一下吧
- iQOONeo6SE明天正式发售 支持价保618
- 高端品牌不止腾势 比亚迪星空硬派越野SUV曝光
- 联想ThinkPadneo14正式开售 搭载锐钜Xe核芯显卡
- 三星GalaxyZFold4渲染图曝光 搭载骁龙8Plus
- 三星GalaxyZFold4外观曝光 搭载屏下摄像头
- 海信发布墨水屏阅读手机新品 带给用户更流畅的阅读体验
- 字节跳动推出聆镜直播一体机 顶部可翻转摄像头
- 中兴Axon30屏下版降至新低 无刘海无挖孔的真全面屏形态
- 新增越野套件 长城哈弗大狗追猎版官图发布
- vivoT2现身数据库 快充功率有望进一步提升
- 一加Ace竞速版真机曝光 后盖采用磨砂塑料材质
- 爱奇艺奇遇DreamPro一体机发布 首发价2499元起
- vivoX80Pro天玑版发布 主摄首发全新GNV传感器
- 中兴Axon40Ultra开启预售 后置6400万人文主摄
- 三星GalaxyS23Ultra曝光 有望首发2亿像素
- 抖音宣布网暴杀手功能升级 仅显示1条私信提醒
- 苹果或推出多屏版iPhone 最快可在明年或后年就面世
- 中兴Axon40Ultra开箱 实现无边框沉浸式视觉
- 直板旗舰终极形态来了 中兴发布Axon40Ultra手机
- 浙江富阳大源镇举办“婆媳同心”主题笔会雅集活动
- 雷神与变形金刚大黄蜂联名款笔记本上架 首发抢购12999元
- 三代量产屏下前摄 中兴Axon40Ultra顶配机型发布
- 中兴Axon40Ultra正式亮相 首发第三代屏下摄像头
- 2022款长安逸动PLUS官图发布 配1.4T发动机
- 夏普手机发布新旗舰机 支持最大1TB存储卡扩展
- 小米手环7预告发布 将与Redmi11T同台亮相
- 摩托罗拉新机预热 有望搭载高刷新率LCD屏幕
- iPhone14系列渲染图曝光 详细配置信息也一并爆光
- 诺基亚新机渲染图曝光 摄像头数量达到了五枚
- 你知道proe是什么软件吗 主要特性是什么呢
- 你知道wmv格式用什么播放器打开吗 快来看一下吧
- 你知道网页三剑客是哪三个软件吗 快来了解一下吧
- 电脑显示ip冲突是怎么回事呢 该怎么解决呢
- 你知道软件oem版是什么意思吗 快来看一下吧
- 系统漏洞需要修复吗 修复过程是什么呢
- cat是计算机辅助什么呢 一起来看一下吧
- 你知道微距是什么意思吗 主要用途是什么
- 任务管理器被禁用是怎么回事呢 一起来看一下吧
- 你觉得哪些防火墙软件比较好呢 快来看一下吧
- 你知道scrolllock是什么意思吗 快来看一下吧
- 你知道email地址是什么意思吗 一起来看一下吧
- 你记得苹果12是哪一年上市的吗 来看一下吧
- 你知道安卓系统是哪个国家开发的吗 快来了解一下吧
- 你知道计算机安全的属性包括什么吗 快来了解一下吧
- 你知道位图文件是什么吗 一起来看一下吧
- 你知道centos7是什么操作系统吗 快来看一下吧
- 你知道电脑fps是什么意思吗 快来了解一下吧
- 中兴Axon40Ultra真机图曝光 这颜值你爱了吗
- iPadPro2022款渲染图曝光 刘海设计你觉得如何呢
- 小米12SPro曝光 搭载天玑9000处理器你心动了吗
- iPadAir5蜂窝版开售 售价5499元起你觉得怎么样呢
- 谷歌Pixel7Pro保护壳曝光 出厂预装Android13你觉得如何呢
- 高通骁龙8Plus旗舰处理器曝光 哪款机型会首发呢
- 中兴Axon40Ultra硬件信息曝光 三枚镜头均为主摄你心动了吗
- 岚图梦想家正式上市 售价36.99万你能接受吗
- 三星折叠屏手机曝光 3400mAh电池你能接受吗
- vivoS15系列本月正式发布 天玑8100加持你心动了吗
- iQOONeo6SE各大平台开启预售 1999元起你觉得怎么样呢
- 一加本月将推Ace系列新品 搭载天玑8100你觉得如何呢
- 一加Nord2T安兔兔跑分曝光 搭载天玑1300处理器
- RedmiK40S最具有竞争力的骁龙870手机 起售价为1799元
- 小屏旗舰退出舞台 苹果iPhone14系列参数曝光
- 手机颜值天花板 中兴Axon40系列今日下午发布
- 全新iPhone首曝光 背面搭载两块次电子纸屏幕
- 2299元 realmeQ5Pro限定礼盒今日开售
- 摩托罗拉将推第三代Razr折叠屏手机 取消下巴凸起
- 荣耀新款MagicBook笔记本谍照曝光 金属材质磨砂质感
- 大疆Mini3Pro无人机首飞视频曝光 支持直接输出HDR影像
- 对冲基金大佬Dan Loeb增持壳牌股份,继续施压公司拆分业务
- 日立将在美国马里兰州建造列车组装工厂
- 马士基等外资船公司沿海捎带业务申请获批,预计5月底前首航
- 海螺水泥成奈曼旗宏基水泥大股东
- 丝芭传媒因合同纠纷起诉孔肖吟
- 市场担忧美国经济衰退,专家有何理财建议?
- 5月9日机构对金融市场观点汇总
- 绿盟科技云化战略“T-ONE CLOUD”正式发布
- “抱团”仍难抵御股市严寒!美国新散户空欢喜:疫情中赚的全赔了
- OPPO 启动“微笑提案” 发起科创赋能平台
- iQOO Neo6 SE发布:骁龙870+80W闪充 1999元起售
- 上海苏宁易购商管公司被执行100万
- 宁德时代退股易事特子公司
- 俄乌冲突下全球小麦价格今年已飙升40% 非洲转向更便宜替代品
- 猿辅导成功注册猿服道商标
- 美投资专家:就业市场表现扭曲 经济实则“摇摇欲坠”
- 散户们开始进场抄底!“木头姐”旗舰基金ARKK上周单日吸金逾3亿美元
- 汇市观潮:欧元、英镑及澳元外汇市场分析
- 阿里体育于杭州投资奥体运营公司
- 新冠疫情打击乳制品需求 国际乳业巨头下调原奶价格预期
- 花冠贝智康新打法!用“活性营养”赋能婴配粉创新发展
- 北京汇源公司被执行46万
- 英国宣布对俄新制裁:大幅提高铂、钯等贵金属进口关税
- 新一轮对俄制裁袭来:G7承诺减少对俄能源依赖 美英发布新制裁方案