想像 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 是否遇到过我这种情况吗,小弟多谢
可以二次开发 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 了。
你好,下载了你的代码,并且按照你的教程操作,bundleIdentifier 都修改了
运行起来 sjk-monkey 程序(没有任何报错),整个屏幕黑红两块如图,并且待测的 app 没有启动
请问怎么解决
额,待测试 app 完全没启动,还是启动了又拉回到这个 demo app,完全没启动的话可能还是 bundleID 的问题吧,具体没看到代码也不清楚。。。还有一种方法是你可以找到 10.1 的 xctest framework 替换到 11 的 Xcode 下 也可以使用原来的那个 monkey
是待测 app 完全没有启动,我检查过 bundleID 没啥问题
我们 app 的编译环境只支持 Xcode11 以上,换 Xcode10.1 是下策了
代码我放在云盘了https://yunpan.360.cn/surl_yr3hbHGfSjE(提取码:4b58),有空的时候帮忙看下
另外能加下 qq 联系下吗,我 qq:1102010028
fastmonkey 吧,虽然环境问题搭建起来比较麻烦,但还是可以实现的
需要你修改 sjk-monkeyUITests 目录下的 sjk-monkeyuiTests 里面
let application = XCUIApplication.init(bundleIdentifier: "com.XXX.xxx"),亲测修改可以用。
下载代码后,改成自己的证书,
除了 sjk-monkeyuiTests 里面
let application = XCUIApplication.init(bundleIdentifier: "com.XXX.xxx"),还需要修改别的吗
我把 fastmonkey 导入 xcode11,连 product->test 都是暗的,是不兼容吗
我最近也在调查 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
使用 xtest api(XCUICoordinate tap 方式)点击,发现有些一次点击需要 1-6 秒,看日志是在等待 app idel,请求你遇到过,这个是如何解决的?
大佬你好,我现在已经成功跑起来了您的工程,可以正常运行了,但是怎么查看结果啊,您可以加一下我 qq 吗?有很多问题想问您一下,541347048
问一下 ,XCode 12.0 支持吗?
请问这种是需要 app 的源码进行编译,才能跑 monkey,还是像 appium 一样不需要 app 源码就可以执行 monkey 测试?另外方便加下联系方式请教下吗,我的 qq: 1415356286
回复所有人,https://www.cnblogs.com/dreamyu/p/11280030.html,
这个帖子比较有参考价值,可以解决楼上调不起所测 app 的问题。