打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Monkey&Monkey Script
查看( 1023 )/ 评论( 0 )/ 评分( 0/ 0)

Android Monkey

一、Monkey

1.什么是monkey

Monkeyandroid自带的命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

2.Monkey用法

基本语法:adb shellmonkey [option]

例如:adb shell monkey –v –v –v –p com.android.test 500 (发送500个随机指令对com.android.test这个包进行测试)

option有如下:

[-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]

[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]

[--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]

[--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] ...]

[--throttle MILLISEC] [--randomize-throttle]

[--profile-wait MILLISEC]

[--device-sleep-time MILLISEC]

[--randomize-script]

[--script-log]

[--bugreport]

其中红色字体标出来的有一种用法为–f scriptfile这里就可以使用写的monkey脚本来实现

二、Monkey Script

1.什么是monkey script

Monkey script是按照一定的语法规则编写有序的用户事件流并适用于monkey命令工具的脚本。

2.Monkey script编写及运行

development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java源码下有一段注释规定了monkey script的基本规则,如下

/**

* monkey event queue. It takes a script. to produce events

*

* sample script. format:

* type= raw events

* count= 10

* speed= 1.0

* start data >>

* captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,

* 0.06666667,0,0.0,0.0,65539,0)

* captureDispatchKey(5113146,5113146,0,20,0,0,0,0)

* captureDispatchFlip(true)

* ...

*/

红色部分规定的就是monkey script的编写方法

type指明类型

count说明执行次数,但是这里改成任何值都执行一次,monkey命令可以指定执行次数,这里也就无所谓了

speed命令执行速率。改动无影响,可以通过monkey命令行指定。

以上三个参数改动都没什么影响,一般不做改动。

start data >>相当于一个入口,说明脚本从下面开始执行

例:

#Start Script

type = user

count = 49

speed = 1.0

start data >>

LaunchActivity(com.android.browser,com.android.browser.BrowserActivity)

UserWait(5000)

#open renren

captureDispatchPointer(5109520,5109520,0,1150,330,0,0,0,0,0,0,0);

captureDispatchPointer(5109521,5109521,1,1150,330,0,0,0,0,0,0,0);

UserWait(3000)

#close browser

captureDispatchPointer(5109520,5109520,0,205,31,0,0,0,0,0,0,0);

captureDispatchPointer(5109521,5109521,1,205,31,0,0,0,0,0,0,0);

UserWait(2000)

以上是在k91上浏览器操作的一个脚本。执行步骤为

1.打开浏览器

2.打开人人网

3.关闭浏览器

具体的操作步骤为:

1.将上述脚本复制到browser.txt

2.browser.txt放到sd卡根目录

3.adb shell monkey –v –v –v –f /sdcard/browser.txt –throttle 1500 100 > monkey.txt

脚本会按照browser.txt发送的指令序列每隔1.5s执行一个指令,执行100遍,并将log存在monkey.txt文件中。

在源码development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java中规定了如下api可以供用户使用

privatestaticfinalString EVENT_KEYWORD_POINTER ="DispatchPointer";

DispatchPointer(long downTime,long eventTime, int action,

float x, float y, float pressure, float size, int metaState,

float xPrecision, float yPrecision, int device, int edgeFlags)

privatestaticfinalString EVENT_KEYWORD_TRACKBALL ="DispatchTrackball";

DispatchTrackball(long downTime,long eventTime, int action,

float x, float y, float pressure, float size, int metaState,

float xPrecision, float yPrecision, int device, int edgeFlags)

privatestaticfinalString EVENT_KEYWORD_KEY ="DispatchKey";

DispatchKey(long downTime, long eventTime, int action, int code,

int repeat, int metaState, int device, int scancode)

privatestaticfinalString EVENT_KEYWORD_FLIP ="DispatchFlip";

DispatchFlip(boolean keyboardOpen)

privatestaticfinalString EVENT_KEYWORD_KEYPRESS ="DispatchPress";

DispatchPress(int keyCode)

privatestaticfinalString EVENT_KEYWORD_ACTIVITY ="LaunchActivity";

LaunchActivity(String pkg_name, String cl_name)

privatestaticfinalString EVENT_KEYWORD_INSTRUMENTATION ="LaunchInstrumentation";

LaunchInstrumentation(String test_name, String runner_name)

privatestaticfinalString EVENT_KEYWORD_WAIT ="UserWait";

UserWait(long sleeptime)

privatestaticfinalString EVENT_KEYWORD_LONGPRESS ="LongPress";

LongPress(int keyCode)

privatestaticfinalString EVENT_KEYWORD_POWERLOG ="PowerLog";

PowerLog(String power_log_type)

PowerLog(String power_log_type, String test_case_status)

privatestaticfinalString EVENT_KEYWORD_WRITEPOWERLOG ="WriteLog";

WriteLog: write power log to sdcard

privatestaticfinalString EVENT_KEYWORD_RUNCMD ="RunCmd";

RunCmd(String cmd):执行cmd命令

private

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
android 大图片拖拽并缩放实现原理
Android 基于Zxing的二维码扫描优化
在Android上使用Tensorflow
C#调用C++动态链接库中的函数指针与函数指针结构
关于第5章的全部习题答案总结!!! - 《JAVA开发实战经典》答疑专区 - 魔乐MLDN java学习社区-魔乐科技 JAVA论坛|JAVA培训论坛|MLDN论坛|MLDN社区|MLDN视频下载 -JAVA学习论坛
最完美的C#网络测速(Ping)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服