开源测试工具 fastmonkey 自我扫盲贴
2017-12-06 10:38
1731 查看
基于 XCTestWD,swiftmonkey 二次开发,实现无需插桩的 iOS monkey 自动化工具 fastmonkey
优势
无需插桩!
高效率,每秒4-5个action!
轻量极简!
原理
先致敬两个开源工具;
1.swiftmonkey
https://github.com/zalando/SwiftMonkey
因其直接使用了 苹果的私有api 如XCEventGenerator.tapAtTouchLocations 故执行速度极快。同时也用类似android monkey的事件生成机制,自身源源不断的产生如 tap,swipe,pinchIn等事件使其对被测app产生了极大的压力
缺点:需要插桩
2.XCTestWD
https://github.com/macacajs/XCTestWD
类似facebook wda的方式,在xcode中执行xcuitest时启动一个监听server,可通过外部发送命令来创建待测app对应session并启动app,同时也实现了dump tree 和依据xpath,id等来定位某个控件并操作这些控件
3.Fastmonkey
(https://github.com/zhangzhao4444/Fastmonkey)
结合两者优点并改造两者,在XCTestWD基础上实现一个server路由,外部命令时可引导启动app 并执行monkey
首先感谢来自熊猫tv的大佬@zhangzhao_lenovo的无私贡献,开源给我们社区使用,这基本算UIAutomation被遗弃后,第一款无须注入就能使用的iOS monkey测试的工具了,给zhangzhao_lenovo大佬点赞。其次感谢macaca团队的@SamuelZhaoY @xdf 大佬们(ps:肯定还有其他大佬,这里我只把XCTestWD的作者,和我们最熟悉的达峰大佬@出来了,希望其他大佬不要在意),给我们做自动化测试的人员提供那么好用的macaca,以及他们自己写的可以用来代替WDA的XCTestWD,我代替伸手党们对你们表示感谢。
废话不多说了,今天我开始使用Fastmonkey,最开始配置有点小问题,但是很快在zhangzhao_lenovo大佬以及@Only7的帮助下解决了,这里我来写个扫盲贴(安装贴?)
第一步:打开终端,git clone下来(其他方式皆可)
第二步:因为我是直接git下来的,Fastmonkey在我的
先定位到XCTestWD-master下
cartfile安装第三方库
第三步:第三方库下载好,开始配置XCTestWD.xcodeproj。我们用Xcode打开XCTestWD.xcodeproj,然后来配置XCTestWD里面的一些内容
首先是XCTestWD->General->Signing->Team,把账号设置好,具体可以见XCTestWD的配置,保证不报错。
当然XCTestWDUITests->General->Signing->Team也一样
然后在XCTestWD->Build Setting->Header Search Paths和XCTestWD->Build Setting->Objective-C Bridging Header中,把里面的XCTestWD/XCTestWD-Bridging-Header.h删掉。
理由见下面。
第四步:环境配置好了,就是运行了,我这里就直接用真机来运行的。
首先,打开一个终端窗口,执行:
接着,再打开一个终端窗口。执行:
出现上面的页面,说明XCTestWD运行成功了
最后,打开第三个终端窗口,执行:
你就可以看见你手机成功打开PandaTV,然后monkey似的在那乱点了~~~~
问题:
一、error: bridging header '/Users/xxxxx/Fastmonkey/XCTestWD-master/XCTestWD/XCTestWD/XCTestWD-Bridging-Header.h' does not exist
原因:
xcode buildsetting有问题。 xctestwd中没有用到oc,swift混编,header search path,objecktive-c bridging header 配置可去掉再试试。xctestwduitest中用了混编才需要 xctestwduitest-bridging-header.h
解决方案:
在XCTestWD->Build Setting->Header Search Paths和XCTestWD->Build Setting->Objective-C Bridging Header中,把里面的XCTestWD/XCTestWD-Bridging-Header.h删掉
二、Swifter无法找到
原因:未安装第三方库
解决方案:
先定位到XCTestWD-master下
cartfile安装第三方库
三、如果Mac插入多台iPhone设备
iproxy 8001 8001 后需要加serialid 指定哪台iPhone设备做端口映射。 然后curl 中执行对应iPhone设备
四、xcodebuild方式跑起来的截图和crash日志在哪里找呢?
xcode里中断运行时 有个log路径的日志输出 xxx/XCTestWD-xxx/Logs/Test/Attentment
五、crash log也是会生成在 Attachments文件夹里面吗? 该crash log是否可以追踪到app代码问题?
crash 也在Attachments里
就是系统生成的崩溃堆栈文件,研发有对应的符号文件是可以定位的
当然,最后再次感谢zhangzhao_lenovo大佬,该贴只为扫盲,解决一些小白的安装流程及问题,做了伸手党,也要帮大佬解决一点小问题嘛。
大佬原贴在此:https://testerhome.com/topics/9524
有难度的问题可以去该帖近距离触摸zhangzhao_lenovo大佬,没难度的就在这个帖子下面大家一起讨论吧。
照例,在最后@几个大神防止帖子沉下去。。。。
@seveniruby @xdf @zhangzhao_lenovo@Lihuazhang@pliue
(ps:继续抱大腿活动)
2017-10-19更新
最近升级Xcode9和iOS11后,fastmonekey也受到一定影响,存在一些新的问题,大家可以看下这篇文章:https://testerhome.com/topics/10390,希望能帮助你们解决问题。
优势
无需插桩!
高效率,每秒4-5个action!
轻量极简!
原理
先致敬两个开源工具;
1.swiftmonkey
https://github.com/zalando/SwiftMonkey
因其直接使用了 苹果的私有api 如XCEventGenerator.tapAtTouchLocations 故执行速度极快。同时也用类似android monkey的事件生成机制,自身源源不断的产生如 tap,swipe,pinchIn等事件使其对被测app产生了极大的压力
缺点:需要插桩
2.XCTestWD
https://github.com/macacajs/XCTestWD
类似facebook wda的方式,在xcode中执行xcuitest时启动一个监听server,可通过外部发送命令来创建待测app对应session并启动app,同时也实现了dump tree 和依据xpath,id等来定位某个控件并操作这些控件
3.Fastmonkey
(https://github.com/zhangzhao4444/Fastmonkey)
结合两者优点并改造两者,在XCTestWD基础上实现一个server路由,外部命令时可引导启动app 并执行monkey
首先感谢来自熊猫tv的大佬@zhangzhao_lenovo的无私贡献,开源给我们社区使用,这基本算UIAutomation被遗弃后,第一款无须注入就能使用的iOS monkey测试的工具了,给zhangzhao_lenovo大佬点赞。其次感谢macaca团队的@SamuelZhaoY @xdf 大佬们(ps:肯定还有其他大佬,这里我只把XCTestWD的作者,和我们最熟悉的达峰大佬@出来了,希望其他大佬不要在意),给我们做自动化测试的人员提供那么好用的macaca,以及他们自己写的可以用来代替WDA的XCTestWD,我代替伸手党们对你们表示感谢。
废话不多说了,今天我开始使用Fastmonkey,最开始配置有点小问题,但是很快在zhangzhao_lenovo大佬以及@Only7的帮助下解决了,这里我来写个扫盲贴(安装贴?)
第一步:打开终端,git clone下来(其他方式皆可)
$ git clone https://github.com/zhangzhao4444/Fastmonkey.git
第二步:因为我是直接git下来的,Fastmonkey在我的
/Users/xxxxx/Fastmonkey路径下,接下来我们更新依赖包.
先定位到XCTestWD-master下
$ cd /Users/xxxxx/Fastmonkey/XCTestWD-master
cartfile安装第三方库
$ carthage update
第三步:第三方库下载好,开始配置XCTestWD.xcodeproj。我们用Xcode打开XCTestWD.xcodeproj,然后来配置XCTestWD里面的一些内容
首先是XCTestWD->General->Signing->Team,把账号设置好,具体可以见XCTestWD的配置,保证不报错。
当然XCTestWDUITests->General->Signing->Team也一样
然后在XCTestWD->Build Setting->Header Search Paths和XCTestWD->Build Setting->Objective-C Bridging Header中,把里面的XCTestWD/XCTestWD-Bridging-Header.h删掉。
理由见下面。
第四步:环境配置好了,就是运行了,我这里就直接用真机来运行的。
首先,打开一个终端窗口,执行:
$ iproxy 8001 8001
接着,再打开一个终端窗口。执行:
$ cd /Users/xiatian/Fastmonkey/XCTestWD-master/XCTestWD $ xcodebuild -project XCTestWD.xcodeproj \ -scheme XCTestWDUITests \ -destination 'platform=iOS,name=(your device name)' \ XCTESTWD_PORT=8001 \ clean test
出现上面的页面,说明XCTestWD运行成功了
最后,打开第三个终端窗口,执行:
$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
你就可以看见你手机成功打开PandaTV,然后monkey似的在那乱点了~~~~
问题:
一、error: bridging header '/Users/xxxxx/Fastmonkey/XCTestWD-master/XCTestWD/XCTestWD/XCTestWD-Bridging-Header.h' does not exist
原因:
xcode buildsetting有问题。 xctestwd中没有用到oc,swift混编,header search path,objecktive-c bridging header 配置可去掉再试试。xctestwduitest中用了混编才需要 xctestwduitest-bridging-header.h
解决方案:
在XCTestWD->Build Setting->Header Search Paths和XCTestWD->Build Setting->Objective-C Bridging Header中,把里面的XCTestWD/XCTestWD-Bridging-Header.h删掉
二、Swifter无法找到
原因:未安装第三方库
解决方案:
先定位到XCTestWD-master下
$ cd /Users/xxxxx/Fastmonkey/XCTestWD-master
cartfile安装第三方库
$ carthage update
三、如果Mac插入多台iPhone设备
iproxy 8001 8001 后需要加serialid 指定哪台iPhone设备做端口映射。 然后curl 中执行对应iPhone设备
四、xcodebuild方式跑起来的截图和crash日志在哪里找呢?
xcode里中断运行时 有个log路径的日志输出 xxx/XCTestWD-xxx/Logs/Test/Attentment
五、crash log也是会生成在 Attachments文件夹里面吗? 该crash log是否可以追踪到app代码问题?
crash 也在Attachments里
就是系统生成的崩溃堆栈文件,研发有对应的符号文件是可以定位的
当然,最后再次感谢zhangzhao_lenovo大佬,该贴只为扫盲,解决一些小白的安装流程及问题,做了伸手党,也要帮大佬解决一点小问题嘛。
大佬原贴在此:https://testerhome.com/topics/9524
有难度的问题可以去该帖近距离触摸zhangzhao_lenovo大佬,没难度的就在这个帖子下面大家一起讨论吧。
照例,在最后@几个大神防止帖子沉下去。。。。
@seveniruby @xdf @zhangzhao_lenovo@Lihuazhang@pliue
(ps:继续抱大腿活动)
2017-10-19更新
最近升级Xcode9和iOS11后,fastmonekey也受到一定影响,存在一些新的问题,大家可以看下这篇文章:https://testerhome.com/topics/10390,希望能帮助你们解决问题。
相关文章推荐
- Android自动化测试工具——Monkey
- Java 开源软件测试工具
- 基于Java的四大开源测试工具
- 强大的Web开源测试工具—Selenium
- 开源性能测试工具JMeter快速入门(一)
- Android开源项目第四篇——开发及测试工具篇
- 开源压力测试工具Jmeter
- FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具
- worktools-monkey 测试工具的使用
- 一款开源的自动化测试工具curl-loader
- (转载)测试工具monkey
- FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具
- 推荐 14 款开源的 Web 应用测试工具
- 开源性能测试工具 - Apache ab 介绍
- 开源性能测试工具--Jmeter介绍+安装
- 转:Android 测试 Appium、Robotium、monkey等框架或者工具对比
- [curl-loader]faststart新压力测试工具
- 有关自动化测试工具monkey&monkeyrunner的使用经验小结
- 开源压力测试工具Jmeter(初级使用)
- 开源性能测试工具 - Apache ab 介绍 ---http://www.cnblogs.com/jackei/archive/2006/07/18/454144.html