安卓自动化测试Momkey 自定义脚本实现自动化

环境说明: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%,我们可以通过添加命令选项来控制每个事件的百分比,进而可以将操作限制在一定的范围内。

参考文章:

https://blog.csdn.net/sinat_41688684/article/details/82868809?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-9.control&dist_request_id=630237c5-0350-4a53-a718-1be732f26049&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-9.control

https://blog.csdn.net/huangwei858/article/details/47660581

原文地址:https://www.cnblogs.com/shoebill/p/14437459.html