完成重复的工作
一开始并不了解Monkey脚本,因为最近在开发一个Android端Excel表格工具(编辑Excel表格模板),在测试的时候需要重复往表格中添加和删除数据来测试App的稳定性,通过搜索了解Monkey脚本能完成这种重复点击和输入的工作,可以为我省下很多的测试时间。我觉得Monkey脚本的作用类似于“按键精灵”:通过记录用用户的点击事件来帮助用户完成重复的操作,与Monkey不同的是Monkey是通过一套操作Android设备的API,来操作Android设备。
打开一个Activity
-
LaunchActivity(xxx.xxx.xxxx,xxx.xxx.xxxx.xxxxActivity)
第一个参数填写应用的包名,后一个参数填写Activity(包含包名)
点击事件
- 通过
android-sdk\tools\bin
目录下的uiautomatorviewer
工具就可以获取设备当前界面的布局信息 -
Tap(x,y)
x,y为所需点击的点坐标 -
DispatchPress(x,x,x,x,x,x,x,x,x,x,x,x)
通过控制按下和弹起来实现一次点击事件
键盘输入
-
DispatchString(String)
输入字符串,但是前提是焦点是在一个可输入的控件上 -
DispatchPress(KEYCODE_XXXX)
模拟KeyCode按钮,例如:DispatchPress(KEYCODE_TAB)
按下Tab键、DispatchPress(KEYCODE_ENTER)
按下回车键、DispatchPress(KEYCODE_BACK)
按下返回键
操作等待
-
ProfileWait()
等待上一个动作的完成 -
UserWait(?)
等待一个设定的时长
简单的测试脚本
#coding=gbk
type= raw events
count= 50
speed= 1.0
start data >>
LaunchActivity(com.xxx.xxxxx,com.xxx.xxxxx.xxxxActivity)
ProfileWait()
#点击按钮进入某个界面
Tap(20,200)
ProfileWait()
#填写xxx
Tap(645,210)
DispatchString(0200058344)
DispatchPress(KEYCODE_TAB)
DispatchString(0200058344)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_TAB)
DispatchString(xxxxxxx)
DispatchPress(KEYCODE_TAB)
DispatchString(1)
DispatchPress(KEYCODE_TAB)
DispatchString(6)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_TAB)
DispatchString(xxxxxxx)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_ENTER)
DispatchPress(KEYCODE_TAB)
DispatchString(6)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_TAB)
DispatchString(xxxxxxx)
DispatchPress(KEYCODE_TAB)
DispatchString(xxxxxxx)
DispatchPress(KEYCODE_TAB)
DispatchPress(KEYCODE_ENTER)
ProfileWait()
DispatchPress(KEYCODE_BACK)
DispatchPress(KEYCODE_BACK)
#ProfileWait()
#Tap(10,60)
ProfileWait()
上面脚本的基本流程就是在三个不同的界面输入内容之后点击按钮把各个字段添加到Excel表格模板中去然后退出该界面。
执行脚本
- 先把脚本push至需要测试的Android设备
adb push monkey.txt /data/local/tmp/
- 执行脚本,n为需要执行的次数
adb shell monkey -f /data/local/tmp/monkey.mks n
执行脚本后可以在控制查看输出的Log信息
停止脚本
- Monkey脚本一旦开始执行,利用Android设备很难将他关闭...
- 可以通过adb shell命令来关闭Monkey
adb shell
top | grep monkey
获取到monkey进程的id后利用kill命令来结束进程
kill -9 进程ID
总结
Monkey脚本为那些重复的测试操作提供了解决方案,它是自动化测试的基础,了解熟悉Monkey脚本能为我们这些苦逼的没有测试工程师的开发带来很多方便....嘻嘻