软件测试 | 手把手教你快速掌握 Monkey 工具,指令参数+APK集合测试

1974 篇文章 51 订阅
1221 篇文章 21 订阅

在这里插入图片描述
做过压力测试的同朋友应该对monkey工具都不陌生!

Monkey是AndroidSDK中附带的一个工具。可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流,实现对正在开发的应用进行压力(稳定性)测试。

Monkey测试的特点:所有的事件都是随机产生的,不带任何人的主观性。今天我们来学习monkey工具,以及常用命令+APK集合测试。好了废话不多说,开始吧!

一、monkey简介

在android手机上做自动化测试,monkey比cts,Android Unit Test好用多了,他其实是继承与adbshell中的一段的shell指令。

Monkey测试的原理就是利用socket通讯的方式来模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。当Monkey程序在模拟器或设备运行的时候,如果用户触发了比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试软件。

Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/sdk/sdk/tools/lib/monkey.jar;Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/sdk/sdk/tools/bin/monkey,这样就可以通过在CMD窗口中执行:adbshellmonkey{+命令参数}来进行Monkey测试了。

google对monkey命令分了以下四类:

基本配置选项,如设置事件的数量、查看帮助信息等。

操作的约束,如通过包名限制哪些应用可以被测试。

事件的类型和频率,如点击事件占比多少、触摸事件又占多少以及事件之间的间隔时间等。

调试选项,如是否忽略crashes、ANR等。

二、monkey指令参数介绍

要获取Monkey命令自带的简单帮助,在CMD中执行命令:adbshellmonkey–help,这样子,就有他的各种各样的提示命令的参数。如下图:

图片

以下是各个约束限制的参数的释义:

(1)-p:参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。对包的指定有以下几种方式:

指定一个包指令如下。说明:com.example.sellClientAPP为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

在这里插入图片描述

指定多个包:

adbshellmonkey-pcom.htc.Weather–pcom.htc.pdfreader-p

com.htc.photo.widgets100

图片

不指定包:adbshellmonkey100,说明:Monkey随机启动APP并发送100个随机事件。

图片

要查看设备中所有的包,在CMD窗口中执行以下命令:

>adbshell

#cddata/data

#ls

(2)-v:用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下所示:

日志级别level0,示例如下,说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息相应源代码如图所示了,这十分有利于调试了。

adbshellmonkey-pcom.htc.Weather–v100

在这里插入图片描述

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

adbshellmonkey-pcom.htc.Weather–v-v100

日志级别Level2,示例如下,说明:最详细的日志,包括了测试中选中/未选中的Activity信息。

adbshellmonkey-pcom.htc.Weather–v-v–v100

(3)-s:用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。示例如下:

Monkey测试1:adbshellmonkey-pcom.htc.Weather–s10100

Monkey测试2:adbshellmonkey-pcom.htc.Weather–s10100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的。

(4)–throttle<毫秒>:用于指定用户操作(即事件)间的时延,单位是毫秒,示例如下:

adbshellmonkey-pcom.htc.Weather–throttle3000100

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

示例1:adbshellmonkey-pcom.htc.Weather--ignore-crashes1000


示例2:adbshellmonkey-pcom.htc.Weather1000

示例1说明: 测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止。

示例2说明: 测试过程中,如果Weather程序崩溃,Monkey将会停止运行。

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

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

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

(9)–monitor-native-crashes:用于指定是否监视并报告应用程序发生崩溃的本地代码。

(10)–pct-{+事件类别}{+事件类别百分比}:用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比),使用类型分别如下:

–pct-touch{+百分比}:调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。示例如下:

adbshellmonkey-pcom.htc.Weather--pct-touch101000

–pct-motion{+百分比}:调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)adbshellmonkey-p。示例如下:

com.htc.Weather--pct-motion201000

–pct-trackball{+百分比}:调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。示例如下:

adbshellmonkey-pcom.htc.Weather--pct-trackball301000

–pct-nav{+百分比}:调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)。示例如下:

adbshellmonkey-pcom.htc.Weather--pct-nav401000

–pct-majornav{+百分比}:调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)。示例如下:

adbshellmonkey-pcom.htc.Weather--pct-majornav501000

–pct-syskeys{+百分比}:调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、StartCall、EndCall及音量控制键)。示例如下:

adbshellmonkey-pcom.htc.Weather--pct-syskeys601000

–pct-appswitch{+百分比}:调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。示例如下:

在这里插入图片描述

–pct-anyevent{+百分比}:调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。示例如下:

在这里插入图片描述

–pct-anyevent:1001000*指定多个类型事件的百分比,注意:各事件类型的百分比总数不能超过100%。示例如下:

在这里插入图片描述

(11)–dbg-no-events:设置此参数,monkey将执行初始启动,进入到一个测试Activity后,不会进一步生成事件。

三、APK集合测试的设置方法

APK集合测试的设置方法APK应用集合分为黑名单和白名单,黑名单是指系统将执行除了黑名单中以外的apk;白名单则是只执行在白名单中的apk。

(1)黑名单的设置方法:

a.)创建一个名称为blacklist的txt文档,在文件中输入应用程序的包名,如mms应用,则在文件中输入com.android.mms;如果有多个应用程序不想被执行,则在文件中添加多个包名,注意包名与包名之间均用回车键。

b.) 将blacklist.txt的文件导入到手机的/data目录下,然后在执行monkey测试的时候使用–pkg-blacklist-file参数再加上blacklist文件的存储路径,其他的参数设置则和测试单一apk没有区别。

(2)白名单的设置方法:

白名单的设置方法和黑名单的设置方法基本一致,只是在创建txt文档的时候,文件的命令应为whitelist。在执行monkey的时候,只执行白名单中的应用。

补充说明:在执行monkey测试的时候,如果将monkey测试的日志存放在手机的sdcard或者其他目录下,在monkey测试命令的最后加上一个&符号,则可以再不连接USB的情况下继续执行monkey。

如:

monkey–pcom.android.mms–s100–throttle1000–v–v–v15000>/mnt/sdcard/monkey_test.txt&

下面是测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
在这里插入图片描述

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值