Android自动化测试-Monkey篇

 部分参考自《腾讯Android自动化测试实战》丁如敏 盛娟著

1 monkey

安卓系统自带功能,无需另外安装,只需要电脑安装adb,手机开启开发者选项usb调试,即可进行连接,然后在电脑shell上跑monkey脚本,即可进行安卓自动化测试

2 adb安装配置以及操作安卓设备的常用命令

2.1 安装配置

官网下载Adb Kits,解压后有adb.exe adbwinapi.dll adbwinusbapi.dll这三个文件,配置方法有两种,选其一即可:

方法一 将这三个文件剪切到c盘\user\用户目录文件夹下面

方法二 将这三个文件所在目录地址放到系统环境变量path中

2.2 常用命令

1查询模拟器/安卓设备实例 

adb devices

2安装应用程序到安卓设备/模拟器(卸载是uninstall)

adb install 电脑路径\apk文件

3将安卓设备/模拟器的文件复制到电脑

adb pull 安卓路径/文件 电脑路径

4将电脑的文件复制到安卓设备/模拟器

adb push 电脑路径\文件 安卓路径

3 monkey启动

例:

adb shell monkey -v 10  

通过该命令启动Monkey后,Monkey向被测手机的Android系统发送10条随机事件类型。

4 monkey 测试实例(1)随机事件流

例:被测程序是Android应用(App)。测试希望通过Monkey来模拟用户长时间的随机操作,检查被测应用是否会出现异常(应用崩溃或者无响应)。

monkey脚本:

adb shell monkey -p com.xxx.xxx --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 12358 --throttle 400 --ignore-crashes --ignore-timeouts -v 500000

脚本解析如下:

1使用-p参数来指定测试应用的包名

(Package的名字查看方法:安卓设备与电脑adb连接后,在shell输入命令

adb shell pm list package

即可查看安卓设备当前的所以应用程序包名)

2 使用--pct-xxx参数限制Monkey执行的事件类型和占比

monkey事件类型如下

3使用-s参数来指定命令执行的seed值

Monkey会根据seed值来生成对应事件流,同一个seed生成的事件流是完全相同的。这里指定了seed值,是为了测试发现问题时,便于进行问题复现。

4使用--throttle参数来控制Monkey每个操作之间的时间间隔

5使用--ignore-crash和--ignore-timeouts参数使Monkey遇到意外时能继续执行

6使用-v指定log的详细级别

Monkey的日志输出有3个级别:默认的是level 0, -v -v日志级别为level 1, -v -v日志级别为level 2。日志的级别越高,其详细程度也越高。为了方便问题的定位,将日志级别设置为level2。

5 monkey测试实例(2)固定事件流

常规Monkey测试执行的是随机的事件流,但如果只是想让Monkey测试某个特定场景(执行固定的事件流)呢?这时候就需要用到自定义脚本了,Monkey支持执行用户自定义脚本的测试,用户只需要按照Monkey脚本的规范编写好脚本,存放到手机上,启动Monkey通过-f scriptfile参数调用脚本即可。

Monkey自定义脚本的编写模板如下:

#头文件,控制Monkey发送消息的参数,固定写即可
       

#脚本类型,一般不用更改
       

type=raw events
       

#脚本执行次数,但是由于Monkey命令本身可以指定执行次数,所以这里的设置是不生效的
       

count=10
       

#命令执行速率,速率也可以通过Monkey命令设置,这里的设置是不生效的
       

speed=1.0
       

#以下为Monkey命令
 

start data>>
       

LaunchActivity(pkg_name, cl_name)
       

DispatchPress(KEYCODE_HOME)
        
…  

例:要测试的是应用宝App,测试的操作是打开应用宝,点击输入框,输入“yyb”,点击搜索。搜索完成后,点击返回键返回应用宝首页。

1编写自定义脚本monkey.script(后缀可以随便写,比如monkey.txt,只要文件可以编辑就行)

#monkey.script代码如下

#启动测试
       

type = user
       

count = 1
       

speed = 1.0
       

start data >>
       

#启动应用宝
       

LaunchActivity(com.tencent.android.qqdownloader,com.tencent.assistant.activity.SplashActivity)   

UserWait(2000)
       

#点击搜索框
       

Tap(463,150,1000)
       

UserWait(2000)
       

#输入字母“yyb”
       

DispatchString(yyb)
       

UserWait(2000)
       

#点击搜索
       

Tap(960,150,1000)
       

UserWait(2000)
       

#点击返回键返回首页
       

DispatchPress(KEYCODE_BACK)

2将文件push到手机或模拟器的sdcard中:

adb push monkey.script  /sdcard/

3执行脚本:

adb shell monkey  -f /sdcard/monkey.script -v 1

此时可以看到手机按照前面的自定义脚本开始执行,共1次

(若要连续执行10次,则把1改成10即可)

解析:

monkey自定义脚本常用api如下:

 

1 LaunchActivity(pkg_name, cl_name)

应用包名比较好查找,activity名相对麻烦,需要借助aapt,方法如下:

1-1下载aapt.exe

搜索apktool 进入官网install页面,下载apktool.bat apktool.jar两个文件,然后解压apktool.jar,在该目录下的prebuilt\windows目录下的aapt_64.exe复制到c盘\user\用户目录,改名为aapt.exe,把apktool.bat文件也复制到这个用户目录下即可

1-2运行aapt命令查找应用对应的activity名

确保安卓设备与电脑adb连接好,确保电脑磁盘有这个应用的apk安装包,然后输入命令

aapt dump badging 电脑目录\apk文件

即可在shell中查看apk安装包对应的activity名

2 DispatchPress(keyName)

按键名称有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值