自动化测试之Monkey事件

时间:2024-03-07 10:50:45

Monkey事件

一、Monkey参数

(1)帮助类参数

  monkey -h

(2)日志级别

  adb shell monkey -v -v -v 随机事件数(-v表示日志信息级别,越多越详细)

(3)事件类参数

  1)执行指定的脚本

  adb  shell  monkey  -f  <scriptfile>  <event-count>

  eg:  adb   shell  monkey  -f  /mnt/sdcard/test1

  2)伪随机数生成种子值

  使用-s命令可以重复执行之前的伪随机操作,本身每次执行伪随机事件操作也会默认生成一个seed值

  adb  shell  moneky  -s  <seed>  <event -count>

  eg:  adb  shell  monkey  -s  666 100

       

  3)设置间隔如果你希望在每个命令之间加上固定的间隔时间,可以用  --throttle(注意前面是)命令。(想要打印日志文件就加-v)

   adb  shell   monkey  --throttle  <milliseconds>

     eg:adb  shell  monkey  --throttle  1000  100

    

 

 

 (4)调整触摸事件百分比(0:触摸事件;1:手势事件..)

  如果你希望调整触摸事件的百分比,记住使用 --pct-touch

  adb  shell  monkey  --pct-touch

  eg:adb  shell  monkey  --pcy-touch  30(触摸事件变成30%)  200

  <precent>--pct-touch:后面接触摸事件百分比

        

(5)调整手势事件百分比

  adb  shell  monkey  --pct-motion

  eg:adb  shell  monkey  -v -v  --pct-motion 40(手势事件变成40%)  200

     

  同时调整手势触摸事件

  

(6)调整应用启动事件百分比(8)

  如果你希望应用启动事件的百分比,记住使用--pct-appswitch

  adb  shell  monkey  --pct-appswitch <precent>

  eg:adb  shell  monkey  -v  --pct-appswitch

  --pct-appswitch:后面接应用事件百分比

  应用启动事件(即activity launches)俗称打开应用,通过调整startActivity()方法最大限度地开启package下的所有应用

(7)约束类参数

  ①包约束

  -p:后面接一个或多个包名(<allowed-package-name>),如果应用需要访问其他包里的Activity,那相关的包也需要在此同时指定,如果不指定任何包

  monkey将允许系统启动全部包里的Activity

    adb  shell  monkey  -p  <allowed-package-name>  <event-count>

    eg:adb  shell  monkey  -p  com.ss.android.ugc.aweme  500

    两个Activity:adb  shell  monkey  -p  com.ss.android.ugc.aweme  -p  com.tencent.mm  500

       

 

 

  ②activity类约束

  如果你希望将monkey限制在一个或者几个类别中,使用以下命令:

  adb  shell  monkey  -c  <main-category>  <event-count>

  以下命令表示进行Intent.CATEGORY_LAUNCHER类别的Activity并发送1000个随机事件

  adb  shell  monkey  -c  Intent.CATEGORY_LAUNCHER  1000

(8)调试类参数

  ①应用程序崩溃后继续发送事件

  如果你希望monkey在应用程序崩溃后继续发送事件,则用--ignore-crashes命令

  adb  shell  monkey  --ignore-crashes  <event-count>

  在设置此选项后,当应用程序崩溃时,monkey将继续运行到计数完成,如果不设置,则可能异常停止

  ②超时错误继续发送事件

  如果你希望monkey在任何超时错误后继续发送事件,则需要用到 --ignore-timeouts指令

  adb  shell  monkey  --ignore-timeouts

  在设置此选项后,当程序发生超时错误时,monkey将继续完成

  ③应用程序权限错误发生后继续发送事件

  如果你希望monkey在程序错误发生后继续发送事件,则用--ignore-security-exceptions

  adb  shell  monkey  --ignore-security-exception

  在设置此选项后,程序出任何错误,monkey也会继续运行

  ④其他

      

 二、Monkey参数应用综合案例

(1)测试场景

  自动化刷抖音,进入用户主页,截取用户信息,并保存用户图片

(2)需求分析

(3)测试命令

 

 

三、monkey自定义脚本的稳定性测试

 

 

(1)测试案例

 

 (2)需求分析

(3)获取元素坐标点位置

 

 (4)Monkey脚本API简介

 

 

 

 (5)脚本格式

 

 (6)编写脚本

type = raw events  
count = 1          #执行次数
speed = 1.0    #执行速率

start data >>    #开始执行

LaunchActivity(com.ss.android.ugc.aweme,com.ss.android.ugc.aweme.splash.SplashActivity)  #appPackage包名,appActivity
UserWait(1000)   #t休息1秒   

Tap(526.7,427.5)   #点击事件进入抖音界面
UserWait(3000)    

Tap(841.0,756.5) 
UserWait(2000)    

Tap(138.8381.7)
UserWait(2000)    

 

(7)执行脚本

 

 四、Monkey日志管理

(1)日志管理作用

 

(2)monkey日志保存方法

 

(3)保存在pc中

 

(4)保存在手机中

 

(5)标准流和错误流分开保存

五、Monkeyrunner

(1)简介(基于jpython写出来的)

(2)功能

 

 

 (3)和monkey的区别

 

 (4)环境搭建

 

 (5)安装检测

六、monkeyrunner  API

(1)MonkeyRunner工具有三类:

  ①MonkeyRunner

  ②MonkeyDevice

  ③MonkeyImage

官方文档API:http://www.android-doc.com/tools/help/monkeyrunner_concepts.html#

1.MonkeyRunner类

  MonkeyRunner提供连接真机和模拟器、输入、暂停、警告框等

  常用方法:

  

 

 2.MonkeyDevice类

  MonkeyDevice类提供了安装和卸载程序包,开启Activity、发送键和点击事件、运行测试包等方法

  

 

 常用方法

  ①installPackage(string path)

  ②removePackage(string package)

  ③startActivity(string uri,string action,string data,string mimetype,iterable categories dictionary extras,component component,flags)

  ④touch(integer x,integer y,integer type)

 案例:

   

#执行抖音
from
com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner import MonkeyDevice as md print("connect devices..") device = mr.waitForConnection() print("launch app..") package = \'com.ss.android.ugc.aweme\' activity = \'com.ss.android.ugc.aweme.splash.SplashActivity\' runComponent = package+\'/\'+activity device.startActivity(component=runComponent)

 代码执行方式

  

 

       

3.MonkeyImage类

  MonkeyImage类在测试过程中用来保存各种格式的测试截图,并可进行图像对比

 

常用方法:

  ①takeSnapshot()进行屏幕截图

  ②writeToFile保存图像文件到指定的文件路径

用法示例

 

 

 测试场景:

 

思路分析:

脚本实现

 

 

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi
print("connect devices..")

device = mr.waitForConnection()

print("launch app..")
package = \'com.ss.android.ugc.aweme\'
activity = \'com.ss.android.ugc.aweme.splash.SplashActivity\'
runComponent = package+\'/\'+activity

device.startActivity(component=runComponent)   #启动app    
mr.sleep(3)    #等待3秒

print("enter user information")
device.touch(835.0,759.5,\'DOWN_AND_UP\')  #进入用户主页
mr.sleep(2)

print("exit user information")
device.touch(47.9,95.9,\'DOWN_AND_UP\') #退出主页
mr.sleep(2)

 

注意事项

  方法调用错误