monkey 自定义脚本(七)

常规Monkey测试执行的是随机的事件流, 但如果只是想让Monkey测试某个特定场景(执行固定的事件流) 呢? 这时候就需要用到自定义脚本了, Monkey支持执行用户自定义脚本的测试, 用户只需要按照Monkey脚本的规范编写好脚本, 存放到手机上, 启动Monkey通过-f scriptfile参数调用脚本即可。

常规使用API

LaunchActivity(pkg_name, cl_name):启动应用的Activity。参数:包名和启动的Activity。
Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。
DispatchPress(keyName): 按键。参数: keycode。 
RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。
DispatchFlip(true/false): 打开或者关闭软键盘。
LongPress(): 长按2秒。
PressAndHold(x, y, pressDuration): 模拟长按事件。
DispatchString(input): 输入字符串。
Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作。

PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势:即两个手指同时向下按,再同时放开
UserWait(sleepTime): 休眠一段时间

DeviceWakeUp(): 唤醒屏幕。

PowerLog(power_log_type, test_case_status): 模拟电池电量信息。

WriteLog(): 将电池信息写入sd卡。

RunCmd(cmd): 运行shell命令。

DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,发送单个手势。

DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 发送按键消息。

LaunchInstrumentation(test_name,runner_name): 运行一个instrumentation测试用例。

DispatchTrackball: 模拟发送轨迹球事件。

ProfileWait: 等待5秒。

StartCaptureFramerate():  获取帧率。

EndCaptureFramerate(input): 结束获取帧率。

Monkey自定义脚本的编写

#头文件, 控制
Monkey发送消息的参数, 固定写即可
#脚本类型, 一般不用更改
type=raw events
#脚本执行次数, 但是由于
Monkey命令本身可以指定执行次数, 所以这里的设置是不生效的
count=10
#命令执行速率, 速率也可以通过
Monkey命令设置, 这里的设置是不生效的
speed=1.0
#以下为
Monkey命令
start data>>
LaunchActivity(pkg_name,cl_name)
DispatchPress(KEYCODE_HOME)

技巧: Monkey脚本只能通过坐标的方式来定位点击和移动事件的屏幕位置, 这里就需要提前获取坐标信息。 获取坐标信
息的方法很多, 最简单的方法就是打开手机中的开发人员选项, 打开“显示指针位置”。 随后, 在屏幕上的每次操作, 在导航栏上都会
显示坐标信息。

下面来看一个简单的例子:
这里案例的是应用宝App, 测试的操作是打开应用宝, 点击输入框, 输入“yyb”, 点击搜索。 搜索完成后, 点击返回键返回应用宝首页。

首先, 将在本地编写需要的测试脚本命名为monkey.script(文件格式无要求)


#启动测试
type = user
count = 49
speed = 1.0
start data >>
#启动应用宝
LaunchActivity(com.tencent.android.qqdownloader,com.tencent.assistant.activity.SplashActivity)
UserWait(2000)
#点击搜索框
Tap(463,150,1000)
UserWait(2000)
#输入字母“
yyb”
DispatchString(yyb)
UserWait(2000)
#点击搜索
Tap(960,150,1000)
UserWait(2000)
#点击返回键返回首页
DispatchPress(KEYCODE_BACK)

其次, 将文件push到手机或模拟器的sdcard中:

adb push monkey.script /sdcard/

最后, 执行脚本:

adb shell monkey -f /sdcard/monkey.script –v 1

窍门 :如果需要重复执行某个脚本, 只要在Monkey启动命令中修改执行次数即可。 例如:

adb shell monkey -f /sdcard/monkey.script –v 10

此时Monkey会重复执行monkey.script脚本10次

结合辅助命令, 获取更多信息

常规测试只要记录下Monkey日志, 再分析Monkey日志检查是否有异常即可。 但是, 很多时候, 测试除了想知道执行过程是否有异常, 还需要能获取执行过程中的一些详细信息或性能数据, 比如想知道Monkey执行过程中是否存在内存泄漏, 需要获取内存信息。这时候就需要借助一些辅助的命令来获取更多信息了。 下面列举了几种Monkey测试中常用的辅助命令, 使用方法也非常简单, 只要在执行Monkey的同时, 另起一个CMD命令行窗口输入对应命令执行即可。

获取logcat日志信息:

adb shell logcat -v time>log.txt

·获取内存信息:

adb shell dumpsys meminfo <进程名

·获取CPU消耗信息

adb shell top –n 1 |find “进程名

获取电量信息:

adb shell dumpsys battery

GPU信息命令:

adb shell dumpsys gfxinfo <进程名

获取流量信息:

adb shell cat/proc/uid_stat/<被测应用的uid>/tcp_rcv

技巧: 如何获取被测应用的UID
步骤1: 查看被测应用的进程ID(PID)

adb shell ps | grep <被测应用包名

步骤2: 查看被测应用的用户ID(UID)

adb shell cat /proc/$pid/status

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值