智能monkey之monkeyscript(一)

本文章转载于搜狗测试

作为移动端测试必须掌握的初级Android稳定性工具:monkey,提到它时,脑海里一般涌现出两句话:

1.我会用,很简单

就是一行命令,一回车就开始跑起来了

2.使用问题多,不好用

太随机,很多操作没意义

达到深层页面的概率极低

虽然加了各种忽略异常,但是monkey进程还是经常死掉

无法有针对性(指定页面or指定操作)的测试

等等

带着这些问题,将更智能的monkey介绍给大家

智能monkey之monkeyscript(一)

解决问题:

有针对性的指定操作进行稳定性测试

需求(参考搜狗搜索APP):

启动app,搜索1次,退出。重复1万次

Script:

type=user

count=10

speed=1.0

start data >>

LaunchActivity(com.sogou.activity.src, com.sogou.search.entry.EntryActivity)

UserWait(3000)

captureDispatchPointer(10,10,0,500,500,1,1,-1,1,1,0,0)

captureDispatchPointer(10,10,1,500,500,1,1,-1,1,1,0,0)

UserWait(500)

captureDispatchString(test)

UserWait(500)

captureDispatchPress(66)

UserWait(3000)

Drag(500,1500,500,500,500)

captureDispatchPress(4)

UserWait(1000)

captureDispatchPress(4)

captureDispatchPress(4)

script逐行解释:

type=user

count=10

speed=1.0

start data >>

#固定头部,参数和值均不影响脚本

LaunchActivity(com.sogou.activity.src, com.sogou.search.entry.EntryActivity)

#启动app,参数1:包名,参数2:主activity名

UserWait(1500)

#等待1500毫秒

captureDispatchPointer(10,10,0,500,500,1,1,-1,1,1,0,0)

#按下坐标500,500(搜索框位置)

captureDispatchPointer(10,10,1,500,500,1,1,-1,1,1,0,0)

#抬起坐标500,500(搜索框位置)

UserWait(500)

#等待500毫秒

captureDispatchString(test)

#在搜索框输入“test”

captureDispatchPress(66)

#输入回车进行搜索

UserWait(3000)

#等待3000毫秒

Drag(500,1500,500,500,500)

#上划浏览搜索结果页

captureDispatchPress(4)

#输入back回退至app首页

UserWait(500)

等待500毫秒

captureDispatchPress(4)

captureDispatchPress(4)

#双back退出app

运行:

1.将脚本保存命名(例test_search)

2.将脚本文件放置测试机中

adb shell mkdir /sdcard/script

#创建脚本文件夹

adb push test_search /sdcard/script

#将脚本文件push到文件夹

3.运行脚本文件1万次

adb shell monkey -f /sdcard/script/test_search10000

运行效果:

附件1

Monkeyscript API介绍

#单点事件

DispatchPointer(downTime,eventTime,action,x,y,pressure,size,metaStat,xPrecision,yPrecision,device,edgeFlags)

downTime,//touchdown的时间

eventTime,//touch时间发生的时间

action,//Action code: either {@link #ACTION_DOWN=0}, {@link #ACTION_UP=1}, or {@link #ACTION_MULTIPLE=2}.  如果时间是0,2,1可以模拟滑屏

x,//The X coordinate of this event.

y,//The Y coordinate of this event.

pressure,//The current pressure of this event.  The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure), however values higher than 1 may be generated depending on the calibration of the input device.

size,//A scaled value of the approximate size of the area being pressed touched with the finger. The actual value in pixels corresponding to the finger touch is normalized with a device specific range of values and scaled to a value between 0 and 1.

metaStatex//The state of any meta / modifier keys that were in effect when the event was generated.

xPrecision,//The precision of the X coordinate being reported.

yPrecision,//The precision of the Y coordinate being reported.

deviceId,//The id for the device that this event came from.  An id of zero indicates that the event didn't come from a physical device; other numbers are arbitrary and you shouldn't depend on the values.

edgeFlags,// A bitfield indicating which edges, if any, where touched by this MotionEvent

example:

DispatchPointer(0,0,0,830,1000,0,0,0,0,0,0,0);touchDown

DispatchPointer(0,0,1,830,1000,0,0,0,0,0,0,0);touchUp

#拖动

Drag(x1,y1,x2,y2,stepCount)

example:

快速下滑:Drag(300,500,300,300,15)

快速上滑:Drag(300,300,300,500,15)

#双指缩放

PinchZoom(xstart1,ystart1,xstart2,ystart2,xend2,yend2,xend1,yend1,step)

example:

#放大

PinchZoom(400,400,200,300,550,550,700,700,3);

#cmd: shell命令

RunCmd(cmd)

example

RunCmd(monkey -v1000)

#发送tap事件(一个touchdown和touch up事件),时间长可以模拟长按,时间单位为ms

Tap(x,y,tapDuration)

#启动唤醒设备

DeviceWakeUp()

#获取最后一个touch时间的点做长按

LongPress()

#按住duration时长

PressAndHold(x,y,duration)

#屏幕旋转

RotateScreen(rotationDegree,persist)

// rotationDegree只能支持0,90,180,270

// persist 0/1

// 对指定keycode模拟touch事件(keycode列表见尾部)

DispatchKey(downTime,eventTime,action,code,repeat,metaState,device,scancode)

// 对指定keycode模拟press事件

DispatchPress(KeyCode)

KEYCODE列表

电话键

键名描述键值

KEYCODE_CALL拨号键5

KEYCODE_ENDCALL挂机键6

KEYCODE_HOME按键Home3

KEYCODE_MENU菜单键82

KEYCODE_BACK返回键4

KEYCODE_SEARCH搜索键84

KEYCODE_CAMERA拍照键27

KEYCODE_FOCUS拍照对焦键80

KEYCODE_POWER电源键26

KEYCODE_NOTIFICATION通知键83

KEYCODE_MUTE话筒静音键91

KEYCODE_VOLUME_MUTE扬声器静音键164

KEYCODE_VOLUME_UP音量增加键24

KEYCODE_VOLUME_DOWN音量减小键25

控制键

键名描述键值

KEYCODE_ENTER回车键66

KEYCODE_ESCAPEESC键111

KEYCODE_DPAD_CENTER导航键 确定键23

KEYCODE_DPAD_UP导航键 向上19

KEYCODE_DPAD_DOWN导航键 向下20

KEYCODE_DPAD_LEFT导航键 向左21

KEYCODE_DPAD_RIGHT导航键 向右22

KEYCODE_MOVE_HOME光标移动到开始键122

KEYCODE_MOVE_END光标移动到末尾键123

KEYCODE_PAGE_UP向上翻页键92

KEYCODE_PAGE_DOWN向下翻页键93

KEYCODE_DEL退格键67

KEYCODE_FORWARD_DEL删除键112

KEYCODE_INSERT插入键124

KEYCODE_TABTab键61

KEYCODE_NUM_LOCK小键盘锁143

KEYCODE_CAPS_LOCK大写锁定键115

KEYCODE_BREAKBreak/Pause键121

KEYCODE_SCROLL_LOCK滚动锁定键116

KEYCODE_ZOOM_IN放大键168

KEYCODE_ZOOM_OUT缩小键169

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容