monkey自动化测试(命令行)

栏目: 编程工具 · 发布时间: 6年前

内容简介:Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。(其实可以想象成一只猴子啥都不知道,疯狂乱敲......) monkey的特点 Monkey 程序是由 Android 系统自带,使用 Java 语言写成。在Android文件系统中的存放路径是:Monkey.jar程序是由一个名为“monkey”的She

Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。(其实可以想象成一只猴子啥都不知道,疯狂乱敲......) monkey的特点 Monkey 程序是由 Android 系统自带,使用 Java 语言写成。在Android文件系统中的存放路径是:

/system/framework/monkey.jar;
复制代码

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

/system/bin/monkey;
复制代码

也就是说monkey可以直接通过打包进测试 工具 中,被测试人员直接使用,网络上许多第三方的monkey工具就是通过对原生的Monkey.jar包进行二次开发实现。 Monkey测试的停止条件

如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。 如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错,前提在于没有配置crash继续执行的操作下。 如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错,前提在于没有配置ANR继续执行的操作下

Monkey 架构

Monkey 运行在设备或模拟器上面,可以脱离PC运行(一般在一些大公司中都是将其抽离成一个测试专用的APP工具,使用相应的操作来完成测试,不过楼主暂时没有找到比较好的二次开发工具,希望有大神可以指导一下)

monkey自动化测试(命令行)

Monkey启动架构图

Monkey的基本用法 由于Monkey的命令行过多,这里选择比较常用的操作命令行来做引申讲解,有兴趣的朋友可以到google官网继续学习。

monkey自动化测试(命令行)

基本语法如下:

adb shell monkey [options]
复制代码

例如: monkey -p your.package.name -v 500

如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件。

可以在Android Studio中可以直接使用,但是也可以在android sdk中的platform-tools目录下,直接cmd输入命令 adb shell 。

monkey自动化测试(命令行)

接下来就开始啃啃这块最难的硬骨头:

1、允许启动手机里面所有的 App , 随机操作 1000 次

adb shell monkey 1000
复制代码

2、-p : 允许启动 App 的包名

启动一个包名的应用 由于楼主的手机是小米手机,所以测试小米的计算器功能,其包名为com.miui.calculator,具体命令行为:

adb shell monkey -p com.miui.calculator 1000
复制代码

最终效果是monkey会调用小米自带的计算器功能运行1000次。

启动一个包名的应用 在一些讲解命令行时,只讲到单APP的调试,但是monkey具备同时对多设备进行调试的能力,只需要增加多个 -p 包名字段就可以实现。

adb shell monkey -p com.miui.calculator -p com.android.thememanager 1000
复制代码

该命令行可以实现对多个应用进行开启的功能。

3、-v : 操作日志记录 命令行不同个数的-v会有不同的效果

-vLevel 0(缺省值)除 启动提示、测试完成和最终结果之外,提供较少信息。
-v -v Level 1提供较为详细的测试信息,如逐个发送到Activity 事件。
-v -v -v Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity
如:

复制代码
adb shell monkey -p com.miui.calculator -v -v -v 1000
复制代码

4、-s 伪随机数生成器的seed值 测试为了人员能够重现测试到的bug问题,需要能够对Monkey的随机生成事件有重现能力,monkey允许对随机事件的seed值做设置,当两次seed值一样,整个测试效果将会产生相同的事件序列。

adb shell monkey -p com.miui.calculator -s 12345 -v 1000
复制代码

5、--ignore-crashes 忽略崩溃/--ignore-timeouts 忽略超时/--ignore-security-exceptions 忽略安全异常 一般情况下,APP在操作过程中会存在崩溃、超时、异常等情况,按照前面所提到的,这会导致monkey直接停止测试。如果想要忽略掉这些情况,直接配置忽略设置就可以了。ps:这里的超时并不是网络超时,而是相应超时导致的ANR。

adb shell monkey 
 -p com.miui.calculator
 --ignore-crashes --ignore-timeouts --ignore-security-exceptions
 -v 1000
复制代码

6.--throttle : 事件之间加入延时操作 在某些不需要频率过快,或需要定频率进行交互时,可以采用--throttle来做事件之间的延时操作。

·adb shell monkey -p com.miui.calculator --throttle 500 -v 1000

复制代码

7、指定Monkey事件 在Monkey中,虽然输入的事件是随机产生的,但是可以指定输入事件类型的百分比,让其控制在我们需要的范围内。 在Monkey中,可以设定的事件类型有:

* --pct-touch <percent>:指定触摸事件的百分比。

  * --pct-motion <percent>:指定滑动事件的百分比。

  * --pct-trackball <percent>:指定轨迹球事件的百分比。

  * --pct-nav <percent>:指定导航事件中,updownleftright等事件的百分比。

  * --pct-majornav <percent>:指定导航事件中,backmenu等事件的百分比。

  * --pct-syskeys <percent>:指定系统按键的百分比,包括HOMEBack、音量等。

  * --pct-appswitch <percent>:指定Activity之间切换的比例。

  * --pct-anyevent <percent>:指定任意事件的百分比。
复制代码

其中,当不作任何配置的时候,默认为--pct-anyevent ,此时所有事件的触发均为随机的。当所有事件的百分比加起重来小于100%的时候,多余的随机事件也将被转化为--pct-anyevent 事件。超过时,系统会重新运算相应的比例。 到此,基本的命令行就已经讲解完毕,如果还有需要的配置命令行,请参考--help进行拓展,这里就不赘述,最后附上命令行:

adb shell --help
复制代码

最终效果粘贴在下面:

usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]//调试的应用包名
              [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]//测试对应的categrory
              [--ignore-crashes] [--ignore-timeouts]
              [--ignore-security-exceptions]
              [--monitor-native-crashes] [--ignore-native-crashes]//忽略系列的大爷们
              [--kill-process-after-error] [--hprof]//默认
              [--pct-touch PERCENT] [--pct-motion PERCENT]
              [--pct-trackball PERCENT] [--pct-syskeys PERCENT]
              [--pct-nav PERCENT] [--pct-majornav PERCENT]
              [--pct-appswitch PERCENT] [--pct-flip PERCENT]
              [--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]//事件百分比设置
              [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
              [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
              [--wait-dbg] [--dbg-no-events]
              [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
              [--port port]
              [-s SEED] [-v [-v] ...]//设置随机数生成器的seed值
              [--throttle MILLISEC] [--randomize-throttle]//延时操作
              [--profile-wait MILLISEC]
              [--device-sleep-time MILLISEC]
              [--randomize-script]
              [--script-log]
              [--bugreport]
              [--periodic-bugreport]
              COUNT
复制代码

如何关闭monkey

monkey在运行过程中就算PC拔掉USB数据线,也会继续进行,但是在某些情况下,将我们需要monkey关掉。这需要强制将正在运行monkey。 首先。使用

adb shell
ps | grep monkey
kill pid(前面会输出)
复制代码

以上所述就是小编给大家介绍的《monkey自动化测试(命令行)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript and Ajax for the Web, Sixth Edition

JavaScript and Ajax for the Web, Sixth Edition

Tom Negrino、Dori Smith / Peachpit Press / August 28, 2006 / $24.99

Book Description Need to learn JavaScript fast? This best-selling reference’s visual format and step-by-step, task-based instructions will have you up and running with JavaScript in no time. In thi......一起来看看 《JavaScript and Ajax for the Web, Sixth Edition》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具