由于iOS系统的封闭性,加上相对Android用户的数量少,导致对iOS平台系统的自动化进展缓慢。据了解,很多iOS平台的测试人员仍旧处于纯手工测试阶段,但是很多场景下,人工测试效率低且易错。例如:
进行自动化测试之前,我们需要考虑:
目前,我主要负责人工智能部门的洞见APP,已经上线稳定版本,小版本迭代较快,且测试业务都是核心功能,大量的人工回归测试效率太低,推进UI自动化工作是十分必须的。当然,洞见App包含了ios+unity+算法,因此推动UI自动化存在很多难点,我们先定个小目标:搭建UI自动化的框架,先完成登录界面的UI自动化,后续涉及到unity和算法相关内容的自动化,我们将慢慢研究探索。
iOS UI自动化测试框架有不少,前期调研各类框架的优劣,对于后期的实践十分重要。下面针对几种常见的框架特点进行对比分析:
本人比较熟悉java语言,考虑到appium框架跨平台,所以选择appium框架进行UI自动化实践。
Appium 服务端定义了官方协议的扩展,为Appium 用户提供了方便的接口来执行各种设备动作,例如在测试过程中安装/卸载app。
简单来说,client就是我们的测试脚本,仍然秉承selenium web UI的测试思路,测试数据、ui控件描述和测试逻辑三者之间的独立。
注意:
每个版本的Xcode对于的SDK版本不同,可以使用以下命令查看Xcode支持的iOS版本以及模拟器版本,之后在Appium项目配置中可能会涉及到相关的问题。
$cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport #进入改目录查看Xcode对应支持的iOS设备型号
$xcrun simctl list #查看模拟器的版本型号
有两种方式:
命令行安装
$brew install node #get node.js
$npm install -g appium #get appium
$npm install wd #get appium client
$appium & #start appium
安装完成,在命令行终端查看各自版本即可。
官网地址:http://appium.io/downloads.html
下载Appium Desktop Apps
==注意:Appium1.6.x支持Xcode 8,我使用的是Appium1.6.4;Appium,Xcode,SDK,iOS等版本匹配问题特别注意==
/usr/bin/ruby−e"(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$brew install carthage
$brew install webpack
进入WebDriverAgent安装目录,运行bootstrap
$cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
$mkdir -p Resources/WebDriverAgent.bundle
$sh ./Scripts/bootstrap.sh
$brew install jdk
$brew install maven
设置环境变量
$cd ~
$open .bash_profile
修改.bash_profile文件,配置环境变量。
$ npm i -g ios-deploy
$brew install libimobiledevice --HEAD
至此mac端的相关依赖安装结束。
==tips:==
WebDriverAgent是Appium1.6.3以后版本新添加的模块,为了让appium与iPhone(基于xcuitest)设备进行通信而添加的。但是,这个模块在是一个独立的项目,在使用前必须编译、安装。appium是通过手机上WebDriverAgentRunner,来运行测试的,没有这个在真机上没有办法测试(模拟器上需要着个,不过会自动安装)
进入WebDriverAgent安装目录。运行bootstrap(如果前面依赖操作过,这里可以忽略)
$cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
$mkdir -p Resources/WebDriverAgent.bundle
$sh ./Scripts/bootstrap.sh
用Xcode打开WebDriverAgent 双击WebDriverAgent.xcodeproj打开此项目。
建立服务WebDriverAgent ,关闭Xcode,进入WebDriverAgent文件夹
$cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
$xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真机的udid' test看到手机上有WebDriverAgentRunner的app即可。
我这里安装的是appium-desktop-1.0.0.dmg包(对应appium server1.6.4),可视化界面,双击应用程序即可打开。说明:appium1.5.3以后的GUI逐渐不再维护,后来才出了desktop版本,界面较appium1.5.3变化较大,如下图:
client有两种方式:
开启appium后,点击Start new session打开appium inspector,定义platformName、deviceName、app、automationName、platformVersion、udid,其中:
appium demo下载地址: https://github.com/appium/sample-code
这里我们用Java书写测试脚本,测试脚本工程为maven工程,测试工具使用TestNG或者JUnit都行,工程结构如下:
全集执行或者单个用例执行
>$mvn test
>$mvn -Dtest=com.saucelabs.appium.iOSPageObjectTest test
开启iOS UI自动化之旅吧....
此篇文章主要分析了iOS UI自动化的前提条件、框架的选择、环境的搭建以及真机调试。特别强调的是真机调试前,请在模拟器上调试成功,否则你将遇到无数深坑...个人建议使用Mac电脑,没有Mac电脑没有关系,黑苹果引发的各种奇葩问题会要你有种买Mac的冲动~~希望此篇文章能对大家有所帮助。最后感谢项目组的iOS开发同学以及我们的小磊锅、小小、庆灵大哥的耐心指导和帮助,减少了大量查阅资料和学习操作的时间,站在前辈的肩膀上,视野很开阔~~~。
本文来自网易实践者社区,经作者许华授权发布。