该文章的原创pdf文档下载地址为:链接:

​http://pan.baidu.com/s/1qYhC3ik​

密码: 7buf

Monkey综述



简述



        monkey是一个命令行工具,可以在任何模拟器或设备上运行。它发送用户事件的伪随机流进入系统,用以充当正在开发的应用软件的压力测试。monkey包括许多选择,但它们分解为四个主要的类别:



  • 基本配置选项,如设置事件尝试的数量
  • 业务限制,如限制测试到单个封装中
  • 事件的类型和频率
  • 调试选项


当monkey运行时,它生成事件并将其发送到系统。它也监视被测系统,并查找三个条件,其中特别对待:



  • 如果限制了monkey在一个或多个特定的软件包运行时,它监视那些尝试导航到其他包的软件包,并阻止他们。
  • 如果应用程序崩溃或收到任何形式的未处理的异常,Monkey将停止运行并报告错误。
  • 如果应用程序产生不响应错误的应用程序,Monkey将停止运行并报告错误。


根据所选择的详细程度,可以看到monkey的进度报告和正在生成的事件。



基本使用



        可以使用开发机或从脚本命令行启动monkey。因为monkey在模拟器/设备环境下运行,必须在shell环境中启动。也可以通过adb shell每一个命令去实现,或通过输入shell和直接输入monkey命令做到这一点。基本语法是:






 

 



 

$ adb shell monkey [options] <event-count>




 




        如果不指定任何选项,Monkey将在一个安静的(非冗余)模式下启动,并会发送事件的任何(所有)到设备上安装的包中。这里有一个更典型的命令行,这将启动应用程序,并送500的伪随机事件:






 

 



 



 



 

$ adb shell monkey -p your.package.name -v 500





命令选项参考



        下表列出了所有选项,这些选项可以使用在monkey命令行中:




类别



选项



描述



General



​--help​



打印简单的使用指南



​-v​



在命令行上的每一个-v将增加详细级别。级别0(默认值)提供的信息有点出乎启动通知,测试完成和最终结果。 Level 1提供更多细节的测试,因为它运行时,如单个事件被发送到你的活动。 2级提供了诸如评选活动或未选中测试更详细的设置信息。



Events



​-s <seed>​



为伪随机数发生器的seed值。如果重新运行使用相同的seed值的monkey,它会产生相同的事件序列



​--throttle <milliseconds>​



插入事件之间的固定的延迟。可以使用此选项将monkey放缓。如果未指定,没有延迟和事件被尽可能快地产生。



​--pct-touch <percent>​



调整触摸事件的百分比。(触摸事件是在屏幕上的一个位置的down_up事件)。



​--pct-motion <percent>​



调整动作事件的百分比。(运动事件某处包括一个点击事件的屏幕,一系列伪随机运动的上,并且一个事件)。



​--pct-trackball <percent>​



调整轨迹球事件的百分比。(轨迹球事件由一个或多个随机的动作,有时后跟一个点击。)



​--pct-nav <percent>​



调整“基本”导航事件的百分比。(导航事件包括上/下/左/右,如从一个方向输入装置输入)。



​--pct-majornav <percent>​



调整“主要”导航事件的百分比。(这些导航事件通常引发图形界面中的动作,如在5个方向按键中间键,返回键,菜单按键)。



​--pct-syskeys <percent>​



调整“系统”按键事件的百分比。(这些是通常被保留,由系统,如家,后退,开始呼叫,结束呼叫,或音量控制键使用。)



​--pct-appswitch <percent>​



调整活动推出的百分比。在随机时间间隔,monkey会发出startActivity()调用,为包内所有最大化活动的覆盖方式。



​--pct-anyevent <percent>​



调整其它类型的事件的百分比。这是一个包罗万象的所有其他类型的事件,如按键,设备上的其他不常用的按键,等等。



 




 




类别



选项



描述



Constraints



​-p <allowed-package-name>​



如果指定了一个或多个包,Monkey将只允许系统对这些包中参观活动。如果应用程序需要访问其他包中的活动(例如选择一个联系人),需要指定一些工具包。如果不指定任何包,Monkey将允许系统在所有软件包推出的活动。要指定多个包,使用-p选项多次 - 每一个软件包-p选项



​-c <main-category>​



如果指定了一个或多个类别,Monkey将只允许系统访问列出与指定类别之一的活动。如果不指定任何类别,Monkey将选择类别Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY上市活动。要指定多个类别,使用-c选项多次 - 每个分类一-c选项。



Debugging



​--dbg-no-events​



当指定,Monkey将执行初始启动到测试活动,但不会产生任何进一步的事件。为获得最佳效果,结合-v,一个或多个包的限制,和非零油门保持monkey运行30秒以上。这就提供了可以监视应用程序所调用包过渡的环境。



​--hprof​



如果设置,此选项将产生紧接monkey事件序列后,分析报告。这将在数据/秒(〜5Mb的)文件,因此要谨慎使用。见Traceview关于跟踪文件的详细信息。



​--ignore-crashes​



通常情况下,当应用程序崩溃或发生任何未处理的异常的Monkey将停止运行。如果指定了此选项,Monkey将继续发送事件到系统中,直到计数完成。



​--ignore-timeouts​



通常情况下,当应用程序发生任何超时错误的Monkey将停止运行,如“应用程序没有响应”对话框。如果指定了此选项,Monkey将继续发送事件到系统中,直到计数完成



​--ignore-security-exceptions​



通常情况下,当应用程序发生任何权限错误,例如,如果尝试启动需要一定权限的活动Monkey将停止运行。如果指定了此选项,Monkey将继续发送事件到系统中,直到计数完成。



​--kill-process-after-error​



通常情况下,当Monkey停止由于错误,失败的应用程序将保持运行。当这个选项被设置时,它会发出信号系统停止在错误发生的过程。注意,一个普通(成功)完成下,所述启动的过程(一个或多个)不停止,该装置简单地留在最后的状态的最后的事件之后。



​--monitor-native-crashes​



在Android系统原生代码为发生监视和报告崩溃。如果--kill-过程后,错误设置时,系统将停止运行。



​--wait-dbg​



从执行,直到调试器附加到它停止monkey