申明: 本文为转载内容,在练习时有改动
原文地址: https://blog.csdn.net/just__like/article/details/83757492
Monkey的介绍
它是Android系统自带一个命令行工具,可以运行在模拟器里或者真是设备中运行。
monkey向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。
monkey包括很多选项,大致四大类:
1.基本配置选项,如设置尝试的事件数量。
2.运行约束选项,如设置只对单独的一个包进行测试。
3.事件类型和频率。
4.调试选项
monkey命令特性
不可能使用monkey来指定做一样测试,重复做很多次。因为monkey产生的是伪随机的事件流。但是我们可以通过添加 命令选项将操作限制在一定的范围内。
一,首先你要先搭建环境
1.先下载jdk 具体安装流程请参考:https://blog.csdn.net/write6/article/details/79136388
2.再下载sdk 具体安装流程请参考:https://blog.csdn.net/u011541946/article/details/77142045
二,打开手机的开发者调试工具,用usb数据线链接你的手机;
三,monkey前的准备命令
1.windows+r 输入cmd进入dos命令行;
2.输入adb devices 下面出现类似下图的组合你就成功了;(
3.获取包名(我常用的几种)
(1)输入
adb shell pm list packages
查看你的手机所有的安装包;输入adb shell pm list packages -3
查看手机上所有的第三方安装包,看一眼差不多就知道哪一个是你要的安装包;
(2)使用uiaotumator之类的软件查看,
(3)DOS环境输入:adb shell logcat|findstr "Displayed"
,打开待测试的APP;
(4)获取已打开的包名/Acitivity名: 输入adb命令:adb shell dumpsys window | mCurrentFocus
这样可以尽快的找到想要的安装包名称;
四,首先用一个最简单的mokey去试着找哪个是你想要的安装包名称:
1.参数:
/ / -p参数:表示指定测试的程序(空格后面跟安装包名字,拿刚才的第三方安装包一个个试)
/ /-v参数:表示查看monkey执行过程的信息(日志级别)(-v 越多越详细,最多三个)
/ /数字100:表示测试事件数为100
指定一个包 adb shell monkey -p com.gwecom.app -v -v -v 100
(此时指定软件会被打开并开始乱点乱按)
指定多个包 adb shell monkey -p com.tencent.news -p com.pdfreader -p com.widgets -v 1000
不指定包 adb shell monkey -v 1000
结果如图:
Event percentages(事件百分比):
1.Seed :想要两次执行相同的操作,我们就要设置一个seed值:
adb shell monkey -p 包名 -s 数字 次数
例如: `adb shell monkey -p 包名 -s 50 100`
2.设置点击事件占总事件的百分比:
adb shell monkey -v -p 包名 --pct-touch 50 100
(解释一下:-v打印日志,-p测试哪个app, --pct-touch 50 点击事件占总事件的50% 100触发100次随机事件)
3.动作事件:
adb shell monkey -v -p 包名 --pct-motion 50 100 #(由第二小点总结的理解第三小点并不难)
如果想要约束两个或者三个事件一起执行的百分比,写法如下
adb shell monkey -v -p 包名 --pct-touch 50 --pct-motion 50 100 #(意思就是点击事件和动作事件的百分比各占50%)
4.轨迹球事件:
adb shell monkey -v -p 包名 --pct-trackball 80 100 #轨迹球事件占总事件的80%,总共执行100次
5.基本导航事件:
adb shell monkey --pct-nav 80 100 #基本导航事件(输入设备的上下左右)占总事件的80%,总共执行100次
6.主要导航事件:设定主要导航事件的百分比,兼容性中间键,返回键,菜单键
adb shell monkey --pct-majornav 80 100 # 主要导航事件占总事件的80%,总共执行100次
7.系统导航事件:设定系统导航事件的百分比,HOME、BACK、拨号及音量键
adb shell monkey --pct-syskeys 80 100 #系统导航事件占总事件的80%,总共执行100次
8.启动Activity事件:
adb shell monkey --pct-appswitch 80 100
启动Activity事件占总事件的80%,总共执行100次
- 不常用事件:不常用事件占总事件的80%,总共执行100次
adb shell monkey --pct-anyevent 80 100
- 崩溃事件:设置一下,在系统跑崩溃之后还要继续执行。直到事件数跑够才停止。
adb shell monkey --ignore-crashes <event-count>
- 超时事件:设置一下,在系超时之后还要继续执行。直到事件数跑够才停止。
adb shell monkey --ignore-timeouts <event-count>
- CRASH结果的析取:
实现步骤:安装一个能引发CRASH 的 App →执行压力测试命令(触发CRASH)→提取CRASH的Exception信息,
adb shell monkey -v -p 包名 --ignore-crashes 10000 //出现Crash后继续执行在这里插入代码片
ANR结果的析取:
实现步骤:安装一个能引发ANR的 App →执行压力测试命令(触发ANR)→提取ANR的Exception信息。手动测试的时候出现ANR怎么获取Log信息:
adb shell
cd data/anr //到anr目录下
ls //查看一下文件
-
尽管monkey产生是伪随机事件流,但是我们希望我们的操作有一定的规律性,即按键、触屏等各类事件操作有所偏重。
eg:(1). 对文本框操作,需要更多的按键操作。 (2). 玩游戏,需要更多的点击和滑动操作。
-
–throttle 设定两个事件之间一个固定延迟,可以减缓monkey的执行速度。如果不指定,monkey将不会被延迟,事件将尽可能快地生成和发送消息。单位:毫秒
eg:
adb shell monkey --throttle 3000 -p com.gwecom.app 100
向app发送1000次随机事件,每次事件间隔为3秒。
-
–hprof
指定了该参数,Monkey会在发送事件序列的前、后,生成性能分析报告。通常会在data/misc目录下生成一个5MB左右大小的文件 -
–ignore-crashes
通常情况下,monkey会在测试应用程序崩溃或者发生异常后停止运行,若指定了该参数,则monkey将会在产生异常后,继续向系统发送事件,直到指定事件全部运行完毕。 -
–ignore-timeouts
通常情况下,当应用程序发生任何超时错误(application not responding)时,monkey将停止运行。若指定了该参数,则monkey将会在产生错误信息后,继续向系统发送事件,直到指定事件全部运行完毕 -
–ignore-security-exceptions
通常情况下,指定应用程序发生许可错误时(如证书许可,网络许可等),monkey将停止运行。若指定了该参数,即使应用程序发生许可错误,monkey会继续向系统发送事件,直到指定事件全部运行完毕。eg:
adb shell monkey --throttle 3000 --pct-trackball 50 -p com.tencent.news --ignore-security-exceptions 100
————————————————
版权声明:本文为CSDN博主「一土小亘兄」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/just__like/article/details/83757492