部分参考自《腾讯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)
按键名称有