• 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

  • 相关阅读:
    java---图的BFS广度优先遍历---拓扑序列(每日一道算法2022.8.25)
    Leetcode 16.07 最大数值
    迁移 sqoop测试环境
    WordPress v6.0.2 开源强大的博客网站程序
    国际航运管理考试整理
    HTML+CSS画一个卡通中秋月饼
    nginx详细升级步骤
    DevOps(十二)Jenkins实战之Web发布到远程服务器
    sqlserver 事务
    从技术角度分析,为什么ETH PoW分叉不具备正统性?
  • 原文地址:https://blog.csdn.net/aovenus/article/details/125493342