Android monkey 稳定性测试入门
1、下载Android studio
下载地址:https://visualstudio.microsoft.com/zh-hans/vs/msft-android-emulator/
模拟器也可使用夜神模拟器,参考https://www.cnblogs.com/fancy0158/p/10068446.html、https://blog.csdn.net/qq_36949176/article/details/82950984
2、Enable Hyper-V using PowerShell
使用管理员方式打开PowerShell,输入命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
重启电脑
资料:https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
3、安装Android SDK tool
Android各种工具下载地址:https://www.androiddevtools.cn/
安装方法:https://blog.csdn.net/qfxlw/article/details/83098051
4、安装完后配置adb的环境变量
path C:\Program Files (x86)\Android\android-sdk\platform-tools;C:\Program Files (x86)\Android\android-sdk\tools
校验:打开cmd命令行窗口(powershell不知道为什么不行),输入adb,回车,没有报错就是成功
adb shell monkey -help
5、连接设备
真机:直接用USB连接电脑,手机上开启允许USB调试
模拟器:Android studio 启动一个模拟设备
连接设备:adb shell
指定设备连接:
1)先查询设备号:adb devices
查询结果如下:List of devices attached
emulator-5638 host //模拟器
2390d880 device //真机
2)连接真机:adb -s 2390d880 shell
3)退出当前设备:exit
6、安装包
adb install XXX.apk
7、monkey命令
(1)怎么找包名
先连接设备:adb shell
再列出该设备的所有应用包名:pm list package
从中找出自己想要的包名
(2)-p指定包名执行500次随机事件,-v将日志打印到指定文件中
adb shell monkey -p com.vv.life -v 500 >d:/monkeylog20200618.txt
(3)--throttle指定指令之间的时间间隔
adb shell monkey --throttle 1000 1000 每个指令之间时间间隔为1s,执行1000次
(4)-s重复上次随机操作参数,seed参数要一样(bug复现方法)
adb shell monkey -p com.demo -s 100 --throttle 1000 1000 seed参数为100,下个命令seed参数仍为100,则重复上次随机操作
(5)--pct-touch触摸事件参数 设定触摸事件百分比 adb shell monkey --pct-touch 50 参数为50,也就是说百分之五十的事件为触摸事件
adb shell monkey -p com.demo --pct-touch 50 1000 百分之五十的事件为触摸事件
(6)-help查看帮助
adb shell monkey -help
例:adb shell monkey -s 1 --pct-touch 30 --throttle 400 -p com.vv.life -v 5000 --ignore-crashes --monitor-native-crashes
8、分析日志
日志里搜索关键字:crash(app崩溃)、ANR(app响应超时)
前四行基本是介绍概况,第一行是总计进行了多少次随机事件,第二行是告诉你本次测试的app的id,第三四行是说做了什么类型的操作,第五行开始是介绍这次500次随机事件或命令的分布百分比,至于0-11是什么意思,稍后介绍,下面是log的全文,贴出来看看(#后面是我写的注释,不是日志原文):
Monkey: seed=1515610273991 count=500 #累计执行了多少次随机事件
:AllowPackage: com.aaa.aaaaa #包名
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// Event percentages: #事件的分布百分比
// 0: 15.0% #触摸事件百分比
// 1: 10.0% #手势事件百分比
// 2: 2.0% #二指缩放事件百分比
// 3: 15.0% #轨迹球事件百分比
// 4: -0.0% #屏幕旋转事件百分比
// 5: -0.0% #基本导航事件百分比
// 6: 25.0% #主要导航事件百分比
// 7: 15.0% #系统按钮事件百分比
// 8: 2.0% #启动activity事件百分比
// 9: 2.0% #键盘轻弹事件百分比
// 10: 1.0% #其他事件百分比
:Switch: #表示跳转到我们要测试的包的里,命令里制定的包的activity里面activity#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.aaa.aaaa/.activity.SplashActivity;end #表示允许次intent跳转
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.aaa.aaaa/.activity.SplashActivity } in package com.aaa.aaaa
:Sending Trackball (ACTION_MOVE): 0:(-5.0,1.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,1.0)
:Sending Touch (ACTION_DOWN): 0:(844.0,452.0)
:Sending Touch (ACTION_UP): 0:(856.3925,455.1536)
// Injection Failed #注入touch事件失败啦,为什么呢?因为app还没反应过来,它就执行下一个命令了,还有就是app里没有滑动点击的功能,点了也没反应之类的,以后的文章详细介绍monkey命令再详解
:Sending Touch (ACTION_DOWN): 0:(246.0,256.0)
:Sending Touch (ACTION_UP): 0:(244.92224,247.17607)
:Sending Touch (ACTION_DOWN): 0:(428.0,476.0)
:Sending Touch (ACTION_UP): 0:(440.89676,405.66605)
// Injection Failed
:Sending Trackball (ACTION_MOVE): 0:(-2.0,-4.0)
:Sending Touch (ACTION_DOWN): 0:(1070.0,1121.0)
:Sending Touch (ACTION_UP): 0:(1073.162,1132.0884)
:Sending Touch (ACTION_DOWN): 0:(641.0,438.0)
:Sending Touch (ACTION_UP): 0:(657.7884,396.05533)
:Sending Trackball (ACTION_MOVE): 0:(0.0,-4.0)
//[calendar_time:2018-01-10 16:32:49.912 system_uptime:16578533]
// Sending event #100 #注入事件成功100次
……
// Sending event #200
……
Events injected: 500 #事件注入了500次,我的log在这篇文章里是删减了,都差不多,贴太长没用
:Sending rotation degree=0, persist=false #发送屏幕翻转 度=0,存留=假
:Dropped: keys=0 pointers=11 trackballs=0 flips=6 rotations=0 #丢弃:键=0,指针=11,轨迹球=0,键盘轻弹=6,屏幕翻转=0
## Network stats: elapsed time=2266ms (0ms mobile, 0ms wifi, 2266ms not connected) #网络状态:占用时间=2266ms(手机0ms,wifi0ms,未连接2266ms)
// Monkey finished #测试结束
9、接入腾讯的Bugly跟踪平台
官方文档:https://bugly.qq.com/docs/user-guide/instruction-manual-android/?v=20200203205953
10、查看手机里保存的ANR(响应超时)日志
anr日志保存在手机里的/data/anr目录下
命令:adb shell 连接设备后,执行ls /data/anr 进入目录,more 文件名 查看内容
或者adb pull /data/anr/文件名 直接将文件下载到本地
未root的机子,以上命令会报 Permission denied
这时可以使用以下命令打包一份bug日志到本地:adb bugreport,anr日志在\bugreport-2020-06-19-11-48-57\FS\data\anr目录下
11、如何停止正在运行中的monkey
查找monkey进程,杀掉
第一步:ps命令 查找monkey进程的进程号
adb shell ps | grep monkey
第二步:kill命令结束进程
adb shell kill [进程号]
12、怎么编写monkey脚本
monkey环境搭建:https://www.cnblogs.com/sylovezp/p/3623588.html
其他资料:https://www.cnblogs.com/TankXiao/p/4815134.html#basic-argu

浙公网安备 33010602011771号