前言
APP稳定性测试常用工具monkey,本文主要介绍fastbot,可以支持Android、iOS
Android
参考:https://github.com/bytedance/Fastbot_Android
./adb -s ABJK02290100 shell
CLASSPATH=/sdcard/monkeyq.jar:/sdcard/framework.jar:/sdcard/fastbot-thirdpart.jar
exec app_process /system/bin com.android.commands.monkey.Monkey -p
com.test.appname --agent reuseq --act-blacklist-file /sdcard/abl.strings
--running-minutes 10 --throttle 600 -v -v --ignore-timeouts --ignore-crashes
--bugreport --output-directory /sdcard/logname
环境准备:(一次性工作)
将 framework.jar fastbot-thirdpart.jar monkeyq.jar push 到手机上某个目录中,建议/sdcard,push libs/* 到 /data/local/tmp/
adb push *.jar /sdcard
adb push libs/* /data/local/tmp/
结果说明
- 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
场景细粒度控制(手动配置黑、白名单配置)
1、Activity白名单配置(只覆盖白名单内的activity)
- 在PC端新建 awl.strings文件(名称固定为:awl.strings)
- 在文件中写入Activity的名称,例如
- 将 awl.strings 文件push到手机端的sdcard目录下, 目录必须为sdcard
- 运行命令时添加以下参数:--act-whitelist-file /sdcard/awl.strings
adb push awl.strings /sdcard
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 --act-whitelist-file /sdcard/awl.strings --running-minutes 遍历时长 --throttle 事件频率 -v -v
2、Activity黑名单配置(黑名单内的activity不覆盖)
- 在PC端新建 abl.strings 文件(名称固定为:abl.strings)
- 在文件中输入Activity的名称,同白名单方法一致
- 将 abl.strings 文件push到手机端的sdcard目录下, 目录必须为sdcard
- 运行命令时添加以下参数:--act-blacklist-file /sdcard/abl.strings
adb push abl.strings /sdcard
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 --act-blacklist-file /sdcard/abl.strings --running-minutes 遍历时长 --throttle 事件频率 -v -v
iOS
参考:https://github.com/bytedance/Fastbot_iOS
tidevice -u 1be9607ac192e6ae1a9e5dce5275a7aa699b4f16 xctest -B
bytedance.FastbotRunner0423.xctrunner -e BUNDLEID:com.包名 -e duration:1 -e throttle:300 --debug
环境准备
1、osx 环境:准备 Mac 机器
- xcode 环境: 下载安装 XcodeIDE
- 安装 cocoapods: 在终端中执行 sudo gem install cocoapods -v=1.8.1 , 并按提示输入设备登录密码
2、初始化项目:
- 在终端 cd 到当前项目目录下, 然后执行 cd Fastbot-iOS && pod install --repo-update
- 打开项目:双击使用 XCode 打开项目目录下 Fastbot-iOS/Fastbot-iOS.xcworkspace
- 设置签名:设置签名为自动签名, 修改Bundle ID为自己的 bundleid, 注意这里的BundleId必须是唯一的。
3、信任设备&Runner:
- 信任设备:连接手机到电脑,并在手机中弹出的对话窗中选择信任,然后在 XcodeIDE 中选择构建目标为连接的设备或模拟器
4、打开 FastbotRunner 网络权限: 执行 pingTestNetwork(此处可参照步骤3-2),此时在手机上点击 FastbotRunner-Runner App,弹出黑色界面后,等待 30s 左右,点击 Home 键(或屏幕底部上滑)回到桌面,此时弹出是否打开网络权限的弹窗,选择无线网络或蜂窝网即可。直到 Xcode 运行 log 中出现 ping network success 则打开网络成功,如果不成功可尝试重复步骤4
执行
结合tidevice一起