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

  • monkey 可以智能测试吗? at August 23, 2019

    可以的,智能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,你如果实现了的话,记得回复一下我这个帖子,我也学习一下😁 ,多交流