前言
作为测试行业已经混了很长一段时间的混子,前阵子接到Lead的要求,让我们没事搞搞自动化。。。只有我有Mac机器(单位配的台式机装Windows,灰常不好用,这Mac是自带来上班的。。。)然后就把IOS的自动化扔给我了。。。。作为一个零Siwft + Object-C基础的菜鸟,只能硬着头皮上。
因为是零基础,不能保证所介绍的100%正确,因此需要读者自备甄别功能,若能帮助到想入门IOS自动化的同行,不胜荣幸!
为什么选UI Testing作为测试框架?
其实一开始是打算用Appium去做的,毕竟之前做过基于Java/C#的Selenium Web UI/API自动化,应该都是差不多的(关键是能用JAVA写啊,能省不少事!)。也确实做过点调研,无奈发现Appuim不太给力,如图,Appium的官网上,能提供的最新版本是1.5.3(图1),最后的更新时间是2016-06-08,而现在已经是2017-02 了,已经整整半年没更新了,在使用Appium进行调研的时候发现一个致命伤,几个月前Xcode进行了更新到8了,而Appium没有更新跟上,导致当我运行demo的时候,出现error(图2)也不知道啥时候能修复这个问题。因此放弃Appium。
图1-Appium最新版本1.5.3
图2-当前的Appium显示不支持新版本得Xcode
之前看了一个鹅厂的帖子,介绍了他们的测试框架,也是用的UI Testing,说的很牛掰,而且UI Testing 是XCode自带(写过自动化会明白,自动化的用例会failed,很多时候都是环境引起的,包括测试框架本身都是不稳定因素,用例本身不一定是主要因素),因此看好UI Testing,想着稳定第一!然后。。。。义无反顾跳进了这个坑,现在被坑的体无完肤,衣带渐宽终不悔啊~
入坑一段时间后发现的UI Testing的一些优点和缺点:
优点:
1. 原生自带,稳定性杠杠的
2.入门很简单,点一下就可以录制,代码自动写(虽然这功能不怎么用)。
3. 很容易定位元素。
缺点:
1. 需要源代码编译,UI Testing需要在IOS工程上新建一个target,但事实上不是所有公司都这么open允许测试人员往上面提交代码的,绝大部分公司还是死脑筋的认为测试人员只是点点鼠标那种没有技术含量(我一直认为黑盒测试要做好是很有技术含量的,探索性测试必须脑子要好使),或者就算自动化也就像Selenium只要安装包就能跑起来 ,一句话就是不要动开发的代码:-( 。。。因此,我也就只能偷偷问开发要了份copy(论跟开发搞好关系的重要性)。
2. 语言限制,学习门槛高。XCode的工程,用的是Swift,如果没相关经验,就得额外去学习这门语言,增加学习成本。Siwft还经历了2个大版本,还有兼容性的问题。如果是全新工程,建议用最新的。在使用过程中还会遇到跟Object-C交互的场景(还需要去源代码写东西,这个之后讲),学习这2种语言也需要成本。。。
3. 可以找到的资料比较少。入门的demo很好找,但是想深入了解,并不像JAVA那样好找,真的不好找,更要命的时候当你找到别人的例子的时候,发现敲进去XCode已经不认了,新版的Swift已经将函数名,使用特性什么的更新了。。囧,查Apple Developer ? 测试方面的介绍非常少,不好查。
4. 测试框架本身就有很让人吐血的先天不足。没有主动截图功能!没有主动截图功能!没有主动截图功能!日志功能极其渣!日志功能极其渣!日志功能极其渣!
好了,如果这些缺点都能忍受的话(或者你实在找不到好用的IOS 自动化测试框架)。下一章就开工开搞。