目录:
一、背景
二、Fastmonkey介绍
三、Fastmonkey操作前准备
四、Fastmonkey工程配置过程
五、执行Monkey测试
六、FAQ
Fastmonkey实践
一、背景:
因众所周知的原因随着Xcode从7.x升级到8.x或9.x,我们无法再使用Instrument的uiautomation脚本对iOS应用进行Monkey测试,所以我们一直期待行业测试与开发大牛产出新的Monkey开源工具,在这期间我们也使用过了一些技术大神开发的基于appium或者基于macaca的开源Monkey测试工具但是都有这样或者那样的问题比如:配置过于复制,上手慢,执行速度达不到要求、有的还需要进行App源码插庄等问题,直到Faskmonkey的出现它集成了众家之长,已经基本能满足我们日常的iOS应用压力测试了。
二、Fastmonkey介绍:
Fastmonkey是zhangzhao大神最近开源的一款iOS应用Monkey测试工具,基于 XCTestWD,swiftmonkey 二次开发,实现无需插桩的 iOS monkey 自动化工具 fastmonkey,优点如下:
1.无需插桩!2.高效率,每秒4-5个action!4.轻量极简!详细介绍请参考TesterHome链接 :
Faskmonkey测试工具介绍
项目开源地址:
Xcode9.x(https://github.com/zhangzhao4444/Fastmonkey )
Xcode8.3.x(https://github.com/zhangzhao4444/Fastmonkey/tree/xcode8.3 )
三、Fastmonkey操作前准备:
注意:本文所述操作步骤都是基于Xcode8.x或者Xcode9.x的版本, 注意针对不的Xcode版本下载不同项目工程的、操作前准备:
1)Xcode8.3.x /Xcode9.x软件;
2)iOS 第三方库管理工具-Carthage;
3)iOS开发者证书文件;
4)Fastmonkey工程代码从github上下载;
详细说明:
1)Xcode8.3/Xcode9.x是用于导入Faskmonkey工程及运行monkey测试;
2)Carthage是iOS用于下载工程所依赖第三方库的;如果没有安装请使用下面命令进行安装:
brew install carthage
3)iOS开发者证书用于工程中的构建及签名,证书可以是团队的开发者证书也可以是免费的个人开发者证书,如何申请个人开发者证书请大家参考其他文档此处不再敖述。
4)工程代码直接从https://github.com/zhangzhao4444/Fastmonkey下载
四、Fastmonkey工程配置过程
配置是经过我们验证过了,不过因为每一个人的手机与Xcode版本问题可能会一些差异,大家也可以参考TesterHome上的fastmonkey 自我扫盲贴
Fastmonkey的扫盲帖子
1.解压下载后的Fastmonkey-xxx.zip的文件,打开终端进入解压后的子目录XCTestWD-master
![](http://img.e-com-net.com/image/info10/b27cf62ce9234373940449263e60ee8e.jpg)
进入解压后的子目录XCTestWD-master
2.执行下列步骤下载工程所依赖的包 :
1)修改目录中的Cartfile文件,将github "SwiftyJSON/SwiftyJSON" 改为github "SwiftyJSON/SwiftyJSON" == 3.1.4 修改github "tadija/AEXML"为github "tadija/AEXML" == 4.1.0如下图:
![](http://img.e-com-net.com/image/info10/3caaf19a40ac4860b2dcc7534e808aa9.jpg)
修改目录中的Cartfile文件
2)下载工程所依赖的包
$ carthage update
PS:如果此步骤出现错误请参考后面的FAQ
![](http://img.e-com-net.com/image/info10/6470a1c914e14728ba0236a2d627fbe5.jpg)
下载工程所依赖的包,可能需要一些时间具体要依赖于您的网络速度,请耐心等待完成
3.配置XCTestWD项目工程:
双击子目录XCTestWD中的XCTestWD.xcodeproj文件打开项目工程
![](http://img.e-com-net.com/image/info10/6d1bdf8fcd894cc98d943a5dcd775654.jpg)
1)修改Product ID,团队开发者证书需要修改,个人免费开发者证书可跳过此步骤
a. 修改XCTestWD所需要的产品ID如com.xxxx.XCTestWD.XCTestWD
![](http://img.e-com-net.com/image/info10/e3d7929cdfe64dc881d80709246a14d1.jpg)
xxx为证书所定义的产品ID前缀一般是公司或者企业的域名
b.修改XCTestWDUITests所需要的产品ID如com.xxx.XCTestWD.XCTestWD
![](http://img.e-com-net.com/image/info10/c9908962cd1f48eeb76c8b6269968f8b.jpg)
xxx为证书所定义的产品ID前缀一般是公司或者企业的域名
2)修改签名账号(个人开发Team与团队证书设置是不一样的):
a1.团队开发者证书如下图:
![](http://img.e-com-net.com/image/info10/bad3014324e84aee915bf9434aedb2e4.jpg)
a1.修改XCTestWD Code Signing为相应的账号
![](http://img.e-com-net.com/image/info10/f1f848409fa94e7e95385e9b64dc1b14.jpg)
a1.修改XCTestWD Code Signing为相应的Team账号
a2.同a1过程修改XCTestWDUITests的Code Signing账号
b.个人开发者证书如下图:
b1.修改XCTestWDUITests的Code Signing账号
![](http://img.e-com-net.com/image/info10/ad16ffe561544a259ad0ade26d47ef7e.jpg)
b2.同b1修改XCTestWD的Code Signing账号
3)添加XCTestWDMonkey.swfit到Server目录
![](http://img.e-com-net.com/image/info10/b73ed5e9f2a1461e8d15f7837eccff9f.jpg)
右键点击server目录,然选择"Add Files to "XCTestWD"
![](http://img.e-com-net.com/image/info10/e7abb972a7e94bd3862ba6d6970d47b2.jpg)
选择【XCTestWDMonkey.swift】文件添加到Server
4)清空XCTestWD的Objective-C Bridging Header选项中的值
![](http://img.e-com-net.com/image/info10/abd7e8e67f0e4458a14fbc1c54f68966.jpg)
清空Objective-C Bridging Header选项中的值
![](http://img.e-com-net.com/image/info10/cfcfc74792a141edbdd29eeb39769e67.jpg)
清空Objective-C Bridging Header选项
4.修改XCTestWD项目工程代码中的配置值:
1)修改运行模式,将XCTestWDRunner.swift文件中的serverMode设置为false如下图
![](http://img.e-com-net.com/image/info10/9e65bf15cec548829ce10ce1a9fa522b.jpg)
修改此项为false后,这样Monkey就可以直接从Xcode中运行,不需要再使用额外的命令了
2)修改XCTestWDMonkey.swift文件中的bundleID为被测App的值的如下图:
![](http://img.e-com-net.com/image/info10/eed9598c033b4da2a78493a96c3f0dd8.jpg)
改为自己App的实际BundleID,如何查找被测App的BundleID请百度一下这里不再敖述
2)修改Monkey.swift文件中的elapsedTime值确定你需要运行多长时间的Monkey,注意单位是秒,如下图:
![](http://img.e-com-net.com/image/info10/e1f8569b608147b087f3415b131575b6.jpg)
修改Monkey执行时长
五、执行Monkey测试
1)选择要执行的手机与Target注意App事先安装到被测试手机上,手机已经插入Mac电脑USB接口
![](http://img.e-com-net.com/image/info10/c08ce6424a364feb88c341434de969ae.jpg)
从下拉列表中选择XCTestWDUITests与手机
2)开始执行Monkey
![](http://img.e-com-net.com/image/info10/7d77b627ba22486ca192abaa94d7331f.jpg)
选择【Product】--【Test】执行Monkey测试
六、FAQ:
1. 如果carthage update的时候如果报这个错xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH需要在Xcode中 Preferences > Locations里设置Command Line Tools为自己使用版本的Xcode --谢谢光晕_9c54的提醒
2.如果是Xcode9.x可能会出现XCTestWDApplication.h file not found错误如下图,请按照下面方法解决:
![](http://img.e-com-net.com/image/info10/c637ec0ef46347c08732572985858254.jpg)
XCTestWDApplication.h file not found错误
添加XCTestWDApplication.h与XCTestWDApplication.m文件到PrivateHeaders目录,如下图
![](http://img.e-com-net.com/image/info10/12a9fad8eeb04766a186a4b291e87e4e.jpg)
选中PrivateHeaders然后点击右键在弹出的界面中选择【Add Files to "XCTestWD"...】项目
![](http://img.e-com-net.com/image/info10/45dade005d044c9aab7be168de4ee55f.jpg)
选择XCTestWDApplication.h与XCTestWDApplication.m然后点击Add
![](http://img.e-com-net.com/image/info10/fbded3ad3dda46e699ebea3ad76e1734.jpg)
XCTestWDApplication.h与XCTestWDApplication.m被添加到了PrivateHeaders中
2.第一次执行时可能会报错,因为需要在手机上信任你的个人证书或者团队证书,第二次执行就不会了。一般位于手机【设置】--【通用】--【描述文件】中
3.每次运行完成后,在Xcode的Debug Ouput框中会输出相应的日志与截图保存位置,每次运行完成后日志会报错,这个错误是由于Fastmonkey的Bug,参加下面Issue链接,主要原因是当执行时长一到时,Monkey测试自行停止,这个停止是强退的,但Xctest没有正常退出造成的,目前还没有找到好的解决方法。