解放程序猿(媛)的双手—iOS UI自动化测试
前言
随着移动互联网时代的蓬勃发展,移动终端的自动化测试也在业界日益活跃,总体来看在Android平台上的自动化工具和实践比较多,但是说到iOS平台无论从自动化工具的数量还是质量上就陡降了。究其原因,无外乎是iOS系统的封闭性,加上相对Android用户的数量少,导致对这个平台系统的自动化进展缓慢,据笔者了解到的情况,很多iOS平台的测试人员还处于纯手工测试模式,自动化程度和Android平台无法相论,更别提和PC端相比了。
然而越是困难的事,越是研究的少,就越发有挑战性。有挑战性的事大多又会带来不菲的收益,如果能在iOS上做出大规模可持续运行的自动化测试,那么对iOS的测试演进无疑是一次大的推动。
手机QQ浏览器(iPhone)测试小组的同学在比对和实践了业界已有的iOS自动化工具,总结提炼了对比,如下表所示。

表中没有列的内容是稳定性,实践中看来上述除UITesting之外的工具稳定性都相对一般,会出现自身框架导致的各种闪退,以及性能越来越差的问题。
因此iOS平台上除了Monkey测试采用了自动化方式,以及部分性能测试轻度使用了一些自动化工具,大部分功能测试还是依赖于人的操作。移动APP更多的场景是面向用户,面向界面操作,UI测试就非常直观和重要,因此我们致力于寻找一种稳定性高,且易于掌握的自动化测试工具。
久旱逢甘霖
苹果公司在2015年推出的Xcode7中引入了UI Testing工具,该工具配置相对简单,还支持录制回放功能,运行速度很快,测试代码也可以调试,使用OC作为脚本测试语言兼容性较好,支持UIWebView,支持截图功能,最重要的是稳定性高。

其实选用一个工具,最看重的就是稳定性和可调试。可调试性不必多说,就是刚需。而很多工具没有被很好的应用就是因为稳定性较差,UI Testing是苹果开发的,和被测程序的兼容性好,实践证明,确实能够彻夜稳定运行脚本,未见因工具自身原因导致的闪退。性能方面也影响较小,后期发现一些截图操作会有一点点影响速度,但是整体运行还算良好,没有明显变差。
在大量工具都无法在iOS上施展拳脚时,UI testing姗姗而来,带给我们惊喜和希望。
必经之路
工具是好工具,但是如果想在项目中实际应用起来,还是会遇到许多问题和困难,这里给大家分享下我们的磨合期。
第一个挑战:门槛要低
要使用这个工具,扑面而来的问题就是怎样快速上手,也即学习成本和投入产出比的问题。地球人都知道OC语言并不是一种容易快速上手学习的语言,加上底层是XCTest接口,录制后能看到的实现就是下图这样的,看着很凌乱有没有?

因此我们需要做的就是进行封装。封装包含接口封装和特殊控件的封装两部分。
接口封装有两层,一层主要处理弹窗,异常,超时等待,手势处理等操作,二层是把控件类型和手势合二为一,提供脚本使用。实际脚本编写者就可以直接调用,命名和使用方式都具备高可读性和可用性,另一方面底层的接口修改,不会影响到上层的函数表现形式,这对自动化用例编者来说也降低了门槛,不必关注底层接口的细节变动。

的双手—iOS UI自动化测试&spm=1001.2101.3001.5002&articleId=51790261&d=1&t=3&u=ee150f0fc20c48e48bbbf49e90dee4c6)
2284

被折叠的 条评论
为什么被折叠?



