Android monkey和monkeyrunner测试

Android monkey和monkeyrunner测试

monkey测试

monkey是一个可以模拟用户操作的一个命令行的工具。它将用户事件的伪随机流发送到系统中,一般用于软件的压力测试。

在Android系统中提供了monkey.py的文件,我们可以直接通过adb命令操作,执行monkey。

例如:

# 向指定的应用程序发送1000个伪随机事件,packag_name指包名,1000是1000个伪随机事件

$ adb shell monkey -p package_name -v 1000

下图是执行10个伪随机事件的截图:图中有seed值,事件的百分比,事件的百分比可以通过命令选项调整。

image


命令选项参考

  • -s <seed>:如果以相同的seed执行,会生成相同的事件序列。
$ adb shell monkey -p package_name -s seed_number -v 1000
  • --throttle <millseconds>:在事件之间插入固定的延迟,减慢monkey的执行速度。
# 每个时间之间延迟100毫秒
$ adb shell monkey -p package_name --throttle 100 -v 1000
  • --pct-touch <percent>:调整触摸事件的百分比
# 调整触摸事件为30%
$ adb shell monkey -p package_name ---pct-touch 30 -v 1000
  • --pct-motion <percent>:调整运动事件的百分比
# 调整运动事件为30%
$ adb shell monkey -p package_name ---pct-motion 30 -v 1000
  • --pct-trackball <percent>:调整轨迹球事件的百分比
# 调整轨迹球事件为30%
$ adb shell monkey -p package_name ---pct-trackball  30 -v 1000
  • --pct-nav <percent>:调整“基本”导航事件的百分比
# 调整“基本”导航事件为30%
$ adb shell monkey -p package_name ---pct-nav  30 -v 1000
  • --pct-majornav <percent>:调整“主要”导航事件的百分比
# 调整“主要”导航事件为30%
$ adb shell monkey -p package_name ---pct-majornav  30 -v 1000
  • --pct-syskeys <percent>:调整“系统”关键事件的百分比
# 调整“系统”关键事件为30%
$ adb shell monkey -p package_name ---pct-syskeys  30 -v 1000
  • --pct-appswitch <percent>:调整activity启动的百分比
# 调整activity启动为30%
$ adb shell monkey -p package_name ---pct-appswitch   30 -v 1000
  • --pct-anyevent <percent>:调整其他类型事件的百分比。
# 调整其他类型事件为30%
$ adb shell monkey -p package_name ---pct-anyevent   30 -v 1000

monkey的命令可选项还有关于调试的,这里不做赘述,参考下面官方文档

参考官方文档


monkeyrunner测试

monkeyrunner是一个android提供的一个工具,在sdk目录下的tools目录下的monkeyrunner.bat文件(windows版本)。

Monkeyrunner工具通过从API发送特定的命令和事件来控制来自工作站的设备和仿真器。

来看一个简单的monkeyrunner例子:

1.在Androidsdk的目录下的tools目录下创建一个test.py文件,文件内容:

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice

# 连接设备,获取MonKeyDevice对象
device = MonkeyRunner.waitForConnection()

# 跳转到MainActivity
device.startActivity(component = 'com.yiba.sharewe.lite.activity/.MainActivity')

# 触摸事件,参数1,2表示x,y像素值,参数3:表示触摸操作
device.touch(300,1000,'DOWN_AND_UP')

# 截图
iamge = device.takeSnapshot()
# 图片写入F盘
iamge.writeToFile('F:\image2.png','png')

# 输出log信息
log = open('F:\monkenyLog.txt', 'w')
log.write("monkeyrunner test over...\n")
log.close()

2.执行test.py文件,如果没有配置monkeyrunner的环境变量,需要到Androidsdk目录下的tools目录下执行。test.py文件也放在这个目录下。

$ monkeyrunner test.py

monkeyrunner官方文档


常用的MonkeyRunner API

  • MonkeyRunner

MonkeyRunner API文档

# 获取连接设备
device = MonkeyRunner.waitForConnection()
或者
device = MonkeyRunner.waitForConnection(float timeout , string deviceid)

# 当前程序暂停多少秒
MonkeyRunner.sleep(float second)
  • MonkeyDevice

MonkeyDevice API文档

# 安装应用,参数是应用所在的路径,如:F:/test.apk
device.installPackage(string path)

# 卸载应用,参数是应用包名,如:com.example.test
device.removePackage(string package)

# 启动应用
package = 'com.example.android.myapplication'
activity = 'com.example.android.myapplication.MainActivity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)

# 触摸事件,参数1,2表示屏幕x,y的值,参数3表示触摸事件类型(DOWN,UP,DOWN_AND_UP)
device.touch(integer x,integer y,integer type)

# 按下事件,参数1表示key event事件名称,如:KEYCODE_BACK(返回键),参数2表示事件类型(DOWN,UP,DOWN_AND_UP)
device.press(string name,string type)

# 拖拽事件,参数1和2表示触摸开始和结束的位置,参数3表示拖拽的时间,参数4表示步数
device.drag(tuple start , tuple end , float druation , integer steps)

eg:
device.drag((550,500),(100,500), 0.5, 1)

# 截图,返回的对象是MonkeyImage
iamge = device.takeSnapshot()
iamge.writeToFile('F:\image.png','png')
  • MonkeyImage

MonkeyImage API文档

# 读取到文件,参数1表示存储路径,参数2表示图片格式
image.writeToFile(string path,string format)

# 比较图片百分之多少相似,返回值boolean
image.sameAs(MonkeyImage other,float percent)

参考文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值