美文网首页
Adnroid-Monkey Script 压力测试(一)

Adnroid-Monkey Script 压力测试(一)

作者: Klany | 来源:发表于2020-06-07 16:00 被阅读0次

Android-Monkey 压力测试
Adnroid-UI Automator Viewer 的使用
Adnroid-Monkey Script 压力测试(一)
Adnroid-Monkey Script 压力测试(二)
Android-MonkeyRunner 压力测试(一)
Android-MonkeyRunner 压力测试(二)
Android-MonkeyRunner API 参考
Android-Monkey 源代码参考

1. Monkey Script 介绍

Monkey Script 是用 Monkey 来进行压力测试时执行特定操作时的命令(函数)集合,它只能通过屏幕坐标的方式执行特定事件,如:点击、长按、拖动等。
如果它要对屏幕上的某个 View 执行点击事件,就必须知道该 View 在手机屏幕上的坐标。
因为使用 Monkey 对 App 进行压力测试时,Monkey 的操作是随机的。
Monkey Script 可以使 Monkey 执行特定的操作对 App 进行压力测试。
如果要执行更高级的压力测试操作,如:截屏、弹窗、安装Apk等,就要用到功能更加强大的 MonkeyRunner。

手机屏幕上View坐标获取工具(UI Automator Viewer) 它在 Android ADK 的 tools\bin 目录下。

UI Automator Viewer 参考: https://www.jianshu.com/p/b2890c631ec5

Monkey 源代码参考:http://androidxref.com/5.1.1_r6/xref/development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java

MonkeyRunner 参考: https://developer.android.google.cn/studio/test/monkeyrunner?hl=zh_cn

2. Monkey Script API

1. 启动应用 LaunchActivity
LaunchActivity(String packageName,String activityName)

参数:

  • packageName: 程序的包名
  • activityName: 要启动的 Activity,必须是完整的包名加类名

注意:LaunchActivity() 函数启动的 Activity 需要在 AndroidManifest 文件中配置 Activity 的 exported 属性为 true。

2. 等待事件 UserWait
UserWait(long sleeptime)

参数:

  • sleeptime: 等待的时间,单位为毫秒
3. 输入字符串 DispatchString
DispatchString(String text)

参数:

  • text: 要输入的字符串
4. 点击按键 DispatchPress
DispatchPress(int keyCode)

参数:

  • keyCode: 按键的值,参考 android.view.KeyEvent 类
5. 执行 shell 命令 RunCmd
RunCmd(String cmd)

参数:

  • cmd: 要执行的 shell 命令
6. 打开或关闭键盘 DispatchFlip
DispatchFlip(boolean keyboardOpen)

参数:

  • keyboardOpen: true 打开,false 关闭
7. 点击事件 DispatchPointer
DispatchPointer(long downtime,long eventtide,int action,float x,float y,
                float pressure,float size,int metastate,float xprecision,
                float yprecision,int device,int edgeflags)

参数:

  • downtime: 指按键最初被按下的时间
  • eventtide: 指事件发生的时间
  • action: 指具体操作的动作,如按下(0 代表按下,1 代表抬起)
  • x, y: 指点击的 X 和 Y 的坐标
  • pressure: 压力事件的大小(0~1)
  • size: 指触摸的记事值(0~1)
  • metastate: 指当前按下mate键的标识
  • xprecision,yprecision: 指x和y坐标的精确值
  • device: 事件的来源(0~X)
  • edgeflags: 指超出屏幕的范围
8. 轨迹球事件 DispatchTrackball
DispatchTrackball(long downtime,long eventtide,int action,float x,float y,
                  float pressure,float size,int metastate,float xprecision,
                  float yprecision,int device,int edgeflags)
  • 参数和 DispatchPointer 一样
9. 拖动 Drag
Drag(float xStart,float yStart, float xEnd, float yEnd,int stepCount)

参数:

  • xStart: 事件开始时的 X 坐标
  • yStart: 事件开始时的 Y 坐标
  • xEnd: 事件结束时的 X 坐标
  • yEnd: 事件结束时的 Y 坐标
  • stepCount: 拖动事件它由多个大大小小的事件组成,用来指定它是由多少个小事件组成的,值越大,越连贯
10. 双指缩放 PinchZoom
PinchZoom(float pt1xStart,float pt1yStart,float pt1xEnd,float pt1yEnd,
          float pt2xStart,float pt2yStart,float pt2xEnd,float pt2yEnd,int stepCount)

参数:

  • pt1xStart: 第一个手指开始时的 X 坐标
  • pt1yStart: 第一个手指开始时的 Y 坐标
  • pt1xEnd: 第一个手指结束时的 X 坐标
  • pt1yEnd: 第一个手指结束时的 Y 坐标
  • pt2xStart: 第二个手指开始时的 X 坐标
  • pt2yStart: 第二个手指开始时的 Y 坐标
  • pt2xEnd: 第二个手指结束时的 X 坐标
  • pt2yEnd: 第二个手指开始时的 X 坐标
  • stepCount: 缩放次数
11. 发送按键消息 DispatchKey
DispatchKey(long downTime,long eventTime,int action,int keyCode,
            int repeat,int metaState,int device,int scancode)

参数:

  • downTime: 指按键最初被按下的时间
  • eventTime:按键事件发生时间
  • action: 指具体操作的动作,0 表示按下,1 表示抬起
  • keyCode: 按键的值,参考 android.view.KeyEvent 类
  • repeat: 按按键的次数
  • metaState: 指当前按下mate键的标识
  • device: 事件的来源(0~X)
  • scancode: 事件的原始设备扫描代码
12. 旋转屏幕 RotateScreen
RotateScreen(int rotationDegree,int persist)

参数:

  • rotationDegree:旋转的角度,只支持 0,90,180,270
  • persist: 是否保持旋转前的状态,0 不保持,1 保持
13. 长按事件 LongPress
LongPress()
  • 标准长按为 2 秒,没有参数,直接调用。
14. 长按事件 PressAndHold
PressAndHold(float x,float y,long pressDuration)

参数:

  • x: 指长按的 X 坐标
  • y: 指长按的 Y 坐标
  • pressDuration:长按的持续时间,单位毫秒

PressAndHold 用于模拟一个长按事件,和 LongPress 类似,但它可以指定长按坐标和时长。

15. 手指单击事件 Tap
Tap(float x,float y,long tapDuration)

参数:

  • x: 指单击的 X 坐标
  • y: 指单击的 Y 坐标
  • tapDuration :单击的持续时间,可选参数,单位毫秒
16. 唤醒设备并解锁 DeviceWakeUp
DeviceWakeUp()
  • DeviceWakeUp 命令可以唤醒设备并进行解锁。没有参数,直接调用。当然需要的是一个无锁屏密码的设备才可以,有数字或图形锁屏密码,都会导致失败。
17. 等待 5 秒 ProfileWait
ProfileWait()
  • ProfileWait 命令和 UserWait 类似,但是它已经设定好等待的时长,就是 5s ,没有参数,直接调用。

Adnroid-Monkey Script 压力测试(二)

相关文章

网友评论

      本文标题:Adnroid-Monkey Script 压力测试(一)

      本文链接:https://www.haomeiwen.com/subject/rcectktx.html