UI/ApplicationExerciser Monkey

魏风华
2023-12-01

UI/ApplicationExerciser Monkey

Monkey是一个程序,它运行在模拟器或设备上,生成伪随机的用户事件流,如点击、触摸、手势以及一些系统级的事件,使用它可以给程序用随机、可重复的操作进行压力测试。

概述

Monkey是一个命令行工具,可以运行在任何模拟器和设备上。

Monkey包含一些选项,大致可以划分为以下四种:

***基本的配置选项,如设置事件的个数。

***操作约束,如将测试限制为只针对单个包。

***时间类型和频率

***调试选项

Monkey生成事件并将它们发送到系统。它会监视系统,如果有以下三种情况,会有特定的处理:

***如果将Monkey限制为只在某个或者多个特定的包中运行,那么Monkey会监视那些将要发送给别的包的事件,并阻止这些事件的传递。

***如果应用崩溃了、或者是有没有处理的异常(unhandled exception),Monkey会停止运行,并报告这些错误。

***如果应用发生应用程序无响应(application not responding)的错误,Monkey会停止运行,并报告这些错误。

基本使用

可以使用命令行或者脚本来启动MonkeyMonkey 运行在模拟器或设备上,所以要在shell环境下来启动。可以在每个Monkey命令前加上adb shell;也可以先用命令adb shell 进入shell 环境,再直接用Monkey 命令。

基本的语法:

$ adbshell monkey [options] <event-count>

不加任何选项的话,Monkey会以静默模式启动,并向设备上的所有应用发送事件。下面这行命令会启动你的应用,给应用发送500个伪随机事件。

$ adbshell monkey -p your.package.name -v 500

命令选项参照表

类型

选项

描述

 

--help

 

-v

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别:Level 0(默认)提供启动提示、测试完成、最终结果等少量提示;Level 1提供了较多的信息,包括每个发送给Activity的事件信息;Level 2 提供了最多的信息,包括测试中选中/未选中Activity信息。

事件

-s <seed>

用于指定伪随机数生成的seed值,如果两次使用的seed值相同,则Monkey产生的事件序列也相同。

--throttle <milliseconds>

指定事件之间的延时,可以通过该选项来降低Monkey发送事件的速度。不设置的话就没有延时。

--ptc-touch <percent>

指定触摸事件的百分比(触摸事件是一个down-up事件,发生在屏幕的某一位置)

--ptc-motion <percent>

指定动作事件的百分比(动作事件由屏幕上某一位置的down事件、一系列的伪随机move事件以及一个up事件组成)

--ptc-trackball

<percent>

指定轨迹事件的百分比(轨迹事件由一个或多个move事件组成,有时还伴有点击事件)

--ptc-nav <percent>

基本的导航事件(导航事件由来自方向输入设备的up/down/left/right组成)

--ptc-majornav

<percent>

主要的导航事件(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

--ptc-syskey <percent>

系统按键(Home, Back, Start Call, End Call, or Volume controls

--ptc-appswitch <percent>

Activity 启动(在随机间隔,调用stactActivity,以最大的限度覆盖包中的所有Activity

约束

-p <allowed-package-name>

该选项可以指定一个或多个包,Monkey只允许系统访问这些包中Activity。如果需要访问其他包中的Activity(如选择联系人),需要再用该选项指定其他包。如果一个包都没有指定,Monkey允许系统启动所有包中的Activity。要指定多个包需要多次使用-p选项,一个-p选项指定一个包。

-c <main-category>

用指定的类别来限制Activity是否被Monkey启动。如果没有使用该选项,Monkey会选择有Intent_CATEGORY_LAUNCHERIntent_CATEGORY_MONKEY类别的Activity

调试

--dbg-no-events

设置此选项,Monkey会执行初始启动,进入到一个测试 Activity,但是不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个使Monkey能运  30 秒或更长时间的throttle结合起来,从而提供一个环境,可以监视应用所调用的包之间的切换。

 

--hprof

设置此选项,将在Monkey事件序列之前和之后立即生成 profiling报告。  这将会在data/misc 中生成大文件(~5Mb),所以要小心使用它。

 

--ignores-crashes

通常,Monkey会在应用崩溃或出现没有处理的异常时停止运行。如果设置此选项,Monkey不会停止运行,而是继续向系统发送没有发送完的事件。

 

--ignores-timeouts

通常,Monkey会在应用发生超时错误如应用程序无响应时停止运行。如果设置此选项,Monkey的处理同上。

 

--ignores-security-exceptions

权限错误(permissions

 

--kill-process-after-error

通常,Monkey会在发生错误之后停止运行,出错的应用将会继续运行。设置此选项之后,它会通知系统停止出错的进程。注意,正常的(成功的)结束并没有停止启动的进程,设备只是在结束事件之后简单的保持在最后的状态。

 

--monitor-native-crashes

监视native代码发生的错误。如果设置了--kill-process-after-error,则系统会停止运行

 

--wait-dbg

停止执行中的Monkey,直到有调试器和它连接上

 类似资料: