利用SwiftMonkey进行ios客户端的随机测试

达芬奇密码2018-07-25 09:25

一、   前言

客户端测试叫做瞎点测试(哦,不对,应该叫随机测试),在网上看到一个swiftmokey的工具,这个是外国的测试大大们写的一个利用ios底层私有api实现的模拟随机操作的一个工具。

如果是swift实现的app,在植入mokey时候,可以有点击的熊爪效果,但是我所在的项目是一个oc写的app,可以利用SwiftMonkey实现随机测试,却没有熊爪的视觉效果

二、   环境搭建

SwiftMonkeygithub是:https://github.com/zalando/SwiftMonkey

下面介绍的使用方法也是来自于github

首先,要使用SwiftMonkey 需要配置相关的环境,有两种方法:CocoaPods方法和手工方法,我用的是第二种手工导入的方法。

1、     CocoaPods

官方提供了一个例子,在你的podfile里面添加类似如下的代码:

    target "App" do    

    pod "SwiftMonkeyPaws", "~> 1.0"

    end 

    target "Tests" do    

    pod "SwiftMonkey", "~> 1.0"

    end

 

2、     手工方法

1)     github上下载源码

2)     拷贝SwiftMonkey 文件夹到你的项目目录下

3)     SwiftMonkey .xcodeproj拖到项目中去

4)     新建一个UI 测试的target

5)     SwiftMonkey.framework添加为你test的依赖

6)     build setting 里勾 Swift

    环境就配置好了。

三、   使用方法

test文件里,引入import SwiftMonkey

具体代码如下:

func testMonkey() {

let application = XCUIApplication()

 _ = application.descendants(matching: .any).element(boundBy: 0).frame

           let monkey = Monkey(frame: application.frame)

monkey.addDefaultXCTestPrivateActions()

//monkey.addDefaultUIAutomationActions()//另一种测试方式

monkey.addXCTestTapAlertAction(interval: 100, application: application) 

monkey.monkeyAround() //这个会一直执行下去,除非遇到错误

}

     }

    其中,SwiftMonkey的函数可以参照目录下的Documents,如果不是有特别需求,可以使用addDefaultXCTestPrivateActions(),定义了一组默认的操作

       public func addDefaultXCTestPrivateActions() {

           addXCTestTapAction(weight: 25)

           addXCTestLongPressAction(weight: 1)

           addXCTestDragAction(weight: 1)

           addXCTestPinchCloseAction(weight: 1)

           addXCTestPinchOpenAction(weight: 1)

           addXCTestRotateAction(weight: 1)

    }

    addXCTestxxxAction,定义了一组操作,weight参数是任何大于0double数字,最终定义的所有的操作会换算成总数加起来的概率。

    如果需要定义一组特定的操作,可以自己定义addXCTestxxxAction

    monkey.monkeyAround()也可以用monkey.monkeyAround(iterations: 1000)代替,iterations定义了总的操作次数。

    这样就可以进行ios客户端的随机测试了,支持模拟器和真机,不过因为SwiftMonkey使用了私有api,所以植入SwiftMonkey后不能提交appstore进行审核


本文来自网易实践者社区,经作者孟志斌授权发布。