您的当前位置:首页正文

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

2023-03-13 来源:钮旅网
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

命令选项参考

CategorOption y General --help 常规 -v 描述 列出简单的用法。 命令行的每一个-v将增加反馈信息的级别。Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息。Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。 伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。 Events -s 事件 --在事件之间插入固定延迟。通过这个选项可以减缓throttle 将不会被延迟,事件将尽可能快地被产成。 --pct-Adjust percentage of touch events. (Toutouch up event in a single place on the screen.) 调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。 --pct-调整动作事件的百分比(动作事件由屏幕上某处的motion 件组成)。 --pct-调整轨迹事件的百分比(轨迹事件由一个或几个随trackball --pct-调整“基本”导航事件的百分比(导航事件由来自nav 方向输入设备的up/down/left/right组成)。 --pct-调整“主要”导航事件的百分比(这些导航事件通majornav 按键、回退按键、菜单按键) --pct-调整“系统”按键事件的百分比(这些按键通常被syskeys Start Call、End Call及音量控制键)。 --pct-调整启动Activity的百分比。在随机间隔里,appswitch 大程度覆盖包中全部Activity的一种方法。 --pct-调整其它类型事件的百分比。它包罗了所有其它类anyevent 等。 Constra-p 约束限制 如果用此参数指定了一个或几个包,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的使用确实比较简单,但是在测试中确有不小的作用,值得使用。

因篇幅问题不能全部显示,请点此查看更多更全内容