环境说明:win10 Android SDK(adb) JDK 1.8
MonkeyScript
MS 是官方提供的,除了像猴子一样随机乱点之外,还可以通过编写脚本的形式,完成一系列固定的操作。MS 提供一整套完善的 API 来进行支持,主要还是基于坐标点的操作,包含常用的:点击、长按、输入、等待等操作。
脚本用法
1、LaunchActivity(pkg_name, cl_name):启动应用的Activity。参数:包名和启动的Activity。
2、Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。
3、UserWait(sleepTime): 休眠一段时间
4、DispatchPress(keyName): 按键。参数: keycode。
5、RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。
6、DispatchString(input): 输入字符串。
7、DispatchFlip(true/false): 打开或者关闭软键盘。
8、PressAndHold(x, y, pressDuration): 模拟长按事件。
9、Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作。
10、PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。
LongPress(): 长按2秒。
11、DeviceWakeUp(): 唤醒屏幕。
12、PowerLog(power_log_type, test_case_status): 模拟电池电量信息。
13、WriteLog(): 将电池信息写入sd卡。
14、RunCmd(cmd): 运行shell命令。
15、DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,发送单个手势。
16、DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 发送按键消息。
17、LaunchInstrumentation(test_name,runner_name): 运行一个instrumentation测试用例。
18、DispatchTrackball: 模拟发送轨迹球事件。
19、ProfileWait: 等待5秒。
20、StartCaptureFramerate(): 获取帧率。
21、EndCaptureFramerate(input): 结束获取帧率。
脚本规格
#头部信息 type = raw events count =1 speed = 1.0
#启动测试 start data >>
具体例子:
#头部信息 type = raw events count =1 speed = 1.0 #启动测试 start data >> LaunchActivity(com.tt.test, com.com.tt.test.MainActivity) #点击登录 Tap(116,330,3000) UserWait(2000) #选择密码登录 Tap(140,543, 3000) UserWait(2000) #点击账号输入框 Tap(226,543,2000) UserWait(2000) #输入账号 DispatchString(966104405) UserWait(2000) #点击密码输入框 UserWait(2000) Tap(221,730, 2000) #输入密码 UserWait(2000) DispatchString(123456) UserWait(2000) #点击登录 Tap(140,961,2000)
用例执行:
把用例传到手机上,然后用adb命令执行:
adb push D:\mon.mks /sdcard adb shell monkey -f /sdcard/mon.mks -v 1 #1代表执行次数,可以参考monkey的命令 #脚本执行也时基于Monkey命令,两者结合使用
Monkey 介绍
Monkey测试时Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕,滑动Trackall、按键等操作来对设备上的程序进行压力测试,检查程序多久的时间会发生异常。
Monkey 用法
基本语法:
$ adb shell monkey [packageName] [options] #实例 $ adb shell monkey -p com.tencent.test --pct-touch 30 -v 500
可选参数如下:
九个事件
--pct-touch <percent> 0
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)(——点击事件,涉及down、up)
--pct-motion <percent> 1
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成) (——注:move事件,涉及down、up、move三个事件)
--pct-trackball <percent> 2
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)--(轨迹球)
--pct-nav <percent> 3
调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
--pct-majornav <percent> 4
调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
--pct-syskeys <percent> 5
调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)
--pct-appswitch <percent> 6
调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。(从一个Activity跳转到另一个Activity)
--pct-flip <percent> 7
调整“键盘翻转”事件的百分比。
--pct-anyevent <percent> 8
调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。
红色的数字对应下面百分比对应的数字。比如下图中0:15.0%,表示分配--pct-touch事件15%。测试100次分配15次测试down-up。
百分比控制
如果在monkey参数中不指定上述参数,这些动作都是随机分配的,9个动作其每个动作分配的百分比之和为100%,我们可以通过添加命令选项来控制每个事件的百分比,进而可以将操作限制在一定的范围内。
参考文章: