Android测试命令行工具Monkey使用教程【转】

Monkey是什么

Monkey是可以运行在模拟器里或实际设备中的程序。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

Monkey简介

Monkey是一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。Monkey包括许多选项,它们大致分为四大类:

· 基本配置选项,如设置尝试的事件数量。

· 运行约束选项,如设置只对单独的一个包进行测试。

· 事件类型和频率。

· 调试选项。

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

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

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

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

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

Monkey的基本用法 

可以通过开发机器上的命令行或脚本来启动Monkey。由于Monkey运行在模拟器/设备环境中,所以必须用其环境中的shell来进行启动。可以通过在每条命令前加上adb shell来达到目的,也可以进入Shell后直接输入Monkey命令。基本语法如下:
$ adb shell monkey [options] 
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:
$ adb shell monkey -p your.package.name -v 500

命令选项参考

Category Option 描述
General
常规
--help 列出简单的用法。
-v 命令行的每一个-v将增加反馈信息的级别。Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息。Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
Events
事件
-s <seed> 伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。
--throttle <milliseconds> 在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。
--pct-touch <percent> Adjust percentage of touch events. (Touch events are a down-up event in a single place on the screen.)
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。
--pct-motion <percent> 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)。
--pct-trackball <percent> 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。
--pct-nav <percent> 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)。
--pct-majornav <percent> 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
--pct-syskeys <percent> 调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)。
--pct-appswitch <percent> 调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。
--pct-anyevent <percent> 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。
Constraints
约束限制
-p <allowed-package-name> 如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包。

使用Monkey流程

总的来说使用monkey进行测试是比较简单的,只是需要做一些比较复杂的准备工作。下面详解测试步骤(很简单的哦),所讲内容是建立在已经配置好ADB环境的基础上(如果这部分不清楚请先google一下先配置好环境,这里不做描述)。

1、ADB连接Android测试设备。

2、确定你要测试的应用的PackageName。

3、使用Monkey发一条测试命令。

步骤详解

步骤确实很简单吧。不敢保证读者都明白如何去完成上面的步骤,这里讲讲每步如何做。

1、ADB连接Android测试设备。

如果你用的是模拟器,那么启动后通常是已经连在ADB上了。对于真机来说两种方式都可以:

方式一:使用USB把Android设备接到PC上,然后装上驱动(不好找驱动的话就用豌豆荚吧)。

方式二:首先得确保你的Android已经成功root了,那么可以使用wifi无线连接。①下载一个wifi adb应用装在你的android设备上;②在android上打开wifi adb;③在pc上的命令行中输入wifi adb中显示的那部分内容:adb connect 192.168.x.x,命令行中显示connected 192.168.x.x那么说明连接好了。

我比较喜欢方式二,这样可以不用去下载驱动(主要是驱动很多都不稳定),而且不伤害电池。长时间插在USB上对电池始终是不好的。只不过这种方式设备一旦休眠那么就可能需要重连。

2、确定你要测试的应用的PackageName。

先说明一下这里讲的方法是通用的,而网上其他方法获取PackageName不然不通用(因为他是建立在root的基础上的,我不敢保证你的设备已经root)。

①在android设备上点击一下你要测试的设备,然后就不用操作设备了。

②在PC上的命令行输入:adb logcat>D:/log.txt *:I

在这里的D:/log.txt你可以改成其他的路径,但是一定要先确保路径下没有这个文件,不然的话你以前的文件就被改掉了,一定要小心。

③按下Ctrl+c先停掉(为了避免过多的新信息)。打开刚刚的那个文件D:/log.txt。从文件最下面开始找下面格式的信息

I/ActivityManager( 数字): Displayed 包名/类名: +数字ms

例如我的信息如下:

I/ActivityManager(  272): Displayed com.vane/.act.ActLauncher: +315ms

不过你可能会发现有很多这种格式的信息,到底哪个才是你需要的呢,如果你严格按照刚刚的步骤做的话,那么很可能是最下面那条信息,即使不是那么也肯定是最下面几条信息中的某一条,这需要你根据应用进行辨别。

④记下你刚刚得到的包名,例子中的包名为“com.vane”。马上就会用。

3、使用Monkey发一条测试命令。

这一步就比较简单了。直接在pc上的命令行输入:adb shell monkey -p com.vane -v 50

备注:上面命令中的com.vane就是之前获得的包名;命令中的参数你可以自己根据需要参考上面的参数文档进行修改。

4、观察android设备,直到Monkey停止。

5、如果应用崩溃的话就好分析一下Monkey中的信息。

总结

Monkey的使用确实比较简单,但是在测试中确有不小的作用,值得使用。

时间: 2024-10-27 19:08:37

Android测试命令行工具Monkey使用教程【转】的相关文章

Android命令行工具

Android命令行工具 查看apk相关信息,例如versionCode,versionName等     $SDK_ROOT/build-tools/21.1.2/aapt.exe aapt dump badging xxxx.apk

Android命令行工具logcat详细用法!

logcat是Android中一个命令行工具,可以用于得到程序的log信息. 见板凳详细说明!     本贴内容来自网络,引用网址为:http://hi.baidu.com/%C9%C1%D2%AB%B5%C4%CB%AE%BD%A7/blog/item/7cc9e1d00715dc369b50271d.html. [造成的版权问题,LZ概不负责任!转载请注明出处],此贴为技术交流帖,若有疑问请跟贴回复!谢谢! Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系

android app 压力测试工具-monkey tool

一.什么是Monkey? Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法. 二.Monkey的特征1.测试的对象仅为应用程序包,有一定

Android自动化测试基础知识——MONKEY测试工具(转的)

本周开始启动手机输入法simeiji的自动化测试,同时开始接触手机浏览器自动化测试.接下来会对android自动化测试工具和方法做一个专题研究. 第一篇介绍monkey测试工具. 1 自动化测试背景 软件测试是软件产品开发过程中的重要环节.测试对于发现软件中缺陷,保障软件的质量具有重要意义.统计表明,软件测试的时间通常占到软件开发时间的 40%,一些可靠性要求高的软件甚至高达 60%以上.         手工测试和自动化测试是软件测试的两种基本手段,二者相互补充,不可相互替代.其中,自动化测试

Android自动化测试工具——monkey简介及入门

记得第二家单位的安卓开发在上线前都用monkey压几个小时,确实也能发现些问题,崩溃率低了些,没测过的确实可以压一压 搜了下资料,monkey确实很简单,发现问题自己搜下是什么问题,别一发现什么就跑去问开发 下面介绍下monkey的原理 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法. Mo

使用命令行工具将Android应用转换成BlackBerry PlayBook应用

昨天写了篇文章关于Android应用转换的,通过BlackBerry的在线转换工具将Android应用转换成BlackBerry PlayBook应用.有网友反映说方法有点麻烦,所以今天补上新的转换方法:使用命令行工具将Android应用转换成BlackBerry PlayBook应用. 首先要强调的是命令行工具使用起来虽然比较方便,但是对使用者有一定要求.而使用在线的网页进行转换虽然步骤比较多,但是操作比较简单.所以,对于初步接触的同学来讲,建议还是使用上一篇博文的在线转换工具比较好. 如果准

一个使用命令行编译Android项目的工具类

一个使用命令行编译Android项目的工具类 简介 编译apk项目需要使用的几个工具,基本都在sdk中,它们分别是(Windows系统): 1.aapt.exe 资源打包工具 2.android.jar Android编译工具 3.dx.bat dex文件生成工具 4.sdklib.jar 生成apk 5.jarsigner 签名工具 准备 在打包前,需要的环境如下: 1.JDK1.6+ 2.Android SDK 3.上述5个工具的路径 打包过程 1.生成R.java文件 比如: aapt p

利用ADB和Settings命令行工具轻松的攻击Android手机

从4.2开始,Android提供了一个命令行工具settings.这个工具用于帮助构造SettingProvider的客户端代理,从而可以方便的进行系统设置项的读取和设置. 但是这个工具和adb配合起来,将对Android的安全构成极大的威胁.因为通过adb来执行settings时的时候,uid是shell,而shell拥有非常多的特权. 当然,问题的根源在于adb的shell权限太高,毕竟即使没有settings这个工具(或者说没有/system/framework/settings.jar文

7.0、Android Studio命令行工具

命令行工具分成SDK工具和平台工具. SDK工具 SDK工具跟随SDK安装包安装并随时更新. Virtual Device 工具 1. Android Virtual Device Manager 提供了一个图形化的图形用户接口,你可以创建和管理运行在Android虚拟机中的AVD. 2. Android Emulator 基于QEMU的设备虚拟机,允许你在实时的Android运行环境中调试和测试你的应用. 3. mksdcard 帮助你创建一个磁盘镜像 Development 工具 1. Hi