这几天公司有个紧急 ios 随机测试的任务,上网浏览了一下,发现比较容易搭建的就是 faskmonkey。关于 faskmonkey 的介绍很多,我就不赘述啦,跟大家分享下安装过程中遇到的一点小坑。

1、参考资料

在搭建的过程中,主要参考了这篇文章
https://www.jianshu.com/p/f7edc3695a63

2、准备工作

MAC 系统版本:macOS High Sierra 版本 10.13.6
xcode10.1
Fastmonkey-master 工程代码:https://github.com/zhangzhao4444/Fastmonkey
ios 真机(测试机)
安装 Carthage

3、搭建流程

1)首先从 github 上下载 Faskmonkey 工程,下载后打开工程,配置 code signing 为自己的 Team 账号 (ios 工程配置的基础步骤,不多赘述,借用两图简单说明 😆)

打开工程

修改Team账号
2)打开终端,进入 Fastmonkey-master/XCTestWD-master 目录,执行 carthage update,这一步比较耗时,也是我搭建时掉了个小坑的地方❗刚下载好的工程里,Cartfile 如下图

执行 carthage update 后,会从 github 上 fetch 相应版本的工程并执行 build,但原始 Cartfile 里没有定义 CocoaLumberjack/CocoaLumberjack 和 SwiftyJSON/SwiftyJSON 的版本,下载后的这两个工程版本较高,默认使用 swift5.0,编译失败。后续手工编译导入实在麻烦,所以一定要把 cartfile 改为下图:

修改完后,再执行 carthage update 就一路畅通啦 😎

4、执行 Monkey 测试

搭建完成后,就可以执行测试啦,首先要定义被测 APP 的 bundleid 和测试时长:

选中待测手机后,就可以成功执行随机测试了

当然,也可以脱离 xcode 平台,直接在终端执行 xcodebuild 进行测试:
官方给出的步骤是这样的:

#
#Change the port number to override the default port 
#Specify the device name
#
$ iproxy 8001 8001

$ xcodebuild -project XCTestWD.xcodeproj -scheme XCTestWDUITests -destination 'platform=iOS,name=(your device name)' XCTESTWD_PORT=8001 clean test
#
# Now server is started and listening in 8001
# To start Monkey run:

$curl -X POST -H "Content-Type:application/json" -d "{\"desiredCapabilities\":{\"deviceName\":\"xxxx\",\"platformName\":\"iOS\", \"bundleId\":\"com.PandaTV.Live-iPhone\",\"autoAcceptAlerts\":\"false\"}}"  http://127.0.0.1:8001/wd/hub/monkey

我使用的办法如下:
1)首先修改被测 app 的 bundleid 和测试时长
2)执行

xcodebuild -project XCTestWD.xcodeproj -scheme XCTestWDUITests -destination id=(your device name) XCTESTWD_PORT=8001 test

然后手机就开始点点点啦!并且成功生成了日志,日志存在的位置如下,可以使用 vscode 打开:

5、多台手机同时执行

因为做的项目是兼容性测试,所以要使用到多台手机进行测试,目前使用的简单方法就是给每台手机分配了不同的 XCTestWD 端口号,但需要在每台手机执行 xcodebuild 后加一个等待时间,避免编译冲突。

6、总结

时间问题写的比较简要,欢迎有同样需求的小伙伴一起探讨,提出意见建议!


↙↙↙阅读原文可查看相关链接,并与作者交流