本地接入
- 下载项目
- 我使用的是逍遥模拟器,CPU型号x86_64
adb push E:\Fastbot_Android-main\libs\x86_64 /data/local/tmp
- 把jar文件导入手机数据库
adb push E:\Fastbot_Android-main\fastbot-thirdpart.jar /sdcard
adb push E:\Fastbot_Android-main\framework.jar /sdcard
adb push E:\Fastbot_Android-main\monkeyq.jar /sdcard
启动fastbot
adb shell CLASSPATH=/sdcard/monkeyq.jar:/sdcard/framework.jar:/sdcard/fastbot-thirdpart.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p xxx --running-minutes 1 --bugreport --output-directory /sdcard/log --throttle 500 -v -v
- 参数说明
-s 设备号
多个设备需要指定设备号,单独设备无需此-s参数-p 包名
遍历app的包名,-p+包名--agent reuseq
遍历模式,无需更改--running-minutes 遍历时长(分钟)
# 遍历时间:--running-minutes 时间--throttle 事件频率
遍历事件频率,建议为500-800- 可选参数
--bugreport
崩溃时保存bug report log--output-directory /sdcard/xxx
log/crash 另存目录
- 结果分析
- Crash、ANR 捕获
- 捕获到Java Crash、ANR、Nativie Crash会以追加方式写入/sdcard/crash-dump.log文件
- 捕获的Anr 同时也会写入
/sdcard/oom-traces.log
文件
- Activity覆盖率统计
- 正常跑完Fastbot会在当前shell中打印totalActivity(总activity列表),ExploredActivity(遍历到的activity列表)以及本次遍历的总覆盖率
- 总覆盖率计算公式:
coverage = testedActivity / totalActivities * 100
app测试时,crash保存于crash-dump.log中,同时在/sdcard/log目录下有详细的崩溃日志
- 详细教程参考中文文档
高速截图及打印xml结构
保存测试过程中的截图和打印xml结构
适用需求: 观察测试过程中的截图
- 高速截图
- 在PC 端新建
max.config
文件,增加以下属性 max.takeScreenshot = true
max.takeScreenshotForEveryStep = true
max.saveGUITreeToXmlEveryStep =true
- 将
max.config
文件push到手机端sdcard中 , 目录必须为sdcardadb push max.config /sdcard
- 目录默认保存为手机端sdcard中,如需改变保存位置,在执行命令末尾添加
--output-directory
指定路径, --throttle 参数要 >200 才会截图
- 在PC 端新建
自定义事件序列
手动配置Activity的路径(UI自动化用例)
适用需求: 场景覆盖不全,通过人工配置到达 Fastbot 遍历不到的场景, 或自定义操作序列(例如前置登录等)
-
在pc端新建
max.xpath.actions
文件(文件名称不可更改) -
编写事件序列配置(case):
prob
:发生概率,"prob":1,代表发生概率为100%activity
:所属场景,详见:三.获取当前页面所属的Activitytimes
:重复次数,默认为1即可actions
:具体步骤的执行类型throttle
:action间隔事件(ms)
SCROLL_RIGHT_LEFT
:从右向左滑动SCROLL_LEFT_RIGHT
:从左向右滑动SCROLL_BOTTOM_UP
:从下向上滑动SCROLL_TOP_DOWN
:从上向下滚动BACK
:返回LONG_CLICK
:长按CLICK
:点击,想要输入内容在action下补充text,如果有text 则执行文本输入
现新建一个max.xpath.actions
文件
{
"prob":1,
"activity":"xxx.main.activity.SettingsActivity",
"actions":[
{
"id":"xxx:id/setting",
"action":"CLICK",
"throttle":500
}
]
推送到手机
adb push max.xpath.actions /sdcard
启动fastbot后,确实点击了设置按钮,成功触发埋的crash!
常见问题
本地测试时,手机的顶部状态栏找不到了,怎么恢复
adb shell wm overscan reset
为了防止测试时点击到设置,影响测试效果,做的特殊设置