MonKey测试

  • MonKey:
    • Monkey是Android平台自动化测试的一种手段,通过 Monkey程序模式用户触摸屏幕、滑动、按键等操作对设备上的程序进行压力测试,检测程序多久的时间会发生异常
    • Monkey测试是一种测试Android软件稳定性、健壮性的快速而有效的方法
    • Monkey程序为Android系统自带,用Java语言实现。在Android文件系统中的存放路径是:system/framework/monkey.jar
在cmd中输入
adb shell
cd system/bin
ls  可以看到monkey
cat monkey


结果:
shell@klte:/system/bin $ cat monkey
# Script to start "monkey" on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/monkey.jar
trap "" HUP
exec app_process $base/bin com.android.commands.monkey.Monkey $*
  • Monkey.jar由Monkey命令来启动执行:
在命令窗口执行:
adb shell monkey  -help
可以查看命令参数
  • 尝试使用命令:
adb shell monkey -p com.android.calculator2 -v 100 向指定的包发送100个伪随机事件
  • MonkeyRunner:

    • MonkeyRunner工具提供了一个API,使用此API写的程序可以在Android系统之外控制Android设备或者模拟器
    • 通过MonkeyRunner可以使用Python程序去安装一个Android程序或者应用包、
    • 具体位置在sdk文件下的tools子目录下
  • 特性:

    • 多设备控制
    • 功能测试
    • 回归测试
    • 可扩展:利用python扩展
  • Monkey和MonkeyRunner两者区别:

Monkey:运行于设备或者模拟器之上,生成各种操作的伪随机事件流

MonkeyRunner: 运行于 PC端,通过python可以扩展
  • MonkeyRunner使用:
    • 如果没有配置环境变量,就在cmd中直接到sdk\tools\bin文件下执行monkeyrunner命令,结果如下图:
      在这里插入图片描述

    • 可能遇到问题:

      • SWT folder ‘…\framework\x86_64’ does not exist. Please set ANDROID_SWT to point to the folder conta
      • 意思是:SWT文件夹“…\framework\x86_”不存在。请将android_swt设置为指向包含swt.jar的平台文件夹。
      • 解决方案:
        • 将MonkeyRunner文件使用记事本打开,修改下面部分:


请将android_swt设置为指向包含swt.jar的平台文件夹。
  if exist %frameworkdir%\%jarfile% goto JarFileOk
            set frameworkdir=lib  
  以及最后一行:
  call "%java_exe%" -Xmx512m "-Djava.ext.dirs=%frameworkdir%;%swt_path%" -
  Dcom.android.monkeyrunner.bindir=..\framework -jar %jarpath% %* 
  
 分别改为:
 
 if exist %frameworkdir%\%jarfile% goto JarFileOk
    set frameworkdir=..\lib
 和:
call "%java_exe%" -Xmx512m "-Djava.ext.dirs=%frameworkdir%;%swt_path%" -Dcom.android.monkeyrunner.bindir=..\..\platform-tools -jar %jarpath% %*

  • 通过 aapt获取包名:
    • 在\sdk\build-tools\x.x.x下执行:
aapt dump badging path\name.apk >  path/log.txt 
 
* 在log.txt文件中查看即可
  • 上面的操作完成之后,再次输入MonkeyRunner,示例代码:
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
device = MonkeyRunner.waitForConnection()
device.reboot("None")

Android设备或者虚拟机重启
  • 示例(来自官方):
# 导入此程序使用的MonkeyRunner模块
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

device = MonkeyRunner.waitForConnection()


# 安装Android软件包。请注意,此方法返回一个布尔值,因此可以测试以查看安装是否有效。
device.installPackage('myproject/bin/MyApplication.apk')


# 使用包的内部名称设置变量
package = 'com.example.android.myapplication'


# 使用包中活动的名称设置变量
activity = 'com.example.android.myapplication.MainActivity'


# 设置要启动的组件的名称
runComponent = package + '/' + activity

# 运行组件
device.startActivity(component=runComponent)

# 按下菜单按钮
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)

# 截图
result = device.takeSnapshot()

# 将截图写入文件
result.writeToFile('myproject/shot1.png','png')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wjxbless

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值