monkey压测命令
Android压力测试工具Monkey简介

Android压⼒测试⼯具Monkey简介测试步骤:1.安装ADB2.连接被测⼿机和电脑3.打开CMD命令⾏4.输⼊monkey命令adb shell monkey -p --pct-touch 30 --ignore-crashes --ignore-timeouts--throttle 250 -s 2 -v -v -v 5000000⼀.monkey测试命令有哪些选项?1:常⽤选项--help:打印帮助信息-v:指定打印信息的详细级别,⼀个 -v增加⼀个级别,默认级别为 0 。
-v -v -v 为最详细⽇志。
2:事件选项-s:指定产⽣随机事件种⼦值,相同的种⼦值产⽣相同的事件序列。
如: -s 200--throttle:每个事件结束后的间隔时间——降低系统的压⼒(如不指定,系统会尽快的发送事件序列)。
如:--throttle 100--pct-touch:指定触摸事件的百分⽐,如:--pct-touch 5% ,相关的还有以下option:--pct-motion <percent> (滑动事件)--pct-trackball <percent> (轨迹球事件)--pct-nav <percent> (导航事件 up/down/left/right)--pct-majornav <percent> (主要导航事件 back key 、 menu key)--pct-syskeys <percent> (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)--pct-appswitch <percent> (activity之间的切换)--pct-anyevent <percent>(任意事件)3:约束选项-p:指定有效的package(如不指定,则对系统中所有package有效),⼀个-p 对应⼀个有效package,如:-p com.ckt -p com.ckt.asura;-c:activity必须⾄少包含⼀个指定的category,才能被启动,否则启动不了;4:调试选项--dbg-no-events:初始化启动的activity,但是不产⽣任何事件。
monkey命令参数

monkey命令参数Monkey是Android平台上一款压力测试工具,可以模拟用户的随机操作来检测应用程序的稳定性和性能。
它可以通过命令行参数来控制测试的行为,以下是一些常用的Monkey命令参数。
1.操作相关的参数:- `--pct-touch <百分比>`:触摸事件的百分比。
- `--pct-motion <百分比>`:滑动和拖动事件的百分比。
- `--pct-trackball <百分比>`:轨迹球事件的百分比。
- `--pct-nav <百分比>`:导航事件的百分比。
- `--pct-majornav <百分比>`:主要导航事件的百分比。
- `--pct-syskeys <百分比>`:系统按键事件的百分比。
- `--pct-appswitch <百分比>`:应用程序切换事件的百分比。
- `--pct-anyevent <百分比>`:任意事件的百分比。
- `--pct-pinchzoom <百分比>`:缩放事件的百分比。
2.时间相关的参数:-`-s<种子值>`:随机数生成器的种子值。
- `--throttle <延迟毫秒>`:事件之间的延迟时间。
-`-v<日志级别>`:日志的详细级别,可用值为0到5,默认为23.限制相关的参数:-`-c<事件数量>`:执行的总事件数量。
- `--dbg-no-events`:不执行任何事件,仅输出调试信息。
- `--dbg-clear-hist`:清除历史事件信息。
- `--pkg-blacklist-file <文件路径>`:指定一个包名黑名单文件,禁止访问黑名单中的应用程序。
4.安全相关的参数:- `--ignore-crashes`:忽略应用程序崩溃,继续执行测试。
- `--kill-process-after-error`:在发生错误后立即终止应用程序进程。
MONKEY命令

实例应用
这条命令的解释: --throttle 50 设定延时, --pct-anyevent 100设定启动activity的百分比 为 100%, 最后count就是事件数设定为500
如果没有指定,我们可以看到在开始执行的时候8个事件(上面的选项中有介绍)的百分 比如下: #adb shell monkey –p com.ebensz.stock –throttle 50 –pct-anyevent 100 –v 500 :Monkey: seed=0 count=500 :AllowPackage: com.ebensz.stock :IncludeCategory: UNCHER :IncludeCategory: android.intent.category.MONKEY // Event percentages: // 0: 15.0% // 1: 10.0% // 2: 15.0% // 3: 25.0% // 4: 15.0% // 5: 2.0% // 6: 2.0% // 7: 1.0% // 8: 15.0%
命令选项参考
--pct-touch <percent> 调整触摸事件的百分比(触摸事件是一个downup事件,它发生在屏幕上的某单一位置)。 --pct-motion <percent> 调整动作事件的百分比(动作事件由屏幕上某 ( 处的一个down事件、一系列的伪随机事件和 一个up事件组成)。 --pct-trackball <percent> 调整轨迹事件的百分比(轨迹事件由一个或几 个随机的移动组成,有时还伴随有点击)。
定义
Monkey是Android中的一个命令行工具。它 向系统发送伪随机的用户事件流(如按键输 入、触摸屏输入、手势输入等),实现对手 机应用程序进行压力测试。Monkey测试是 一种为了测试软件的稳定性、健壮性的快 速有效的方法。
monkey常用命令详解

monkey常用命令详解monkey是一款常用的压力测试工具,用于模拟多个并发用户对系统进行压力测试。
本文将详细介绍monkey的常用命令及其功能。
1. monkey的基本命令monkey的基本命令是最常用的命令之一,它用于启动monkey的工作。
可以通过以下命令来启动monkey:```adb shell monkey [options] <event-count>```其中,`event-count`表示要执行的事件数量,可以根据需要进行调整。
而`options`是一些可选参数,用于指定monkey的具体行为。
2. monkey的事件类型在monkey中,有许多不同类型的事件可以执行。
以下是一些常见的事件类型及其对应的命令:- 点击事件(Tap):用于模拟用户点击屏幕上的某个位置,可以使用`--pct-touch`参数指定触摸事件的百分比。
```adb shell monkey --pct-touch <percentage> <event-count>```- 滑动事件(Swipe):用于模拟用户滑动屏幕的操作,可以使用`--pct-motion`参数指定滑动事件的百分比。
```adb shell monkey --pct-motion <percentage> <event-count>```- 按键事件(Key):用于模拟用户按键的操作,可以使用`--pct-keyevent`参数指定按键事件的百分比。
```adb shell monkey --pct-keyevent <percentage> <event-count>```- 启动应用(Launch):用于模拟用户启动应用的操作,可以使用`--pct-appswitch`参数指定启动应用的百分比。
```adb shell monkey --pct-appswitch <percentage> <event-count>```3. monkey的其他常用命令除了基本命令和事件类型外,monkey还提供了一些其他常用的命令,用于进一步控制monkey的行为。
Monkey测试-Monkey命令详解

Monkey测试-Monkey命令详解Monkeymonkey是⼀个⿊盒压⼒测试⼯具,采⽤随机算法,对被测应⽤随机发送伪随机的⽤户事件流,如点击,拖拽,滑动,输⼊等,来确定应⽤是否会发⽣异常,并且会产⽣⽇志来进⾏分析,但是测试数据测试事件都是随机的,有⼀定局限性。
适合作为压⼒或者稳定性测试⼯具来测试应⽤的崩溃率,稳定性。
但是可以通过⼆次开发来进⾏业务流程控制或⼀定程度上控制测试覆盖。
monkey 命令介绍adb shell -help 查看monkey命令介绍参数解析:1. -p 指定要进⾏monkey测试的包,如果不使⽤参数,则会随机选择⼀个应⽤进⾏测试2. -c 指定activity的category类别3. -v 指定⽇志级别 -v level1 -v -v level2 -v -v -v level34. -s 伪随机的事件seed值,可以通过-s参数复现问题,不指定就会随机⽣成5. --ignore-crashes 忽略异常崩溃6. --ignore-timeouts 忽略ANR7. --ignore-native-crashes 忽略native层代码的崩溃8. --ignore-security-exceptions 忽略⼀些许可错误,⽐如证书许可,⽹络许可9. --monitor-native-crashes 是否监视并报告native层发送的崩溃代码10. --kill-procress-after-error ⽤于在发送错误后杀死进程11. --hprof 设置后,在Monkey事件序列之前和之后⽴即⽣产分析报告,保存于data/mic⽬录,不过将会⽣成⼤量⼏兆⽂件,谨慎使⽤12. --throttle 设置每个事件结束后延迟多少时间再继续下⼀个事件,降低cpu压⼒;如果不设置,事件与事件之间将不会延迟,事件将会尽快⽣成;⼀般设置300ms,因为⼈最快300ms左右⼀个动作13. --pct-touch 设置触摸事件的百分⽐,即⼿指对屏幕进⾏点击抬起(down-up)的动作14. --pct-motion 设置移动事件百分⽐,这种事件类型是由屏幕上某处的⼀个down事件-⼀系列伪随机的移动事件-⼀个up事件,即点击屏幕,然后直线运动,最后抬起这种运动。
monkey环境搭建文档

Monkey环境搭建及简单的压力测试1、安装JDK和SDK:(1)将JDK解压后并安装:(2)将SDK解压至D盘根目录下:2、配置环境变量:(1)新建系统变量:JAVA_HOME C:\Java\jdk1.7.0_80ANDROID_HOME D:\dev\Android SDK\adt-bundle-windows\sdkCLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(前边的点一定要有)(2)编辑path:在最后添加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%MAVEN_HOME%\bin;%ANDROID_HOME%\tools; %ANDROID_HOME%\platform-tools(一般需要在最前面添加一个;)3、monkey使用命令:(1)打开cmd:(2)adb shell:连接安卓设备;(3)adb connect 127.0.0.1:62001 连接夜神安卓模拟器;(4)adb shell monkey -P com.tencent.qqmusic -v -v -s 10000 10000 throttle 200>C:\Users\usermame\Desktop\qqmusic.txt如果第四部无法运行,或者运行报错,则继续下面的步骤(1)执行完上面第三步后,输入adb shell(2)输入:Cd /data/data(3)执行monkey -P com.tencent.qqmusic -v -v -s 10000 10000 throttle 200>C:\Users\usermame\Desktop\qqmusic.txt获取包名的方法:在cmd中,切换至sdk\builds-tools\目录下,即aapt.exe目录下2.以QQ音乐为例,命令行中切换到aapt.exe目录执行:aapt dump badging C:\Users\Administrator\Desktop\QQyinle_155.apk(apk所在目录位置)3.运行后的结果中以下两行分别是应用包名package和入口activity名称package: name='com.tencent.qqmusic'launchable-activity: name='com.tencent.qqmusic.activity.AppStarterActivity'关键字name,后面跟的就是包名。
adbshellmonkey进行压力测试

adbshellmonkey进⾏压⼒测试⼀、Monkey压⼒测试的原理1. adb shell monkey的运⾏机制实际上是执⾏⼿机中/system/bin/monkey这个脚本;2. Monkey事件注⼊机制Monkey注⼊系统事件是通过 framework 层的 hidenApi (如:activemanager,inputmanager,windowmanager) 获取系统服务。
Monkey中有11种事件,这些事件在MonkeyEventSource中对事件之间的⽐例进⾏设置。
Monkey事件根据类型⽐例⽣成事件队列,循环查找事件。
a.触摸事件(inputmanager):包括屏幕以及物理键的触摸,滑动,点击事件。
b.Activity事件(activemanager):是指我们调⽤Android系统组件的事件。
c.Window事件(windowmanager):是指操作Window的事件,例如转屏。
3.Monkey核⼼类a. Monkey.java, 程序的⼊⼝,根据参数选择合适的MonkeyEventSource,并适时触发MonkeyEvent;b. MonkeyEventSource.java, MonkeyEvent的⼯⼚,是⼀个接⼝;c. MonkeyEvent.java,各种事件的具体实现。
⼆、查找⼿机上的安装包包名1.adb shell pm list package 查看⼿机上所有的安装包2.adb shell pm list package -3 查看第三⽅安装包3.adb shell pm list packages -s 查看系统的包4.adb shell pm list packages -e “要搜索的内容” 查看启动包中搜索的包5.adb shell dumpsys window | findstr mCurrentFocus 获取当前打开的APP包名(前⾯的为包名,斜杠后⾯的是当前启动的acivity)三、Monkey 命令基本参数的介绍注意:所有的参数都需要放在monkey和设置的次数之间,参数的顺序可以调整;若带了-p ,-p必须放在monkey之后,参数必须在-p和count之间:adb shell monkey -p 包名 --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v –s 1540475754297 1001.-p ,此命令⽤于指定包,若不指定则在整个系统中执⾏a.指定⼀个包执⾏10次:adb shell monkey -p 包名 10 ,如下出现事件执⾏次数和所耗时间,则算是执⾏成功;b.指定多个包执⾏10次:adb shell monkey -p 包名 –p 包名 10,2.-v ,⽤于反馈⽇志的详细程度级别Level 0 : adb shell monkey -p 包名 -v 10 // 默认级别,仅提供启动、测试完成和最终结果等少量信息Level 1 : adb shell monkey -p 包名 -v -v 10 // 提供较为详细的⽇志,包括每个发送到Activity的事件信息Level 2 : adb shell monkey -p 包名 -v -v -v 10 // 提供最详细的⽇志,包括了测试中选中/未选中的Activity信息3.-s ,⽤于指定伪随机数⽣成器的seed值命令:adb shell monkey -p 包名 –s seed值执⾏次数如果seed值相同,则两次Monkey测试所产⽣的事件序列也相同的,⽰例:测试1:adb shell monkey -p com.kugou.android –s 1540475754297 100测试2:adb shell monkey -p com.kugou.android –s 1540475754297 1004.--throttle ,⽤于指定⽤户事件的操作间隔时延,单位是毫秒如果不指定这个参数,monkey会尽可能快的⽣成和发送消息命令:adb shell monkey -p 包名 --throttle 3000 1005.--ignore-timeouts ,忽略超时错误6.--ignore-crashes ,忽略crash7.--ignore-security-exceptions 忽略许可错误8.--monitor-native-crashes,⽤于指定是否监视并报告应⽤程序发⽣崩溃的本地代码9.--pct-touch ,触摸事件命令:adb shell monkey -p 包名 -v -v -v --pct-touch 100 20 //执⾏20次100%都为触摸事件这⾥触摸事件为100%,则没有其他事件10.指定⽇志存放⽬录:a、存放在电脑上(如下指定为D⽬录下命名为AAlog.txt,为了⽅便查找,然后就去电脑上该⽬录下查找,当设置路径后,⽇志将不会在命令⾏窗⼝上显⽰出来)adb shell monkey -p 包名 -v -v -v 200>D:AAlog.txtb、存放在⼿机上(可以断开电脑)1、进⼊Android系统adb shell2、执⾏Monkey命令monkey -p com.kugou.android --pct-touch 25 -v -v 200 1>/mnt/sdcard/monkey.txt 2>/mnt/sdcard/error.txt &0 :标准输⼊1 :标准输出2 :标准错误输出&:后台运⾏>:重定向,会覆盖原来⽂件⾥的内容>>:重定向,追加到原来⽂件末尾四、⽇志分析1、查找出差步骤:a、找到monkey⾥哪个地⽅出错查看Monkey执⾏的是哪⼀个Activity,在switch后⾯找,两个swtich之间如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。
monkey

ANR
• 应用响应超时;
• 在设备上一般系统弹出窗口询问用户选择 “Force Close”或者“Wait”。 • “Force Close”将杀掉发生ANR的应用进程。 “Wait”将会等待系统择机恢复此应用进程。
VMreboot
• 手机在测试过程中出现虚拟机重启,即为 系统上层重启。
• 清除之前log • adb shell • cd sdcard • ls • 若存在mtklog文件夹,进行删除 • rm –r /sdcard/mtklog • 开启mtklog : adb shell am start -n com.mediatek.mtklogger/.MainActivity • ,设置mtklog大小 • 设置手表时间为当前时间 • 重启手机 生成MTKlog文件夹
Monkey测试标准
• Monkey测试标准如下:
1.整机测试时间在12小时以上;
2.无死机定屏重启等严重问题;
3.无anr、crash、vmreboot等严重问题
Log分析
• • • • • • 1.monkey log介绍 2.关键字Monkey finished 3.关键字Crash 4.关键字ANR 5.关键字NullPointerException 6.Vm reboot
• 05-16 07:16:24.503: E/AndroidRuntime(17625): FATAL EXCEPTION: main 0516 07:16:24.503: E/AndroidRuntime(17625): ng.RuntimeException: Unable to start activity ComponentInfo{com.example.fdc/com.example.fdc.Medical_Record}: ng.NullPointerException 05-16 07:16:24.503: E/AndroidRuntime(17625): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 05-16 07:16:24.503: E/AndroidRuntime(17625): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 05-16 07:16:24.503: E/AndroidRuntime(17625): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 05-16 07:16:24.503: E/AndroidRuntime(17625): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 05-16 07:16:24.503: E/AndroidRuntime(17625): at android.os.Handler.dispatchMessage(Handler.java:99) 05-16 07:16:24.503: E/AndroidRuntime(17625): at android.os.Looper.loop(Looper.java:123) 05-16 07:16:24.503: E/AndroidRuntime(17625): at android.app.ActivityThread.main(ActivityThread.java:3687) 05-16
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
monkey压测命令
Monkey压测命令是一种常用的压力测试工具,它可以模拟大量
的用户请求,以测试系统的性能和稳定性。
使用Monkey命令进行压
测需要进行以下步骤:
1. 安装Monkey:Monkey是一个基于Java的命令行工具,可以
通过在终端输入命令进行安装。
安装完成后,可以在终端输入“monkey”命令来检查安装是否成功。
2. 配置Monkey:在进行压测前,需要进行一些配置,包括设置测试的目标地址、请求的数量、并发数等参数。
可以通过在终端中输入“monkey --help”来查看可用的配置选项。
3. 运行Monkey:一旦完成了配置,就可以在终端中输入“monkey run”命令来启动压测。
Monkey会自动发送请求,并在测试完成后输出测试结果。
需要注意的是,在进行压测时,需要确保测试环境与真实环境尽可能相似,以避免测试结果的误差。
同时,也需要谨慎设置请求的数量和并发数,以避免对系统造成严重的影响。
- 1 -。