• 我们内部自研了 cocos creator 自动化工具,已经合入到 qt4w,但是不知道最新的 qt4w 开没开源

  • monkey 可以智能测试吗? at 2019年08月23日

    可以的,智能 monkey

  • 嗯嗯,开源地址我暂时关掉了,我先在内部产品试用一下,等稳定以后我还是会再开源出来的

  • 最后一句话扎心了

  • 嗯嗯,如果可以把我提出的问题解决掉,是一个很好的解决方案,期待开源

  • 嗯嗯,努力学习

  • 第二点不讨论,Crash 捕获、网络数据 (proxy 或 mock)、性能监控、统计覆盖率,交给集成到客户端的 SDK 做些可测性改进。这个可以使用其他的 sdk,因为我也是集成的开源的相关的 sdk,后续有时间会以插件的方式进行改进。

    第一点:获取控件树,举个例子,比如说界面有一个弹窗,遮挡了下面的界面,就不应该获取被遮挡的界面,xctest 获取的控件树是可以将遮挡和被遮挡的界面都获取到的,这个就会导致如果点击被遮挡的控件,其实点击的是它的上层控件,想点击的和被点击的不是同一个控件,导致整个算法记录的跳转关系错乱。

    比如说有一个 tableview,里面有很多的 tableviewcell 是在屏幕外,xctest 是无法获取到屏幕外 cell 的控件,这个就会导致 xctest 是无法点击到屏幕外的 cell,就不会遍历整个 app 的控件。

    第二点:cocos monkey,cocos 是游戏引擎,和 rnn 不一样,是使用 js 写的,如果想要获取 js 的控件,需要注入我们的一个写好的脚本,才可以拿到 cocos 的控件。具体代码可以参考这个脚本:https://github.com/didiaodanding/NewLLDebugTool/blob/master/NewLLDebugTool/js/monkey_driver.js

    第三点:对于控件的操作,比如说对于一个 pickview 的组件,在 xctest 里拿到的是 otherelement,就没有办法对 pickview 做选取的操作,可能只会对其发送一个点击操作,实际上 xctest 里面拿到的大多数都是 otherelement,也只能对其发送一个点击操作。

    基于 xctest 的智能 monkey,我们也有开发,如果可以的话,可以把你的代码给我开个权限吗,我读一读就应该了解了

  • 我倒是觉得开发、测试、产品都一样,都要迈 35 岁的坎。只要能找到迈过这个坎的方法,干啥都一样

  • 你这个问题挺好的,我们也在内部讨论了好多次,现在回答一下:

    基于 xctest 版的智能 monkey,我们也有开发过,但是问题也很明显,简单列举几条,比如说无法做到精确的控件识别,例如被遮挡或者无意义的控件也会被识别出来,无法细腻的控件操作,例如对于 pickview 会被识别成 otherelment,对于 tableviewcell 只能查找出屏幕内的。

    如果基于 KIF 实现智能 monkey,是可以将我现在的这套执行 ui 的逻辑的那一部分提取出来的,但是侵入代码是必不可少的,比如控件树的获取,比如要 hook 代码里面的 accessbility(KIF 是基于 accessbility 操作 ui 的)、还有外围的操作,比如 js error 的捕获、提单、性能的上报等操作 (只实现一个 monkey 是没有啥作用的,monkey 只是一种 ui 执行的手段),比如集成到 sdk 里面的 http/https mock 实现 fuzzy 测试。

    还有一个最重要的原因就是我本身负责的项目是基于 cocos 开发 (一个游戏引擎) 的,我要实现 cocos monkey 在 xctest 是无法实现的,必须要在代码里面实现 monkey,这个我就不仔细展开了。

    写了这么多,啰哩啰嗦的
    总结:
    基于 xctest 实现智能 monkey,我这边出现的问题很多,坑也很多,不建议
    基于 kif 实现智能 monkey,你如果实现了的话,记得回复一下我这个帖子,我也学习一下😁 ,多交流