准备工具:
- XCode: iOS开发IDE,在此项目中主要用于调试fastbot_ios脚本的调试,崩溃日志导出。
- CocoaPads: 用来管理XCode依赖库的项目。
- Fastbot_iOS: 字节开源的github项目,GitHub - bytedance/Fastbot_iOS: About Fastbot(2.0) is a model-based testing tool for modeling GUI transitions to discover app stability problems
- tidevice: 阿里开源的iOS 自动化工具,https://github.com/alibaba/taobao-iphone-device
- 通过macOS应用商店下载XCode。
- 安装cocoapods。 终端输入:sudo gem install cocoapods -v=1.8.1
- 拉取git上的fast_bot项目代码,并初始化 > git clone GitHub - bytedance/Fastbot_iOS: About Fastbot(2.0) is a model-based testing tool for modeling GUI transitions to discover app stability problems
> cd Fastbot_iOS
> cd Fastbot-iOS && pod install --repo-update
上述中,Fastbot_iOS
是克隆的项目目录,Fastbot-iOS
是项目下面的子目录。注意不要混淆。
下载后的文档如下:
4.通过Xcode 打开项目Fastbo-iOS
项目。
5.
运行测试(XCode)
- 点击顶部
FastbotRunner
弹出菜单,选择Edit Scheme...
选项。
2.在Scheme
中设置参数,参考表格:
字段 | 说明 | 示例 |
---|---|---|
BUNDLEID | 被测试App的 Bundle ID | com.xxxx.xxxx |
duration | 测试时长,单位分钟 | 240 |
throttle | 操作间隔,单位毫秒 | 300 |
launchenv | 启动测试App的环境变量,一般为空,或者以 ':'分割的key=value形式 | isAutoTestUI=1:=AutoTest |
3.信任设备&Runner:
- 信任设备:连接手机到电脑,并在手机中弹出的对话窗中选择
信任
,然后在 XcodeIDE 中选择构建目标为连接的设备或模拟器 - 信任 FastbotRunner 工具: 执行
pingTestNetwork
,待 FastbotRunner 安装成功后, 然后在手机设置-通用-设备管理-开发者App
中信任 FastbotRunner的证书。 - 打开 FastbotRunner 网络权限: 执行
pingTestNetwork
,此时在手机上点击FastbotRunner-Runner
App,弹出黑色界面后,等待 30s 左右,点击 Home 键(或屏幕底部上滑)回到桌面,此时弹出是否打开网络权限的弹窗,选择无线网络或蜂窝网即可。直到 Xcode 运行 log 中出现ping network success
则打开网络成功,如果不成功可尝试重复步骤4
4.执行测试
点击testFastbot
按钮,开始运行Monkey测试。你可以在手机端看到被测试App以及启动,并开始自动执行操作。
5. 查看crash报告
目前暂时依赖Xcode链接设备导出crash日志
xcode-window-device and simulators
跳出以下界面,选出要导出的日志,右键export crash log即可
tidevice实现多设备控制
运行测试(tidevice)
tidevice是阿里开源的iOS自动化测试工具,其实叫自动化工具有点不准确。他本质上有点像android 的 adb
工具,可以理解为PC与iOS之间的通信工具。提供了一些非常有用的功能,查看设备信息、安装卸载应用,当然,最主要的是可以执行XCTest
。
github: GitHub - alibaba/tidevice: tidevice can be used to communicate with iPhone device
1.安装tidevices
> pip install -U tidevice
2.使用tidevice检查连接的设备udid
> tidevice list
List of apple devices attached
xxxx-xxxxxxxxxxx iPhone USB
3.检查是否安装FastbotRunner-Runner
App。
> tidevice ps --json
[
{
"pid": 11549,
"name": "FastbotRunner-Runner",
"bundle_id": "bytedance.FastbotRunner.name.xctrunner",
"display_name": "FastbotRunner-Runner"
},
]
4.通过tidevices
运行测试
>
tidevice -u 00008101-0xxxxxxxxxxE(步骤2查出的设备udid) xctest -B com.uu898.uusteam.xctrunner(运行fastbot-network自动在真机上安装的APP) -e BUNDLEID:com.uu898.uusteam(uu有品BUNDLEID) -e duration:480 -e throttle:300 --debug
5.如何同时执行多个设备?
tidevice的作者给了答案,通过设备的udid
号区分就可以了。当你的PC连接多个手机时。
> tidevice list
List of apple devices attached
xxxx-xxxxxxxxxxx iPhone USB
yyyy-yyyyyyyyyyy iPhone USB
- 启动x设备
> tidevice -u xxxx-xxxxxxxxxxx xctest -B bytedance.FastbotRunner.name.xctrunner -e BUNDLEID:com.apple.Pages -e duration:480 -e throttle:300 --debug
- 启动y设备
> tidevice -u yyyy-yyyyyyyyyyy xctest -B bytedance.FastbotRunner.name.xctrunner -e BUNDLEID:com.apple.Pages -e duration:480 -e throttle:300 --debug
tips:常用tidevice命令
# 重启
$ tidevice reboot
# 截图
$ tidevice screenshot screenshot.jpg
# 安装应用
$ tidevice install example.ipa
# 指定设备安装
$ tidevice --udid $UDID install https://example.org/example.ipa
# 卸载应用
$ tidevice uninstall com.example.demo
# 启动应用
$ tidevice launch com.example.demo
# 停止应用
$ tidevice kill com.example.demo
# 查看已安装应用
$ tidevice applist
tidevice list 查看链接的设备列表
tidevice applist 查看已安装应用
tidevice ps 查看运行中应用
启动应用. tidevice launch com.example.demo
安装应用. tidevice install /Users/xinxi/Downloads/app.ipa(本地ipa地址)
指定设备安装
tidevice --udid 530axxxxxxd605e68a5c8e54b0a4bcd925 /Users/xinxi/Downloads/
卸载应用
tidevice uninstall com.example.demo(应用包名)
查看日志
tidevice也提供了查看日志功能,但日志较为复杂,还需二次处理,暂时可采用前面提到的Xcode日志导出功能,方便简洁
Crash Log Operationstidevice crashreport [-h][——list][——keep][——clear] [output_directory]位置参数:output_directory保存从设备同步的崩溃日志的输出目录(默认:无)可选参数:- h,帮助显示帮助信息并退出——列表列出所有崩溃文件(默认值:False)——保持复制但不删除设备上的崩溃报告(默认值:False)——明确清除崩溃文件(默认值:False)
tidevice --udid 00008101-001Cxxxxxxxx01E crashreport --list