美文网首页iOSmonkeyiOS测试知识
使用Fastmonkey进行Monkey测试实践

使用Fastmonkey进行Monkey测试实践

作者: luckydaxian | 来源:发表于2017-11-07 20:23 被阅读1713次

    目录:

    一、背景

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

    相关文章

      网友评论

      • 攻城虎:执行时,一直报这个错,很无解
        zzqdeMacBook-Pro-2:XCTestWD-master zzq$ carthage update --no-use-binaries
        *** Fetching AEXML
        *** Fetching SwiftyJSON
        *** Fetching Fuzi
        *** Fetching swifter
        *** Checking out swifter at "1.3.3"
        *** Checking out Fuzi at "1.0.1"
        *** Checking out SwiftyJSON at "3.1.4"
        *** Checking out AEXML at "4.1.0"
        *** xcodebuild output can be found in /var/folders/37/cn989ch532s99v30xzwrjfbr0000gn/T/carthage-xcodebuild.7Cg281.log
        *** Building scheme "AEXML tvOS" in AEXML.xcodeproj
        *** Building scheme "AEXML OSX" in AEXML.xcodeproj
        *** Building scheme "AEXML iOS" in AEXML.xcodeproj
        *** Building scheme "AEXML watchOS" in AEXML.xcodeproj
        *** Building scheme "Fuzi" in Fuzi.xcworkspace
        Build Failed
        Task failed with exit code 64:
        /usr/bin/xcrun xcodebuild -workspace /Users/zzq/Desktop/Fastmonkey/XCTestWD-master/Carthage/Checkouts/Fuzi/Fuzi.xcworkspace -scheme Fuzi -configuration Release -derivedDataPath /Users/zzq/Library/Caches/org.carthage.CarthageKit/DerivedData/9.4.1_9F2000/Fuzi/1.0.1 -sdk appletvos CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES clean -showBuildSettings -skipUnavailableActions

        This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/37/cn989ch532s99v30xzwrjfbr0000gn/T/carthage-xcodebuild.7Cg281.log
        攻城虎:@luckydaxian
        Signing Identity: "-"

        /usr/bin/codesign --force --sign - --timestamp=none /Users/zzq/Library/Caches/org.carthage.CarthageKit/DerivedData/9.4.1_9F2000/AEXML/4.1.0/Build/Products/Release-watchsimulator/AEXML.framework

        ** BUILD SUCCEEDED **
        攻城虎:@luckydaxian log 中显示 build success ,这是最纠结的
        luckydaxian:@张振强_f5c7 这只是提示有错误,但不知道具体错误是什么,看一下/var/folders/37/cn989ch532s99v30xzwrjfbr0000gn/T/carthage-xcodebuild.7Cg281.log文件错误详情
      • 祖国的栋梁:感谢分享, 最后集成成功, 中间只碰到line 12: ideviceinstaller: command not found
        Command /bin/sh failed with exit code 127这个错误, 根据其他大神的提示下载了ideviceinstaller 库以后, 发现安装错误.
        最终解决方式是:
        1, 在终端执行以下命令:

        ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

        2、在终端再执行以下命令:

        brew install ideviceinstaller

        安装好这个库以后就搞定了.
        luckydaxian:@祖国的栋梁 :+1:
      • 42eea84af0b0:请问这个问题怎么解决
        Test Suite 'All tests' started at 2018-06-13 17:15:28.797
        Test Suite 'XCTestWDUITests.xctest' started at 2018-06-13 17:15:28.797
        Test Suite 'XCTextWDRunner' started at 2018-06-13 17:15:28.797
        Test Case '-[XCTestWDUITests.XCTextWDRunner testRunner]' started.
        t = 0.00s Start Test at 2018-06-13 17:15:28.798
        t = 0.03s Set Up
        t = 0.03s Open com.dada.PFMCProject
        t = 0.05s Launch com.dada.PFMCProject
        t = 0.15s Assertion Failure: XCTestWDMonkey.swift:22: Failed to launch com.dada.PFMCProject: 未能完成该操作。Application "com.dada.PFMCProject" is unknown to FrontBoard.
        t = 0.17s Tear Down
        Test Case '-[XCTestWDUITests.XCTextWDRunner testRunner]' failed (0.171 seconds).
        Test Suite 'XCTextWDRunner' failed at 2018-06-13 17:15:28.969.
        Executed 1 test, with 1 failure (0 unexpected) in 0.171 (0.171) seconds
        Test Suite 'XCTestWDUITests.xctest' failed at 2018-06-13 17:15:28.969.
        Executed 1 test, with 1 failure (0 unexpected) in 0.171 (0.172) seconds
        Test Suite 'All tests' failed at 2018-06-13 17:15:28.969.
        Executed 1 test, with 1 failure (0 unexpected) in 0.171 (0.173) seconds
        LLVM Profile Error: Failed to write file "default.profraw": Operation not permitted
      • 洛洛卡:楼主你好,应用崩溃的话,崩溃日志怎么看啊
      • 慕幕酱:楼主,你好,我在执行test的时候,总会报错,说命令找不到,不知道怎么解决,麻烦您帮忙解答下~
        4a22eb35af9fdb1957f276d9c31525d8468e0163
        /Users/olivia/Library/Developer/Xcode/DerivedData/XCTestWD-equyofhmagirhbgjwqrbrzrwbnrl/Build/Intermediates.noindex/XCTestWD.build/Debug-iphoneos/XCTestWDUITests.build/Script-7FA43F311F0CB57400FB2332.sh: line 12: ideviceinstaller: command not found
        Command /bin/sh failed with exit code 127
        慕幕酱:@luckydaxian 不用更新了 ,我已经在你的基础上整理出一篇文章了,把遇到的所有坑都挖了出来。
        luckydaxian:谢谢分享所遇到坑:+1: 这Xcode变化太快看来文档又得更新了。
        慕幕酱:已经找到了答案,是ideviceinstaller这个库没有安装,需要去这里下载安装下:https://github.com/libimobiledevice/ideviceinstaller
      • 慕幕酱:我是用xcode9.2版本搭建的环境,在clone源码之后,需要checkout到xcode9.2分支。最新的代码(2018.4.25)默认的是9.3
        慕幕酱:还有需要注意:carthage update 需要换成“carthage update --no-use-binaries”
      • 伊甸95:试验成功,超赞的文章。开始在更新第三方库的时候总是报错,按照指点修改Cartfile文件指定版本后一路畅通。感谢,撒花~~~
      • 八极龙皇:这个测试必须要开发者证书吗
      • 0c476cf24b0e:阅了无数关于xcode9跑monkey的帖子,你这一篇是我唯一试验成功的,特意留言表示感谢
        luckydaxian:@小白猪2 👍恭喜试验成功
      • 光晕_9c54:carthage update的时候如果报这个错xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH需要在Xcode中 Preferences > Locations里设置Command Line Tools为自己使用版本的Xcode(自己遇到的坑,写在这里要是有人遇到和我一样的问题可以借鉴一下😄)
        luckydaxian:@光晕_9c54 赞
      • 海波笔记:看来丰哥踩过好多坑!:smile:
        luckydaxian:@光晕_9c54 哦,看来又有新的坑了,谢谢提醒,后面抽空更新一下文档。
        光晕_9c54:@luckydaxian AEXML版本也改了,和SwiftyJSON一样,配置时需要用相同的办法把AEXML版本改成4.1.0
        luckydaxian:@彭海波 是啊,特别是那个SwiftyJSON坑,这个东东一年多没新的安装包,偏偏我进行工程Build时,它给升级级了,找了好久才解决😂

      本文标题:使用Fastmonkey进行Monkey测试实践

      本文链接:https://www.haomeiwen.com/subject/evcjmxtx.html