IOS测试-Fastmonkey

目录:

一、背景

二、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

进入解压后的子目录XCTestWD-master

2.执行下列步骤下载工程所依赖的包 :

1)修改目录中的Cartfile文件,将github "SwiftyJSON/SwiftyJSON" 改为github
"SwiftyJSON/SwiftyJSON"  ==  3.1.4   修改github "tadija/AEXML"为github
"tadija/AEXML" == 4.1.0如下图:

修改目录中的Cartfile文件

2)下载工程所依赖的包

$  carthage update

PS:如果此步骤出现错误请参考后面的FAQ

下载工程所依赖的包,可能需要一些时间具体要依赖于您的网络速度,请耐心等待完成

3.配置XCTestWD项目工程:

双击子目录XCTestWD中的XCTestWD.xcodeproj文件打开项目工程

1)修改Product ID,团队开发者证书需要修改,个人免费开发者证书可跳过此步骤

a. 修改XCTestWD所需要的产品ID如com.xxxx.XCTestWD.XCTestWD

xxx为证书所定义的产品ID前缀一般是公司或者企业的域名

b.修改XCTestWDUITests所需要的产品ID如com.xxx.XCTestWD.XCTestWD

xxx为证书所定义的产品ID前缀一般是公司或者企业的域名

2)修改签名账号(个人开发Team与团队证书设置是不一样的):

a1.团队开发者证书如下图:

a1.修改XCTestWD Code Signing为相应的账号

a1.修改XCTestWD Code Signing为相应的Team账号

a2.同a1过程修改XCTestWDUITests的Code Signing账号

b.个人开发者证书如下图:

b1.修改XCTestWDUITests的Code Signing账号

b2.同b1修改XCTestWD的Code Signing账号

3)添加XCTestWDMonkey.swfit到Server目录

右键点击server目录,然选择"Add Files to "XCTestWD"

选择【XCTestWDMonkey.swift】文件添加到Server

4)清空XCTestWD的Objective-C Bridging Header选项中的值

清空Objective-C Bridging Header选项中的值

清空Objective-C Bridging Header选项

4.修改XCTestWD项目工程代码中的配置值:

1)修改运行模式,将XCTestWDRunner.swift文件中的serverMode设置为false如下图

修改此项为false后,这样Monkey就可以直接从Xcode中运行,不需要再使用额外的命令了

2)修改XCTestWDMonkey.swift文件中的bundleID为被测App的值的如下图:

改为自己App的实际BundleID,如何查找被测App的BundleID请百度一下这里不再敖述

2)修改Monkey.swift文件中的elapsedTime值确定你需要运行多长时间的Monkey,注意单位是秒,如下图:

修改Monkey执行时长

五、执行Monkey测试

1)选择要执行的手机与Target注意App事先安装到被测试手机上,手机已经插入Mac电脑USB接口

从下拉列表中选择XCTestWDUITests与手机

2)开始执行Monkey

选择【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错误如下图,请按照下面方法解决:

XCTestWDApplication.h file not found错误

添加XCTestWDApplication.h与XCTestWDApplication.m文件到PrivateHeaders目录,如下图

选中PrivateHeaders然后点击右键在弹出的界面中选择【Add Files to "XCTestWD"...】项目

选择XCTestWDApplication.h与XCTestWDApplication.m然后点击Add

XCTestWDApplication.h与XCTestWDApplication.m被添加到了PrivateHeaders中

2.第一次执行时可能会报错,因为需要在手机上信任你的个人证书或者团队证书,第二次执行就不会了。一般位于手机【设置】--【通用】--【描述文件】中

3.每次运行完成后,在Xcode的Debug
Ouput框中会输出相应的日志与截图保存位置,每次运行完成后日志会报错,这个错误是由于Fastmonkey的Bug,参加下面Issue链接,主要原因是当执行时长一到时,Monkey测试自行停止,这个停止是强退的,但Xctest没有正常退出造成的,目前还没有找到好的解决方法。

https://github.com/zhangzhao4444/Fastmonkey/issues/12

转自:https://www.cnblogs.com/mcboy/p/9074622.html

原文地址:https://www.cnblogs.com/wangjunjiehome/p/10108547.html

时间: 2024-10-20 17:17:02

IOS测试-Fastmonkey的相关文章

使用appium进行ios测试,启动inspector时遇到的问题(一)

最近在公司,让做ios的自动化测试,因为以前做过android的自动化测试,用的也是appium,觉得没什么,结果一开始在搭建环境就遇到了很多的问题,现在将我遇到的问题,以及解决方法,给大家分享出来.(ps:吐槽一下testhome,发了两个帖子一个提问帖一个心得分享帖,全都给拉到违规区了,问题也没有人给看) 进入正题,说一下我的环境: xcode 7.1.1 simulator 9.1 appium 1.4.13 iphone 5s  ios9.1 首先说一下,appium 在ios版本选择这

ios测试基础七:常用软件

ios测试常用软件列表 charles  http://www.charlesproxy.com  官网下载: Mac下常用 的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请 求都通过它来完成,从而实现了网络封包的截取和分析. WINDOWs下也有支持的版本: 常用功能: 抓包,查看请求,入参,返回值 简单模拟 多次重复请求: 模拟不同网速: Xcode 只支持m

iOS测试——置换测试: Mock, Stub 和其他

文章地址:http://ryantang.me/blog/2014/08/21/test-doubles/ iOS测试--置换测试: Mock, Stub 和其他

做QA的日子——iOS测试入门(四)

坦言,做QA的这半年我没有成长,就算有成长也很少,我很难过,和身边的人讲其实并没有谁能真正理解自己的难过,其实还是自己不够努力,对自己不够狠,曾经觉得自己不够幸运,想有一个更好的指路人,其实这样的想法是不对的,哪有那么多的指路人,遇到了是你万幸,没有遇到你自己就做你自己的指路人,用自己的驱动力驱动自己成长,就算慢一些又怎样,当有这样的指路人助你一臂之力的时候,或许你会更加珍惜现在所拥有的. 做QA测试,很多时候是站在后方支持整个团队的,很有可能很多时候会被别人看不起,别人会说,ta不就是一个测试

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

iOS 测试用代码

//测试图片能否显示 -(void)showMyimgview { UIImageView *backgroundImg=[[UIImageView alloc]init]; backgroundImg.frame =CGRectMake(50, 200, 200, 100); backgroundImg.image=[UIImage imageNamed:@"navbar"]; [self.view addSubview:backgroundImg]; [backgroundImg

如何利用Pre.im分发iOS测试包

大众创新万众创业,在移动互联网的风口,移动APP开发与测试发展方兴未艾,受到了越来越多的重视.相较 iOS,Android 的开发环境更加开放.Android 开发者要测试应用时,只需发个 APK 安装包即可,但对于 iOS 来说,想要参与 App 测试却是件很复杂的事情. Apple在收购TestFlight后将其整合进iTunes Connect中,虽然能帮助iOS开发者邀请用户协助对 App 进行测试,但过程依旧复杂. 在这样的背景下,国内权威测试平台Testin推出了免费的APP内测分发

GHUnit使用指南(翻译自GitHub)-IOS测试框架

Installing in iOS (Xcode 5) 1:首先你要有一个项目.LOL 2:添加一个新的测试target.(关于Target是什么,请参考我的另外一篇文章)最新版Xcode 将Add Target放在顶部栏 3:选择新的target的类型 4:将GHUnit框架放到新建的target中 5:打开Objective-C categories,因为我们新建的Target默认是没有打开的,如果是原本就有的Target的话,默认是打开的.使用-ObjC打开 6:删除原有的文件 7:将ma

【读书笔记】软件测试与iOS测试

一,软件测试的类型. 1.软件测试按照测试类型,可以划分为:单元测试,集成测试和系统测试. 2.单元测试是指对软件系统中最小可测试单元进行的检查和验证. 3.集成测试,在iOS软件开发中,集成测试主要被简单地分为API接口和iOS功能集成测试.API接口测试是指,若一个iOS程序以网络请求的方式使用了后台服务的功能,测试时需要验证网络的请求以及响应是否符合预期.iOS功能集成测试其实就是功能测试.在一个iOS程序中,有很多功能是在UI界面上体现的,所以在功能测试中测试的重点将会在UI测试上. 4