(一)Monkey简介

Monkey意指猴子,顽皮淘气。所以Monkey测试,顾名思义也就像猴子一样在软件上乱敲按键,猴子什么都不懂,就爱捣乱。Monkey原理也是类似,通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、滑动Trackball、手势输入等操作),来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。
Monkey包括许多选项,它们大致分为四大类:

(1)基本配置选项,如设置尝试的事件数量;

(2)运行约束选项,如设置只对单独的一个包进行测试;

(3)事件类型和频率;

(4)调试选项;

(二)Money原理

在Monkey运行的时候,它生成事件,并把它们发给系统。同时,Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理(自动停止):

(1)如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止;

(2)如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错;

(3)如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错;

按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。

(1)Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:

/system/framework/monkey.jar;

(2)Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;

(3)通过在cmd窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试;

(三)Monkey命令详解

关于环境,我们已经在之前搭建好了,还没搭建好的小可爱请关注ITester软件测试小栈微信公众号,查看:速看,APP测试之ADB最全指南, 根据文章介绍下载对应工具并完成工具安装,熟悉操作环境。

需要知道待测试app的包名,可以通过使用“uiautomatorviewer.bat”工具来获取,也可以直接询问提供app的开发小哥哥,或者直接使用adb命令获取包名。

以下简单介绍两种通过adb命令获取包名的方法。

方法一:首先要先打开手机中需要获取包名的app,然后分别输入命令即可。

//获取APP包名方法一

adb shell

dumpsys activity | grep mFocusedActivity

方法二:查看设备中所有的包,在cmd 窗口中执行以下命令:

//获取APP包名方法二

adb shell

cd data/data

ls

之后输入一些Monkey命令,就可以开始测试。

//获取Monkey命令自带的帮助,在cmd中执行命令:

adb shell monkey –help

//边测试边打印log

adb shell monkey -p com.tencent.WeChat –v 20000|logcat -v time>D:\log\1.txt

说明:用Monkey 测试时,为了方便分析问题,可以在命令monkey命令后面加上 |logcat -v time,这样就能边测试边打印Log并存到电脑本地,但是以上组合在monkey测试完成后,logcat仍然在执行,测试时需注意手动结束。

//指定一个包让Monkey程序模拟100次随机用户事件

adb shell monkey -p com.tencent.WeChat 100

说明:参数-p用于约束限制,用此参数指定一个或多个包(即App)。指定包之后,Monkey将只允许系统启动指定的APP;如果不指定包,Monkey将允许系统启动设备中的所有APP,com.tencent.WeChat为包名,100是事件计数。

//指定多个包

adb shell monkey -p com.tencent.WeChat -p com.tencent.QQ -p com.tencent.QQBrowser 100

//不指定包

adb shell monkey 100

说明:Monkey随机启动APP并发送100个随机事件。

//指定日志级别Level 0

adb shell monkey -p com.tencent.WeChat –v 100

说明:日志级别用于指定反馈信息级别(信息级别就是日志的详细程度),日志级别 Level 0 ,仅提供启动提示、测试完成和最终结果等少量信息。

//指定日志级别Level 1

adb shell monkey -p com.tencent.WeChat –v -v 100

说明:日志级别 Level 1,提供较为详细的日志,包括每个发送到Activity的事件信息。

//指定日志级别Level 2

adb shell monkey -p com.tencent.WeChat –v -v -v 100

说明:日志级别 Level 2,提供最详细的日志,包括了测试中选中/未选中的Activity信息。

//指定用户操作(即事件)间的时延

adb shell monkey -p com.tencent.WeChat –throttle 3000 100

说明:throttle单位是毫秒。

//即使app崩溃,Monkey依然继续发送事件,直到事件数目达到目标值为止

adb shell monkey -p com.tencent.WeChat --ignore-crashes 1000

说明:用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用–ignore-crashes参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数达到1000为止。

//即使APP发生ANR,Monkey依然继续发送事件,直到事件数目达到目标值为止

adb shell monkey -p com.tencent.WeChat --ignore-timeouts 1000

说明:用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行如果使用–ignore-timeouts参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。

//APP发生许可证书错误时,Monkey依然继续发送事件,直到事件数目达到目标值为止

adb shell monkey -p com.tencent.WeChat --ignore-security-exceptions 1000

说明:用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用–ignore-security-exceptions 参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

//APP发生错误时,应用程序停止运行并保持在当前状态

adb shell monkey -p com.tencent.WeChat --kill-process-after-error 1000

说明:用于指定当应用程序发生错误时,是否停止其运行。如果使用–kill-process-after-error参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:系统并不会结束该应用程序的进程)。

//监视并报告Android系统本地代码的崩溃事件

adb shell monkey -p com.tencent.WeChat --monitor-native-crashes 1000

//调整触摸事件的百分比

adb shell monkey -p com.tencent.WeChat --pct-touch 10 1000

说明:–pct-{+事件类别}{+事件类别百分比}用于指定每种类别事件的百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比),–pct-touch {+百分比}用于调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。

//调整动作事件的百分比

adb shell monkey -p com.tencent.WeChat --pct-motion 20 1000

说明:调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)。

//调整轨迹事件的百分比

adb shell monkey -p com.tencent.WeChat --pct-trackball 30 1000

说明:调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。

//调整“基本”导航事件的百分比

adb shell monkey -p com.tencent.WeChat --pct-nav 40 1000

说明:调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)。

//调整主要导航事件的百分比

adb shell monkey -p com.tencent.WeChat --pct-majornav 50 1000

说明:调整主要导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)。

//调整系统按键事件的百分比

adb shell monkey -p com.tencent.WeChat --pct-syskeys 60 1000

说明:调整系统按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

//调整启动Activity的百分比

adb shell monkey -p com.tencent.WeChat --pct-anyevent 100 1000

说明:调整其它类型事件的百分比,它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮等。

//指定多个类型事件的百分比

adb shell monkey -p com.tencent.WeChat --pct-anyevent 50 --pct-appswitch 50 1000

注意:各事件类型的百分比总数不能超过100%。

以上文章,首发于微信公众号:ITester软件测试小栈,如果你想了解更多,欢迎扫描二维码关注。

APP测试之Monkey压力测试(一)相关推荐

  1. APP测试之Monkey压力测试(二)

    ------·今天距2020年85天·------ 这是ITester软件测试小栈第51次推文 大家好,我是coco小锦鲤 欢乐的假期即将走远 学习的号角继续吹响 延续昨天Monkey(一) 今天进军 ...

  2. App测试之Monkey压力测试

    什么是monkey? Monkey意指猴子,顽皮淘气.所以Monkey测试,顾名思义也就像猴子一样在软件上乱敲按键,猴子什么都不懂,就爱捣乱.Monkey原理也是类似,通过向系统发送伪随机的用户事件流 ...

  3. 对安卓手机上的APP做monkey压力测试

    之前对安卓手机上的APP做了monkey测试,今天来总结一下如何使用安卓自带的monkey命令去做测试. 首先,PC端要对安卓手机进行monkey测试的话,必须要有以下条件: 1.电脑中必须配有ADB ...

  4. android monkey压力测试(二)

    一.什么是Monkey 顾名思义,Monkey就是猴子,  Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试.  猴子什么都不懂, 只知道乱敲 通过Monkey程序模拟用户触摸屏幕.滑动T ...

  5. Android Monkey压力测试

    一. JAVA环境的搭建 安装jdk-8u151-windows-x64,可以到官网或者应用中心下载. JAVA环境变量的搭建: 在"我的电脑"-"属性"-&q ...

  6. 安卓app测试之Monkey日志分析《转载》

    安卓app测试之Monkey日志分析 链接:https://www.cnblogs.com/wuzm/p/10965762.html 转载于:https://www.cnblogs.com/bifen ...

  7. 伪mac android,Mac,android sdk,monkey压力测试,真机

    1.安装Android SDK http://down.tech.sina.com.cn/page/45703.html 新浪本地下载 安装android sdk,将android-sdk-macos ...

  8. android monkey压力测试,Android-Monkey 压力测试

    1.Monkey 介绍 Monkey是Android中一个对App进行压力测试的命令行工具,可以向系统发送伪随机的用户事件流对正在开发的App进行压力测试(模拟用户操作App).压力测试主要是为了提高 ...

  9. android 获取monkey日志_Android压力测试:monkey压力测试实战

    主要分享的主题是 Android App 专项测试, 通过 monkey 进行压力测试. 一.测试步骤 1.安装ADB 2.连接被测手机和电脑 3.打开CMD命令行 4.输入monkey命令 adb ...

最新文章

  1. nio selector
  2. 第一天 Requests库入门
  3. 阿里云宣布 Serverless 容器服务 弹性容器实例 ECI 正式商业化
  4. pb 修改数据窗口种指定字段位置_第三章 Python数据类型 容器
  5. 2021牛客OI赛前集训营-提高组(第五场)D-牛牛的border【SAM】
  6. vs 中使用32 位mysql_vs2010连接mysql数据库(含win32和x64两种平台)
  7. 《白帽子讲web安全》学习笔记 (3)
  8. 简单分享apache封IP的方法
  9. Mac 不能进入睡眠模式,如何修复?
  10. java基础语法(三)--运算符、控制语句
  11. sox处理mp3_SOX 音频处理
  12. word中写出打对号的框
  13. 如何将3d文件在网页中显示(webGL,three.js)
  14. 现货黄金规则如此简单吗?
  15. Visio中的内容另存为图片且不改变画质
  16. cgb2007-京淘day07
  17. FITC-PEG-Biotin,荧光素-聚乙二醇-生物素的相关检测
  18. Unity UGUI DoTween 学习笔记
  19. Hbase_Hbase 中 bloom filter 的设计与概念
  20. 用python画圣诞树的圣诞树代码

热门文章

  1. NOX的使用之学习篇【一】
  2. java设置imageview图片大小_java – 在android中设置imageview
  3. 成绩查看_2019一级建造师成绩已公布,赶紧来查看成绩吧
  4. 备考java二级_2017年计算机二级Java备考练习题库(2)
  5. word双引号间距大_微软判定:Word 编辑英文句号后“两个空格”为拼写异常
  6. bootstrap搜索框_Bootstrap 开源 SVG 图标库 Bootstrap Icons
  7. 雷林鹏分享:Laravel 安装
  8. Windows下pip安装scipy报错no lapack/blas resources found
  9. Apache的流处理技术概述
  10. JS进阶Date format(日期格式化)