Fastbot——基于model-based testing的APP 稳定性测试工具

github地址:GitHub - bytedance/Fastbot_Android: Fastbot(2.0) is a model-based testing tool for modeling GUI transitions to discover app stability problems

Fastbot_Android介绍

基于model-based testing 结合机器学习、强化学习的APP 稳定性测试工具。

详情请访问:Fastbot:行进中的智能 Monkey - 掘金

优势:

  1. Android多os兼容:

同时兼容Android5-12,兼容国内各厂商定制化的Android系统及原生Android系统

  1. 事件快速注入:

继承原生Monkey的优势,快速点击,每秒最高可发送12个事件

  1. 专家系统:

不同业务线支持不同的个性化需求,业务深度定制化

  1. 智能化测试:

基于model-based 边遍历边建模,利用强化学习等算法做高收益决策

  1. 跨平台:

支持非标准化控件,YOLOv3、ocr、cv分割等UI图像识别能力

2021.09 更新

  1. 模型复用

支持模型复用,模型文件会自动存储在 /sdcard/fastbot_[包名].fbm,启动 fastbot 时如果此文件存在则默认加载模型,运行过程中每隔十分钟会覆盖存储一次,用户可根据需求删除或拷贝此文件

2021.11 更新

  • 支持 android 12
  • 添加部分 fuzz 和 mutation能力

本地接入

环境预备

  • 支持 Android 5,6,7,8,9,10,11,12 真机及模拟器
  • 将framework.jar fastbot-thirdpart.jar monkeyq.jar push 到手机上某个目录中,建议/sdcard,push 

libs/* 到/data/local/tmp/

adb push *.jar /sdcard adb push libs/* /data/local/tmp/

shell运行

  • 添加限定词,可提升模型,aapt2 可根据本机环境替换为 aapt,如果提示不可用,需要添加到 PATH 环境变量中, 示例具体路径为 ${ANDROID_HOME}/build-tools/28.0.2/aapt2

aapt2 dump --values strings [install_package_path.apk] > max.valid.strings adb push max.valid.strings /sdcard

启动 Fastbot

adb -s 设备号 shell CLASSPATH=/sdcard/monkeyq.jar:/sdcard/framework.jar:/sdcard/fastbot-thirdpart.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p 包名 --agent reuseq --running-minutes 遍历时长 --throttle 事件频率 -v -v

参数说明

  1. -s 设备号

 多个设备需要指定设备号,单独设备无需此-s参数

  1. -p 包名

 遍历app的包名,-p+包名

  1. --agent reuseq

 遍历模式,无需更改

  1. --running-minutes 遍历时长(分钟) # 遍历时间:--running-minutes 时间
  2. --throttle 事件频率 遍历事件频率,建议为500-800
  3. 可选参数
    • --bugreport 崩溃时保存bug report log
    • --output-directory /sdcard/xxx log/crash 另存目录

以ApiDemos应用(io.appium.android.apis)为例:

adb -s 8BF4C20825006913 shell CLASSPATH=/sdcard/monkeyq.jar:/sdcard/framework.jar:/sdcard/fastbot-thirdpart.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p io.appium.android.apis --agent reuseq --running-minutes 3 --throttle 500 -v -v --bugreport --output-directory /sdcard/crash-dump.log

结果说明

  1. Crash、ANR 捕获
    • 捕获到Java Crash、ANR、Nativie Crash会以追加方式写入/sdcard/crash-dump.log文件
    • 捕获的Anr 同时也会写入/sdcard/oom-traces.log 文件
  1. Activity覆盖率统计
    • 正常跑完Fastbot会在当前shell中打印totalActivity(总activity列表),ExploredActivity(遍历到的activity列表)以及本次遍历的总覆盖率
    • 总覆盖率计算公式: coverage = testedActivity / totalActivities * 100

注意事项

totalActivities:通过framework接口 PackageManager.getPackageInfo 获取,这包含app中所有的Activity,其中也包含了很多废弃、不可见、不可达等Activity。

【常见问题】启动fastbot提示ava.lang.UnsatisfiedLinkError: dlopen failed: library "/data/local/tmp/arm64-v8a/libfastbot_native.so" not found。

【解决方法】未将libs下的文件push到手机/data/local/tmp目录下。

用adb push libs\arm64-v8a libs\armeabi-v7a libs\x86 libs\x86_64 /data/local/tmp/推送到对应目录下,再次启动fastbot就正常了。

以上来自:Fastbot_Android/handbook-cn.md at main · bytedance/Fastbot_Android · GitHub

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值