Monkey MonkeyScript And MonkeyRunner

话不多说 官方文档 ------- 文档2

准备工作
环境:
  • 配置环境变量: tools 和 platform-tools 在Android 的 SDK 目录下
  • 安装Python 并配置环境变量
adb 相关:
  • adb devices 查看链接设备名称 比如:8a791904 (我的手机)
  • adb shell pm list package -3 (3列出第三方的包名)

Monkey — 模拟猴子在键盘上乱敲

cat monkey - > $base/framework/monkey.jar (存在于每个手机Android系统中)

命令参数 及 作用

-p 选择报名 获取包名 adb shell pm list package -3 (3列出第三方的包名)

-v 制定日志级别

-s 随机事件的中子数,中子数相同则生成相同随机操作序列

–throttle 操作的延时

-s seed值,可以理解为猴子的编号,测试事件的比例不同

–ignore 在monkey 的执行过程中,忽略掉部分引起monkey停止的事件,继续执行

  • crashes L应用崩溃
  • timeouts:ANR 未响应
  • security:安全验证
  • native:系统崩溃
测试命令行

adb shell monkey -s 805 -p com.example.monkeytestdemo --pct-touch 100 -v -v 50
指令意思 : 805 编号的猴子,100%执行触摸事件 ,2级日志 ,50次 (息屏)

命令行导出测试报告
adb shell monkey -p com.xxxx.xxx -v -v -v 500>F:\report.txt

指定进行测试事件 的占比 --pct-xxx
adb shell monkey -p com.xxxx.xxx --pct-touch 100 -v -v 500 (点击事件 占比100%)
adb shell monkey -v --pct-touch 50 --pct-motion 30 100 (触摸50% 运动事件30%)

         其他事件 对照 查询 
          [--pct-touch PERCENT] [--pct-motion PERCENT]          触摸
          [-pct-motion PERCENT] [--pct-motion PERCENT]         运动
          [--pct-trackball PERCENT]    轨迹球 (鼠标滚轮)
          [--pct-syskeys PERCENT]    系统导航键 (HOME BACK 拨号音量键 相机等)
          [--pct-nav PERCENT]         导航 (上 下 左 右)
          [--pct-majornav PERCENT]     主要导航 (中间键 返回键 菜单键)   
          [--pct-appswitch PERCENT]    Activity 之间切换
          [--pct-flip PERCENT]               键盘翻转事件,类似点击输入框,键盘弹起,点击其他区域,键盘收起
          [--pct-rotationPERCENT]        调整屏幕旋转
          [--pct-anyevent PERCENT]      不常用事件
          [--pct-pinchzoom PERCENT]   调整缩放
          [--pct-permission PERCENT] 
          

白名单黑名单
monkey --pkg–whitelist-file /data/white.txt (执行指定的包名)
monkey --pkg–blacklist-file /data/black.txt (不执行指定的包名)

看日志时,只要关注 error ANR exception crash 即可

当测试时名不需要点击 statusBar 时 可以将其关闭 :
adb shell settings put global policy_control immersive.full=* 关闭手机的状态栏
adb shell settings put global policy_control null 开启手机状态栏


MonkeyScript – 让猴子做指定的事情

monkeyScript 是 一组可以被Monkey 识别的命令集合
可以完成重复固定的操作。
可以做的一些事件可以参考下图或 这个链接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

命令实践

adb shell monkey -f scriptfile event-conut
scriptfile 是要执行的脚本文件
执行前需要 将 脚本推送到 手机目录中执行:
adb push monkey.script /data/local/tmp
执行命令:
adb shell monkey -f monkey.script 2 // 执行这个脚本文件 2次
日志日志:
adb shell monkey -f monkey.script -v -v 3 >F:/MonkeySpLog.txt //
将日志输出到 MonkeySpLog.txt 中

脚本文件 monkey.script

typ=user
count=10
speed=1.0
start data >>
LaunchActivity(com.example.monkeytestdemo,.MainActivity)
UserWait(2000)
DispatchPointer(10,10,0,100,100,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,100,100,1,1,-1,1,1,0,0)
DispatchString(test)
UserWait(1000)
DispatchPress(66)
DispatchPointer(10,10,0,40,100,1,1,-1,1,1,0,0)
DispatchPointer(10,10,0,40,100,1,1,-1,1,1,0,0)
UserWait(6000)
上面指令 执行的是:
启动 App — 等待两秒 — 点击输入框 — 等待两秒 — 输入“test” — 等待一秒
— 输入回车— 点击 “提示” 按钮 —用户等待六秒

通过上面的指令可以了解到,他的是通过点击界面上的坐标点来完成点击事件的,那怎么才能知道,目标控件的坐标点?就需要借助 uiautomatorviewer 工具

位置 在 …/android/sdk/tools/bin/uiautomatorviewer
命令行命令行 ./uiautomatorviewer 启动后,看到这样的界面,就可以在右边的窗口中获取到页面信息了。

在这里插入图片描述


MonkeyRunner – 比上面两种功能更多

所属位置:…/android/sdk/tools/bin/monkeyrunner

简介:
MonkeyRunner 可以通过API 执行特定的命令和事件,精准可控
可以进行:点触屏、拖拽、长按、键盘事件
还可以 :智能截图对比和判断回溯具体的BUG路径

API 分为三大模块
MonkeyRunner:用来链接设备或模拟器。
MonkeyDevice:提供安装、卸载应用,发送模拟事件
MonkeyImage:完成图像保存,及对比的操作。

测试的类型

  • 多设备控制
    可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。
  • 功能测试
  • 回归测试
    1、多设备控制:monkeyrunnerAPI可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。

2、 功能测试: monkeyrunner可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果

3、 回归测试:可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。

常用命令参考

命令实践:

monkeyrunner demo.py 或者 ./monkeyrunner demo.py

脚本文件 demo.py

from com.android.monkeyrunner import MonkeyRunner
from com.android.monkeyrunner import MonkeyDevice
from com.android.monkeyrunner import MonkeyImage
import os
import datetime
import time
import shutil
import subprocess
import random
import time

#链接设备
device=MonkeyRunner.waitForConnection(3,“R22M600P53A”)
#启动App
device.startActivity(“com.example.monkeytestdemo/com.example.monkeytestdemo.MainActivity”)
#点击输入框
device.touch(100,100,“DOWN_AND_UP”)
MonkeyRunner.sleep(1)
#输入内容 下面是python 语法的 while 循环
num = 1
while num<=5:
s = random.randint(0,9)
ticks = time.time()
num = num + 1
device.type(‘testText’+str(ticks)+‘randomNum:’+str(s))
MonkeyRunner.sleep(2)
#点击按钮
device.touch(1050,100,“DOWN_AND_UP”)
MonkeyRunner.sleep(2)
#截屏并保存
image = device.takeSnapshot()
image.writeToFile(’…/test.png’,‘png’)

持续更新中。。。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值