APP测试之Monkey压力测试(一)

摘要:
(1) 关于猴子猴子的意思是猴子,顽皮。所以猴子测试,顾名思义,就像猴子在软件上敲击按键一样。猴子什么都不懂,他们喜欢捣乱//获取APP包名称方法1:adbshelldumpsyactivity|grepmFocusedActivity方法2:查看设备中的所有包,并在cmd中执行以下命令window://Get应用程序包名称方法2:adbshellcddata/data,然后输入一些Monkey命令开始测试//当应用程序出现许可证错误时,Monkey继续发送事件,直到事件数达到目标值adbshellmonkey-pcom.tencent WeChat--忽略安全例外1000描述:用于指定当应用程序发生许可证错误后,Monkey是否停止运行。

(一)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:log1.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压力测试(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# 获取网络时间linux 应用程序直接读写寄存器或物理内存下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android应用图标微技巧,8.0系统中应用图标的适配

现在已经进入了2018年,Android 8.0系统也逐渐开始普及起来了。三星今年推出的最新旗舰机Galaxy S9已经搭载了Android 8.0系统,紧接着小米、华为、OV等国产手机厂商即将推出的新年旗舰机也会搭载Android 8.0系统。因此,现在已经是时候需要让我们的应用程序对Android 8.0系统进行适配了。 其实在去年Android 8...

广联达计价软件的初见

  1.前期准备 可爱的计价大佬一名(必须项 记得喂食!) 广联达计价软件一套,并安装完成(具体安装参照商家的指导!) 狗一只  牢记“狗号” 笔记本一台,最好没有杀毒等软件 需要计价的工程量清单一份 2.软件层面的具体操作步骤(以广西 的市政工程投标编制投标报价为例子) 1、更新最新的软件 使用:广联达G+工作台GWS 查找最新的计价软件,并下载...

为什么建议使用 Linux?从“白嫖”到精通,只需要这几步!

Windows系统,大家肯定不陌生!但我每次,打开Windows 系统的电脑,跳出的弹窗真是令人窒息,想关都关不完。 下载应用软件时,甚至还绑定了各种——多个应用软件打包下载。这时的我,脑子里只有“无语”二字。 而Linux 就很好地解决了这个问题,什么毒霸、管家,通通都不需要。那Linux 到底怎么样呢?我们一起来一探究竟! 01 Linux 是什么?...

[WCF安全系列]实例演示:TLS/SSL在WCF中的应用[SSL over TCP]

在接下来的系列文章中我们正是讨论关于身份认证的主题。在前面我们已经谈到了,WCF中的认证属于“双向认证”,既包括服务对客户端的认证(以下简称客户端认证),也包括客户端对服务的认证(以下简称服务认证)。客户端认证和服务认证从本质上并没有什么不同,无非都是被认证一方提供相应的用户凭证供对方对自己的身份进行验证。我们先来讨论服务认证,客户端认证放在后续的文章中。...

基于WebGL架构的3D可视化平台—三维设备管理(ThingJS实现楼宇设备管理3D可视化)

国内高层建筑不断兴建,它的特点是高度高、层数多、体量大。面积可达几万平方米到几十万平方米。这些建筑都是一个个庞然大物,高高的耸立在地面上,这是它的外观,而随之带来的内部的建筑设备也是大量的。为了提高设备利用率,合理地使用能源,加强对建筑设备状态的监视等,自然地就提出了楼宇自动化控制系统。下面我们将用ThingJS平台来模拟一个设备管理系统。 第一步,利用C...

各软件市场清单

前几天因为项目要上线搜索了一下安卓,iOS以及全平台的市场,网上有但不是很全。个人又总结了整理如下,有需要的同学就不用再费劲去查找了。                  安卓市场 序号 名字 网址 1 安卓在线 http://www.androidonline.net 2 安卓园 http:...