OC-测试:monkey For OC(iOS 猴子测试)

作者: iOS开发周立贺 | 来源:发表于2017-03-22 14:32 被阅读1254次

    从前有种测试叫瞎点测试,随机测试(淘气的猴子)。Android 上有 Monkey。我们以前用 Monkey 来跑 Android 机顶盒,跑出了一堆非常难解决的 kernel 问题,帮助还是很大的。市场上随便挑个 Android 应用,monkey 能跑个 30 分钟应该算是了不起了。苹果没有给 iOS 提供 Monkey。大概 iOS 应用质量比较好吧。

    好在很多无聊的人研究测试技术,于是就有了很多 iOS 上的 monkey 工具。比如基于 UIAutomation 的 monkey —— https://github.com/jonathanpenn/ui-auto-monkey 。通过 copy from stackoverflow 和 copy from github 模式,我们也熟练掌握了 iOS 上的 monkey。不幸的是,iOS 和 Xcode 升级之后,UIAutomation 框架被砍掉了,于是很长时间 iOS 没有 monkey 的说法了。然后无聊的外国人又整了一个基于 XCUITesting 框架的 monkey 工具 —— https://github.com/zalando/SwiftMonkey 。社区里早就有人用过了,但是都藏着掖着。那我是最近才知道,所以拿过来用用。

    首先创建项目:

    21AFAB6D-7F8D-4E35-917C-758E003F3268.png
    然后把 https://github.com/zalando/SwiftMonkey 下载下来。把 SwiftMonkey目录粘贴到你的项目目录下去。
    2.png
    然后把它的. xcodeproj 拖到项目中去。
    3.png
    然后进入项目新建一个Target:
    4.png
    5.png
    因为基于 XCUITesting 框架的 monkey 工具是用swift编写的,这里我们选择swift文件
    6.png
    然后点到新创建的这个target中进行配置
    7.png
    8.png
    10.png
    还需要在 build setting 里勾选上 Swift 的标准库,如图:
    11.png
    然后打开你创建的swift文件 替换如下代码
    121.png
    import XCTest
    
    import SwiftMonkey
    
    class MonkeyForOCUIMonkeyTests: XCTestCase {
    
    override func setUp() {
    
    super.setUp()
    
    XCUIApplication().launch()
    
    }
    
    override func tearDown() {
    
    super.tearDown()
    
    }
    
    func testMonkey() {
    
    let application = XCUIApplication()
    
    _ = application.descendants(matching: .any).element(boundBy: 0).frame
    
    let monkey = Monkey(frame: application.frame)
    
    monkey.addDefaultXCTestPrivateActions()
    
    monkey.addXCTestTapAlertAction(interval: 100, application: application)
    
    monkey.monkeyAround()
    
    }
    
    }
    

    到此,monkey配置集成就完成了,下面就可以开始测试App了
    点击小播放按钮, 程序会自动执行并进行乱点,考验你App的时刻到了!


    121111.png

    最后很多人会问monkey会不会测试出BUG?monkey如果测出BUG怎么显示?
    1.monkey当然会测出BUG,具体日志分析:


    Monkey日志分析.jpg

    可能会遇到问题No such module 'SwiftMonkey'
    解决办法: 新建的target可能signing没有选择,需要进行选择


    error1.png

    然后进入.swift文件,点击一下播放按钮就可以了!


    error2.png

    相关文章

      网友评论

      • OnlyLoveYu:进去就闪,+ 1. 什么提示都没有
      • 情之所至_48e7:安装完之后,点击播放,然后日志报错,请问这是什么情况?
        2017-08-01 11:22:15.638475+0800 XCTRunner[4626:1455905] Running tests...
        2017-08-01 11:22:15.921281+0800 XCTRunner[4626:1455934] Connection peer refused channel request for "dtxproxy:XCTestDriverInterface:XCTestManager_IDEInterface"; channel canceled <DTXChannel: 0x174091210>
        Failed to run tests: The operation couldn’t be completed. (DTXProxyChannel error 1.)
      • dqk1023:一点击运行就闪退,怎么回事
      • ShenYj:一路配置完,点击方法前的点编译提示fail,没有任何黄色警告和红色报错(发现的第三方类库注释中的警告都已经删除,demo目前无任何警告),什么情况
        ShenYj:@知道了好的 8.3(8E162)
        知道了好的:你的Xcode是什么版本的
        iOS开发周立贺:还没遇到过这种情况
      • 我还没想好12138:按照楼主的方法成功集成了,不过这个猴子操作太慢了,以至于我的app怎么测都没出现bug,请问作者怎么调节猴子操作的速度呢。
        iOS开发周立贺:调节猴子的速度这个我还没研究,等研究出来告诉你
      • 某非著名程序员:怎么测试不能过,No such module 'SwiftMonkey'
        iOS开发周立贺:@260d120058f7 打开我让你创建的swift文件, 点击一下播放按钮就好了
        某非著名程序员:@iOS开发周立贺 都是按时文章配置的,你的demo也运行不了,你确定你这个没有别的原因?
        iOS开发周立贺:@260d120058f7 target中配置问题,
      • fanzq_jianshu:这个玩意安全不?
        iOS开发周立贺:@fanzq_jianshu 用来测试用的,有啥不安全的。就是也会点到别的应用。

      本文标题:OC-测试:monkey For OC(iOS 猴子测试)

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