iOS 测试 求问支持 Xcode11 的 IOS monkey (踩了很多坑才来问)

iOStester · December 13, 2019 · Last by zzzyw-work replied at May 27, 2020 · 3709 hits

想像Android一样借助monkey乱点,发现手动测不出来的bug
我的需求:项目编译环境是Xcode11.x,支持新的iOS系统(如iOS13)
在网上找了一周iOS monkey的资料,大概分三种:
1.fastmonkey 根据论坛里的帖子去一步步实验,发现源代码是swift3.0写的,而且只支持Xcode9.x
看了很多教程才发现不满足我的需求,浪费我两天时间
论坛帖子 https://testerhome.com/topics/9810

2.crashmonkey
同样支持Xcode7.x,没意义,弃用
论坛帖子 https://testerhome.com/topics/2718

3.swift monkey
monkey的程序运行时没有报错,但是手机处于白屏没有任何点击操作,网上没有人遇到我这样的情况

所以来问大家,目前在用什么工具来做monkey测试,如果是swift monkey是否遇到过我这种情况吗,小弟多谢

共收到 20 条回复 时间 点赞

可以二次开发swiftmonkey,把不支持10.1以上的XCEventGenerator换成xctest的API
这是我之前二次开发的记录https://www.cnblogs.com/dreamyu/p/11280030.html
这是我之前改造的https://github.com/lcyfly/sjk_swiftmonkey
只是修改了下tap点击事件,如果是其它手势操作可以根据xctest的API自己修改下,修改后点击频率会降低到大约每秒3-4个action,但是已经超过了用户正常操作频率了

可以用下载Xcode10.1,执行Carthage update时记得修改将xcode10.1改成默认版本,update编译时候记得修改一下对应依赖工程的swift版本,否则可能会update失败,update成功后将iOS13版本的diskimage拷贝到Xcode10.1,然后执行test了。

lcw 回复

你好,下载了你的代码,并且按照你的教程操作,bundleIdentifier都修改了
运行起来sjk-monkey程序(没有任何报错),整个屏幕黑红两块如图,并且待测的app没有启动
请问怎么解决

iOStester 回复

额,待测试app完全没启动,还是启动了又拉回到这个demo app,完全没启动的话可能还是bundleID的问题吧,具体没看到代码也不清楚。。。还有一种方法是你可以找到10.1的xctest framework替换到11的Xcode下 也可以使用原来的那个monkey

lcw 回复

是待测app完全没有启动,我检查过bundleID没啥问题
我们app的编译环境只支持Xcode11以上,换Xcode10.1是下策了
代码我放在云盘了https://yunpan.360.cn/surl_yr3hbHGfSjE (提取码:4b58),有空的时候帮忙看下
另外能加下qq联系下吗,我qq:1102010028

fastmonkey吧,虽然环境问题搭建起来比较麻烦,但还是可以实现的

黑山老妖 回复

xcode版本多少,是否遇到swift语言过低的问题

iOStester 回复

xcode10.1 2楼说的问题,遇到了

lcw 回复

非常感谢亲的分享,已经可以用起来。谢谢!

iOStester 回复

需要你修改sjk-monkeyUITests目录下的sjk-monkeyuiTests里面
let application = XCUIApplication.init(bundleIdentifier: "com.XXX.xxx"),亲测修改可以用。

阿溱 回复

哥们,你用的Xcode什么版本呢

阿溱 回复

下载代码后,改成自己的证书,
除了sjk-monkeyuiTests里面
let application = XCUIApplication.init(bundleIdentifier: "com.XXX.xxx"),还需要修改别的吗

阿溱 回复

我也运行起来了,但是貌似没看到设置运行时长,请问你知道在哪设置运行时长吗?

薇大帅 回复

运行时长就是fastmonkey里的运行次数
monkey.monkeyAround(iterations: 1000)

我把fastmonkey导入xcode11,连product->test都是暗的,是不兼容吗

Krautzun 回复

Scheme选择XCTestWDUITests,不能选择XCTestWD

我最近也在调查Monkey随机测试,现状:
1)使用FastMonkey用Xcode10.1把测试工程跑起来,被测试的应用用Xcode11.3.1跑起来。能在真机上看到自动化测试效果,在Xcode中也能看到对测试应用的截图。
2)用SwiftMonkey能支持最新的Xcode,能在Xcode看到截图和闪退日志。但是需要植入测试代码,因为公司开发的应用太多,需要一个一个植入,这一点比较费劲儿,并且因为私有API的原因也不能提交商店。

以上两种方法都需要用打开Xcode来编译,看测试结果。不知道有没有可以不用Xcode来编译分析,直接用脚本或命令测试,还支持多机并发,还能出测试报告的方法。Android有Jenkins+Monkey,IOS有吗?希望有测试大神指点一二~

@lcw 大神,我按照你的方式,目前遇到一个问题,从被测应用里面跳转到了appstore或者其他应用,它就直接失败了,没有切换回来,这是什么原因??
拉起代码如下:

func actInForeground(_ action: @escaping ActionClosure) -> ActionClosure {
return {
guard #available(iOS 9.0, *) else {
action()
return
}
let closure: ActionClosure = {

// 判断是否在前台,不在前台则拉起
if self.currentApp.state != .runningForeground {
self.currentApp.activate()

}

报错信息如下:

    t =    46.13s             Snapshot accessibility hierarchy for app with pid 3592
t = 46.67s Wait for com.123.mobilepamo to idle
2020-04-02 15:12:55.414837+0800 PAMonkeyUITests-Runner[3894:644425] ************************ 长按 *******************************
2020-04-02 15:12:55.414920+0800 PAMonkeyUITests-Runner[3894:644425] ************************ 处理action *******************************
t = 47.00s Tap Application 'com.123.mobilepamo'[0.00, 0.00] -> (107.7, 46.9)
t = 47.01s Wait for com.123.mobilepamo to idle
t = 47.04s Find the Application 'com.123.mobilepamo'
t = 47.04s Snapshot accessibility hierarchy for app with pid 3592
t = 48.05s Find the Application 'com.123.mobilepamo' (retry 1)
t = 48.05s Snapshot accessibility hierarchy for app with pid 3592
t = 49.06s Find the Application 'com.123.mobilepamo' (retry 2)
t = 49.06s Snapshot accessibility hierarchy for app with pid 3592
t = 49.21s Assertion Failure: MonkeyXCTest.swift:73: Error getting main window kAXErrorServerNotFound
t = 49.23s Tear Down
2020-04-02 15:12:57.643319+0800 PAMonkeyUITests-Runner[3894:644425] ************************ tearDown *******************************

还有一种报错,也拉不起来

Assertion Failure: MonkeyXCTest.swift:166: Failed: Application for Application 'com.123.mobilepamo' is not foreground and does not allow background
iOStester 回复

我也遇到了,app启动后是红黑两块,请问下你最后是如何解决的?

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up