前言:
对于移动端项目来说,App上线后都有一定的crash 比例,若能在项目上线前期拦截一部分崩溃,侧面来看可以帮助降低线上的crash数量。
导致崩溃的因素很多,具有较强的不确定性,目前是可以采用Monkey自动化来测试App的稳定性,理论上希望更早地发现crash问题并帮助修复。
辅助工具图形化-火山引擎:https://www.volcengine.com/docs/6431/82895
参考文档:https://github.com/bytedance/Fastbot_Android/blob/main/handbook-cn.md
https://mp.weixin.qq.com/s/ppE7xV_Fqi3i6m1pagOHzQ
Android
准备工具:
- ADB:安卓设备连接工具
- ADB KeyBoard:github项目
- Fastbot_Android: github项目
环境安装:
-
clone fastbot-android 项目到本地
git clone https://github.com/bytedance/Fastbot_Android
-
链接android设备 push 文件
方法一:
打开终端 执行以下命令,使用adb工具将命令push到设备上
cd Fastbot_Android
ll
-rw-r--r-- 1 tech staff 2.0K Jan 24 18:36 LICENSE
-rw-r--r-- 1 tech staff 4.7K Jan 24 18:36 README.md
drwxr-xr-x 3 tech staff 96B Dec 21 11:57 data
drwxr-xr-x 16 tech staff 512B Dec 21 11:58 doc
-rw-r--r-- 1 tech staff 84K Dec 21 11:58 fastbot-thirdpart.jar
-rwxr-xr-x 1 tech staff 1.1M Dec 21 11:58 framework.jar
-rw-r--r-- 1 tech staff 17K Dec 21 11:58 handbook-cn.md
drwxr-xr-x 6 tech staff 192B Dec 21 11:58 libs
-rw-r--r-- 1 tech staff 76K Dec 21 11:58 monkeyq.jar
drwxr-xr-x 12 tech staff 384B Dec 21 11:58 test
adb push *.jar /sdcard
fastbot-thirdpart.jar: 1 file pushed. 3.9 MB/s (85664 bytes in 0.021s)
framework.jar: 1 file pushed. 34.0 MB/s (1149240 bytes in 0.032s)
monkeyq.jar: 1 file pushed. 15.9 MB/s (77976 bytes in 0.005s)
3 files pushed. 19.1 MB/s (1312880 bytes in 0.065s)
adb push libs/* /data/local/tmp/
libs/arm64-v8a/: 1 file pushed. 34.9 MB/s (1993400 bytes in 0.055s)
libs/armeabi-v7a/: 1 file pushed. 34.3 MB/s (1652716 bytes in 0.046s)
libs/x86/: 1 file pushed. 35.7 MB/s (2111484 bytes in 0.056s)
libs/x86_64/: 1 file pushed. 35.8 MB/s (2169816 bytes in 0.058s)
4 files pushed. 34.5 MB/s (7927416 bytes in 0.219s)
方式二:
直接运行shell文件push到安卓设备
#!/bin/bash
cd ~
cd Fastbot_Android
adb push *.jar /sdcard
adb push libs/* /data/local/tmp/
cd test
adb push max.config /sdcard
adb push max.strings /sdcard
cd ~
cd ADBKeyBoard
adb install ADBKeyboard.apk
运行测试:
- 获取设备ID
adb devices
- 方式一:命令行运行fastbot 执行monkey测试
adb -s 设备ID shell CLASSPATH=/sdcard/monkeyq.jar:/sdcard/framework.jar:/sdcard/fastbot-thirdpart.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p 待测包app包名 --agent reuseq --running-minutes 60 --throttle 500 -v -v -v
参数说明
-s : 指定设备ID(可以通过adb 命令查看当前电脑接入的设备信息)
-p : 指定运行的App 包名(com.xxx)
–agent reuseq : 遍历模式,无需更改
–runing-minutes : 遍历时长
–throttle : 遍历事件频率,建议为 500ms - 800ms
–bugreport : 可选参数,崩溃时保存bug report log
–output-directory /sdcard/xxx : log/carsh 另存目录
多设备运行需要打开多个终端窗口,单设备可用图形化工具-火山引擎,也可直接终端运行
- 方式二:使用火山引擎 执行monkey测试
a. 连接设备,选择待测设备和APP
b. 设置参数 开始执行测试
IOS
准备工具
- XCode: iOS开发IDE
- CocoaPads: 用来管理XCode依赖库的项目
- Fastbot_iOS: github项目
- tidevice: iOS 自动化工具
环境配置
- 克隆 fastbot_ios 项目到本地
git clone https://github.com/bytedance/Fastbot_iOS
- 初始化fastbot- iOS
cd Fastbot-iOS && pod install --repo-update
- 使用Xcode 打开fastbot- iOS配置信息
a. 设置签名和bundle ID
- iOS设备信任证书
- 执行 testPingNetwork 待 FastbotRunner 安装成功后, 然后在设备 设置-通用-设备信任-开发者app中信任证书
- 再次执行 testPingNetwork 等待FastbotRunner- Runner安装成功
https://github.com/bytedance/Fastbot_iOS/blob/main/Doc/handbook-cn.md
- edit scheme选项 设置参数
运行测试
- 使用Xcode 执行monkey测试
a. 点击testfastbot按钮,开始运行Monkey测试
- 通过用 tidevices 执行monkey测试
a. tidevice ps --json 查看运行中 fastbotRunner的Bundle ID
{
"pid": 1484,
"name": "FastbotRunner-Runner",
"bundle_id": "com.bytedance.fastbot.A26XQ2SUJV.xctrunner",
"display_name": "FastbotRunner-Runner"
}
b. 执行tidevice命令 开始monkey测试
tidevice -u udid xctest -B com.bytedance.fastbot.A26XQ2SUJV.xctrunner -e BUNDLEID:待测app包名 -e duration:480 -e throttle:500 --debug
参数说明:
-u:设备的唯一标识,用于区别不同设备 指定在某一台设备
-B:iOS设备上FastbotRunner- Runner app的Bundle ID
-e:待测包的包名,用于指定待测app 多设备开启多个终端,指定不同设备udid
- 使用工具火山引擎 执行monkey测试
a. 连接设备填写对应参数,开始测试——适合单设备
更多操作——待更新
- 配置黑白名单
- 黑名单:屏蔽部分页面
. 配置abl.strings - 白名单:指定某些页面进行测试
. 配置 awl.strings
- 黑名单:屏蔽部分页面
- 指定测试路径——自定义事件序列
a. 配置max.xpath.actions